Autor Tema: Ejemplitos de Mikrobasic y Proteus  (Leído 140774 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado danipalma

  • PIC10
  • *
  • Mensajes: 3
AYUDA CON LA PWM EN MIKROBASIC
« Respuesta #45 en: 01 de Junio de 2009, 23:19:03 »
Buenas amigos les escribo para preguntarles como podría generar una señal pwm usando el mikrobasic pero de frecuencia variable, por que viendo la ayuda me dice que con la función PWM_INIT(dim freq as longint)  donde freq es la frecuencia de salida pero esta definida como un longint que es una constante.

Por favor si alguien sabe que comando o como hago que mi frecuencia sea variable por favor ayúdenme se los agradecería. De antemano gracias.
« Última modificación: 02 de Junio de 2009, 05:45:48 por dogflu66 »

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Ejemplitos de Mikrobasic y Proteus
« Respuesta #46 en: 06 de Julio de 2009, 05:30:16 »
Cerradura electronica.

Esquema



y aqui el codigo
Código: [Seleccionar]
program clave

dim kp,i,j,a as byte    'kp = valor de la tecla presionada
                        'i  = contador de teclas presionadas
                        'j  = contador de asteriscos mostrados
                        'a  = contador de veces acertadas
                        
sub procedure iniciar_Lcd()              'Configuar PORTB como data port
   Lcd_Config(PORTB,7,6,5,4,PORTA,0,1,2)     'y PORTA como control port del LCD
   Lcd_Cmd(LCD_CURSOR_OFF)                   'Apaga Curcor del LCD
end sub

sub procedure Leer_teclado()
   Lcd_Cmd(LCD_SECOND_ROW)                   'Envia el cursor a Lin 2 Col 1
   for j=1 to i
      Lcd_Chr_CP("*")                        'Imprime * al presionar Tecla
   next j
   kp=254
   while kp=254                      'Espera a que se presione una tecla y
      kp=Keypad_Released-2           'guarda el dato al soltarla
   wend
end sub

main:
   Keypad_Init(PORTB)'Inicializa PORTB como controlador del Teclado
   while 1
      iniciar_Lcd
      Lcd_Out_CP("Teclee Clave:")                 'Imprime Clave en 1ra Linea
      if i=4 then                     'Al presionar 4 teclas correctas
         Lcd_Cmd(LCD_SECOND_ROW)      'Evia el cursor en Lin 2 Col 1
         if a=4 then                  'si se aciertan 4 veces
            if PORTA.3=1 then         'si esta activa la opcion renovar clave
               for i=0 to 3
                  iniciar_Lcd                 'se imprimira en linea1
                  Lcd_Out_CP("Nueva Clave:")  'nueva clave:
                  Leer_teclado                'y en linea2 los asteriscos
                  EEprom_write(i,kp)          'se reescribira la clave en EEPROM
               next i
               iniciar_Lcd
               Lcd_Out_CP("Clave Guardada.")  'Luego se Imprimira Clave Guardad.
            else                       'si no se activa la opcion renovar clave
               Lcd_Out_CP("Exito!!")       'se imprimira Exito
            end if
         else                         'de lo contrario se imprimira
            Lcd_Out_CP("Error!!")       'Error
         end if
         delay_ms(1000)           'este retardo es para visualizar lo anterior
         i=0                      'luego se inicializan las variables contadoras
         a=0
         continue
      end if
      Leer_teclado
      if EEprom_read(i)=kp then  'si el dato leido en la EEPROM es igual al tecleado
         a=a+1                   'se incrementara a
      end if
      i=i+1             'incrementa i
      wend
end.

A continuacion dejo los archivos
« Última modificación: 14 de Septiembre de 2009, 01:59:23 por bigluis »
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Ejemplitos de Mikrobasic y Proteus
« Respuesta #47 en: 06 de Julio de 2009, 05:33:48 »
A continuacion dejo los archivos del circuito y programa anterior para descargarlos y los puedan comparar con el nuevo que se muestra arriba.
« Última modificación: 14 de Septiembre de 2009, 02:22:04 por bigluis »
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado Mushito

  • PIC10
  • *
  • Mensajes: 31
Re: AYUDA CON CONVERSION ANALOGO DIGITAL Y LUEGO TRANSMISION DE DATOS POR LA UART
« Respuesta #48 en: 06 de Agosto de 2009, 13:08:57 »
Hola amigo primeramente gracias por estos ejemplitos me han servido de gran ayuda para mi incorporación al mundo de mikrobasic y me han ayudado a realizar mi proyecto de grado, pero me gustaría pedirte un favor necesito digitalizar una señal analógica y luego el valor de ella enviarla a través de un puerto RS232 usando la librería uart, revise tus ejemplos individuales y si pude realizarlos pero no se como hacer para que mi señal tomada del canal analógico luego la pueda enviar por la uart

Una de mis dudas es que la variable de la señal digitalizada es del tipo Word mientras que la que se envía por el uart es tipo byte, si tienen un ejemplo sencillo de esto les estaría muy agradecido, yo uso el PIC 18f4520, pero me sirve un ejemplo con cualquiera solo quiero ver la estructura del programa y bueno no estaría de mas el diagrama realizado en proteus...

Muchas gracias y sigan así, que realmente nos brindan gran ayuda a los amantes de la electrónica
:-/
Yo tambien busco lo mismo, pretendo usar el pic16F876.
Aprobechando el hilo, quiero preguntarles que diferencia hay entre usar el uart y el usart, ya se que uno es asincrono y el otro es sincrono, pero como se aprecia eso en el funcionamiento.

Muchas Gracias

Desconectado beto0350

  • PIC12
  • **
  • Mensajes: 58
Re: Ejemplitos de Mikrobasic y Proteus
« Respuesta #49 en: 10 de Agosto de 2009, 12:38:18 »
Hola:
       disculpen la molestia pero no puedo bajar los videos del tutorial, ya que en el rebujito a pesar de buscarlos no los encuentro.
 Alguien prodria explicarme como buscarlos o subirlos a otro server.

Gracias


Desconectado DarkMikro

  • PIC10
  • *
  • Mensajes: 2
Re: Ejemplitos de Mikrobasic y Proteus
« Respuesta #50 en: 10 de Septiembre de 2009, 23:39:41 »
Buenas amigos... un saludo desde venezuela, soy nuevo en estos de los pic antes hice algunos proyecto en los picaxe pero me di cuenta que eran muy limitado y casi todo esta definido tienes muy pocas opciones, mi pregunta es: como hacer que la cerradura electronica como la que el amigo "bigluis" posteo los valores de la clave sean introducida por el mismo teclado, y este valor sea almacenado sin tener que sacar el pic para introcudirle la clave de nuevo, ya que tengo que hacer una cerradura pero con un 16f877 integrado con un ISD2560 para decir cuando la clave esta erronea. como ya les comente soy muy Noob en este tema

Gracias Amigos....


 8) 8) 8) 8)

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Ejemplitos de Mikrobasic y Proteus
« Respuesta #51 en: 10 de Septiembre de 2009, 23:47:03 »
Hola.

Habría que escribir el valor de la nueva clave en la EEPROM del micro.
El papel lo aguanta todo

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Ejemplitos de Mikrobasic y Proteus
« Respuesta #52 en: 14 de Septiembre de 2009, 02:11:51 »
Hola.

Habría que escribir el valor de la nueva clave en la EEPROM del micro.

Gracias por la idea MLO, ya lo estaba pensando pero no habia tenido tiempo de resolver el problema. El ejemplo de arriba ya es la modificacion y la siguiente respuesta es la primera forma de hacerlo para los que deseen hacer comparaciones.

Por cierto si no me equivoco lo que DarkMikro quiere hacer es una cerradura electronica activada por voz. supongo que tambien seria util que utilizaras las entradas analogicas del pic y un preamplificador con offset de 2.5V, en vez del ISD2560.

Para resolver el problema de Jaissonc se bebe correr MikroBasic como administrador(en Vista) y el nombre del archivo creado debe ser igual al nombre de la carpeta donde se guarda el proyecto. Yo tambien tuve ese mismo problema y me tomo mas de un dia resolverlo.



« Última modificación: 04 de Octubre de 2009, 20:02:09 por bigluis »
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado DarkMikro

  • PIC10
  • *
  • Mensajes: 2
Re: Ejemplitos de Mikrobasic y Proteus
« Respuesta #53 en: 17 de Septiembre de 2009, 00:32:12 »
Buena... No bigluis te digo mejor mi idea,  ISD2560 es para que diga si la clave esta errada es un integrado q grava 60 segundo de sonido en 6 bloques de memoria mas o menos. pero la gran interogante es lo del cambio de clave como una caja fuerte electronica que tienes que hacer X cosa para cambiar la clave...

 8) 8) 8) 8)

Desconectado diegogprs

  • PIC10
  • *
  • Mensajes: 21
Re: Ejemplitos de Mikrobasic y Proteus
« Respuesta #54 en: 17 de Septiembre de 2009, 04:05:26 »
Hola estube mirando lo ejemplos  que postearlos y no lo pude acerlo funcionar por los comandos no son compatible con la version que vaje  a ver si alguien me puede dar una mano. La version que tengo es mikrobasic pro 1.45 adjunto una imagen del problema que sale al compilarlo. Saludos

Desconectado diegogprs

  • PIC10
  • *
  • Mensajes: 21
Re: Ejemplitos de Mikrobasic y Proteus
« Respuesta #55 en: 17 de Septiembre de 2009, 04:13:36 »
la imagen

Desconectado diegogprs

  • PIC10
  • *
  • Mensajes: 21
Re: Ejemplitos de Mikrobasic y Proteus
« Respuesta #56 en: 17 de Septiembre de 2009, 13:25:19 »
Hola e notado que las librerias de lcd han cambiado mire el manual aca ba un ejemplo, me han surgidos preguntas  como iria  si el display es mas de 2 lineas , si la comunicacion quiero hacelas a 8 bit , etc


program Lcd
' Lcd module connections
dim LCD_RS as sbit at RB4_bit
    LCD_EN as sbit at RB5_bit
    LCD_D4 as sbit at RB0_bit
    LCD_D5 as sbit at RB1_bit
    LCD_D6 as sbit at RB2_bit
    LCD_D7 as sbit at RB3_bit

    LCD_RS_Direction as sbit at TRISB4_bit
    LCD_EN_Direction as sbit at TRISB5_bit
    LCD_D4_Direction as sbit at TRISB0_bit
    LCD_D5_Direction as sbit at TRISB1_bit
    LCD_D6_Direction as sbit at TRISB2_bit
    LCD_D7_Direction as sbit at TRISB3_bit
' End Lcd module connections

dim txt1 as char[16]
    txt2 as char[9]
    txt3 as char[8]
    txt4 as char[7]
    i    as byte                    ' Loop variable

sub procedure Move_Delay()          ' Function used for text moving
  Delay_ms(500)                     ' You can change the moving speed here
end sub
 
main:
  TRISB = 0
  PORTB = 0xFF
  TRISB = 0xFF
  ANSEL  = 0                        ' Configure AN pins as digital I/O
  ANSELH = 0

  txt1 = "mikroElektronika"
  txt2 = "EasyPIC5"
  txt3 = "Lcd4bit"
  txt4 = "example"
 
  Lcd_Init()                        ' Initialize Lcd
  Lcd_Cmd(_LCD_CLEAR)               ' Clear display
  Lcd_Cmd(_LCD_CURSOR_OFF)          ' Cursor off
  Lcd_Out(1,6,txt3)                 ' Write text in first row
  Lcd_Out(2,6,txt4)                 ' Write text in second row
  Delay_ms(2000)
  Lcd_Cmd(_LCD_CLEAR)               ' Clear display

  Lcd_Out(1,1,txt1)                 ' Write text in first row
  Lcd_Out(2,5,txt2)                 ' Write text in second row
  Delay_ms(500)

  ' Moving text
  for i=0 to 3                      ' Move text to the right 4 times
      Lcd_Cmd(_LCD_SHIFT_RIGHT)
      Move_Delay()
  next i

  while TRUE                        ' Endless loop
    for i=0 to 7                    ' Move text to the left 8 times
      Lcd_Cmd(_LCD_SHIFT_LEFT)
      Move_Delay()
    next i

    for i=0 to 7                    ' Move text to the right 8 times
      Lcd_Cmd(_LCD_SHIFT_RIGHT)
      Move_Delay()
    next i
  wend
end.

Desconectado diegogprs

  • PIC10
  • *
  • Mensajes: 21
Re: Ejemplitos de Mikrobasic y Proteus
« Respuesta #57 en: 17 de Septiembre de 2009, 14:24:09 »
al final parece que no se podra escribir el display a 8 bit de 20x4 lineas
en la ayuda encontre que fue removido estas librerias


Removed Libraries and Routines
In the new mikroBasic PRO for PIC, you will find that some of the existing libraries are removed. These are :

Bootloader Library (which is now distributed in the Bootloader example folders),
Lcd Custom Library,
Lcd8 Library.
Also, certain library routines are removed :

Lcd_Config, from the Lcd Library,
Man_Receive_Config and Man_Send_Config from the Manchester Code Library,
Ps2_Init, from the PS/2 Library,
Soft_I2C_Config, from the Software I²C Library,
Soft_SPI_Config, from the Software SPI Library.

Desconectado Moyin

  • PIC16
  • ***
  • Mensajes: 102
Re: Ejemplitos de Mikrobasic y Proteus
« Respuesta #58 en: 05 de Octubre de 2009, 12:32:15 »
Hola "bigluis", tengo algo de tiempo trabajando con MKB pero nunca me había topado con un programa que empleara la sentencia "continue", me parece muy interesante tu programa de la clave pero no alcanzo a antender como trabaja esta sentencia en el programa que construiste, espero puedas comentar acerca de ello.

Saludos :)
« Última modificación: 06 de Octubre de 2009, 01:01:52 por Moyin »
Sonrie Cristo te ama

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Ejemplitos de Mikrobasic y Proteus
« Respuesta #59 en: 06 de Octubre de 2009, 13:53:17 »
Hola "bigluis", tengo algo de tiempo trabajando con MKB pero nunca me había topado con un programa que empleara la sentencia "continue"

Las sentencias continue y break

Sentencia Continue
Se usa continue para "Saltar el Lazo".

En el Lazo for el contador de programa se mueve a la línea donde está el for; Sin cambiar el contador de lazo;
Código: [Seleccionar]
' continue salta aqui
for i = ...
  ...
  continue
  ...
next i

En el Lazo while el contador de programa se mueve a la línea donde está el while (cima del lazo).
Código: [Seleccionar]
' continue salta aquí
while condition
  ...
  continue
  ...
wend

En el Lazo do el contador de programa se mueve a la línea donde está el until (fondo del lazo).
Citar
do
  ...
  continue
  ...
' continue salta aquí
loop until condition

La sentencia break
Algunas veces es necesario terminar la ejecución del lazo estando dentro de él. Al usar break pasas a la siguiente sentencia luego del fin del lazo.

Código: [Seleccionar]
Inicio del Lazo
  ...
  break
  ...
Fin del Lazo
'break salta aquí

Lo anterior solo es una traducción de lo que está en la ayuda de MikroBasic. Ahí podrán encontrar información más detallada acerca de esto.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA