Autor Tema: Problema con Leds y un solo pulsador  (Leído 4829 veces)

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

Desconectado Atomium

  • PIC10
  • *
  • Mensajes: 16
    • Mecatronica
Problema con Leds y un solo pulsador
« en: 29 de Diciembre de 2013, 15:03:44 »
Hola a todos,
Ante todo desearos un feliz año 2014.


Os explico, hace tiempo que no programo un PIC y ando de memoria algo mal.


Quiero hacer una cosa muy sencilla, pero... no me cuerdo como hacerlo, os lo explico, quiero con un solo pulsador encender 2 leds, pero si fuese solo eso seria muy facil. Quiero que al pulsar el pulsador conectado a RA0 se encienda y se apague 1 led conectado a RA1 y si pulso otra vez el mismo pulsador se encienda y se apague otro led conectado a RA2.

Esto seria para 1 led

Comienzo

If RA0 = 1 Then RA1 = 1

Goto led2

Led2

If RA0 = 1 Then RA2 = 1


Goto Comienzo


Saludos


« Última modificación: 29 de Diciembre de 2013, 15:10:20 por Atomium »
Saludos desde Jaen

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: Problema con Leds y un solo pulsador
« Respuesta #1 en: 29 de Diciembre de 2013, 17:09:36 »
Es relativamente facil:

Código: [Seleccionar]
AllDigital  'Todo el PortA como digital (I/O)
ConfigPin RA0 = Input  'Pin como entrada
ConfigPin RA1 = Output  'Pin como salida
ConfigPin RA2 = Output  'Pin como salida
RA1 = 0  'Pin a estado bajo, led1
RA2 = 0  'Pin a estado bajo, led2

Dim flag As Bit  'Bandera de control, establece el turno del led
flag = 0  'Bit a cero

'Rutina principal
void_main:

If RA0 = 1 And flag = 0 Then Gosub led1  'Si se cumple, salto con retorno a Led1
If RA0 = 1 And flag = 1 Then Gosub led2  'Si se cumple, salto con retorno a Led2

Goto void_main
End                                               
'Rutina para el control del parpadeo led1
led1:
RA1 = 1  'Pin RA1 a estado alto
WaitMs 500  'Pausa de medio segundo
RA1 = 0  'Pin RA1 a estado bajo
WaitMs 500
Toggle flag  'Invierte bit
Return                                           
'Rutina para el control del parpadeo led2
led2:
RA2 = 1
WaitMs 500
RA2 = 0
WaitMs 500
Toggle flag
Return   
Saludos desde Granada, España.

Desconectado Atomium

  • PIC10
  • *
  • Mensajes: 16
    • Mecatronica
Re: Problema con Leds y un solo pulsador
« Respuesta #2 en: 30 de Diciembre de 2013, 08:02:42 »
Buenas a todos,


Muchas gracias dogflu66.

LLevo al menos 6 años sin tocar un microcontrolador, me voy a poner las pilas de nuevo y a intentar recuperar un poco el tiempo perdido.

Gracias de  nuevo

Feliz año nuevo


Saludos
Saludos desde Jaen

Desconectado Atomium

  • PIC10
  • *
  • Mensajes: 16
    • Mecatronica
Re: Problema con Leds y un solo pulsador
« Respuesta #3 en: 30 de Diciembre de 2013, 08:57:44 »
Hola de nuevo dogflu66


Que compilador usastes ?


Saludos
Saludos desde Jaen

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: Problema con Leds y un solo pulsador
« Respuesta #4 en: 30 de Diciembre de 2013, 19:54:23 »
Felices fiestas tambien para ti y para todos los que estan por aquí.
Uso el entorno de trabajo Pic Simulator IDE http://www.oshonsoft.com/
Saludos desde Granada, España.

Desconectado Atomium

  • PIC10
  • *
  • Mensajes: 16
    • Mecatronica
Re: Problema con Leds y un solo pulsador
« Respuesta #5 en: 30 de Diciembre de 2013, 20:23:17 »
Buenas noches,

Gracias,

Mañana lo miraré, no utilicé nunca esa plataforma.

Si lei algo sobre sobre Oshon

Siempre usé Picbasic, Microcode Studio, Proton

Saludos

Saludos desde Jaen

Desconectado Atomium

  • PIC10
  • *
  • Mensajes: 16
    • Mecatronica
Re: Problema con Leds y un solo pulsador
« Respuesta #6 en: 01 de Enero de 2014, 17:30:25 »
Buenas noches,

He programado el pic y no va,

RA1 siempre apagado y RA2 intermitente al rato sin tocar nada.

Saludos




Saludos desde Jaen

Desconectado fco1306

  • PIC16
  • ***
  • Mensajes: 128
Re: Problema con Leds y un solo pulsador
« Respuesta #7 en: 02 de Enero de 2014, 06:36:39 »
¿Tienes bien la configuración en el pic sinulator? Tipo de micro, velocidad cristal, etc

Desconectado Atomium

  • PIC10
  • *
  • Mensajes: 16
    • Mecatronica
Re: Problema con Leds y un solo pulsador
« Respuesta #8 en: 02 de Enero de 2014, 08:40:41 »
Buenos dias,

Si , todo perfectamente configurado, compilado y grabado en el PIC y probado en una placa de ensayo.


Deberia de ir , lo que hace que encienda un led u otro es esto :

   If RA0 = 1 And flag = 0 Then Gosub led1  'Si se cumple, salto con retorno a Led1
   If RA0 = 1 And flag = 1 Then Gosub led2  'Si se cumple, salto con retorno a Led2

Pero... no va

Lo he vuelto ha hacer todo, hasta he cambiado de PIC.

Se pone el led conectado a RA2 intermitente y RA1 apagado siempre.



Saludos
Saludos desde Jaen

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: Problema con Leds y un solo pulsador
« Respuesta #9 en: 02 de Enero de 2014, 08:56:19 »
wdt está habilitado?
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado Atomium

  • PIC10
  • *
  • Mensajes: 16
    • Mecatronica
Re: Problema con Leds y un solo pulsador
« Respuesta #10 en: 02 de Enero de 2014, 09:37:38 »
Ya habia  probado con el WDT habilitado y sin habilitar por si acaso


Uno de los leds lo tenia mal , lo he cambiado y estan los dos intermitentes, se apaga uno y se enciende el otro.

Saludos

Saludos desde Jaen

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: Problema con Leds y un solo pulsador
« Respuesta #11 en: 02 de Enero de 2014, 19:29:36 »
Este lo he probado sobre la pic EBasic y funciona.

Código: [Seleccionar]
'**********************************************************************************
'Programa de ejemplo para trabajar con led y teclas
'Placa PicEBasic, 01/2014
'Basic Pic Simulator IDE (PSI), v6.96_04, Pic16F88
'**********************************************************************************
'----------------------------------------------------------------------------------
Define CONF_WORD = 0x2f50
Define CONF_WORD_2 = 0x3ffc
Define CLOCK_FREQUENCY = 8  'Oscilador a 8Mhz
'Define SIMULATION_WAITMS_VALUE = 1  'Activar para simulación
'-----------------------------------------
Call _setupebasic()  'Inicializa la placa entrenadora PicEBasic.
Hseropen 38400  'Inicializa puerto RS232 por hardware a 38400Baudios
Lcdinit  'Inicializa el LCD sin cursor
WaitMs 100  'Pausa de 100 mSeg.
Lcdout "Led y Teclas"  'Imprime el texto en el LCD
WaitMs 1000  'Pausa de 1 Seg.
'-----------------------------------------
Const ledon = 0  'Led encendido
Const ledoff = 1  'Led apagado
Const teclaon = 0  'Tecla pulsada

ledv = ledoff  'Led verde a Off
leda = ledoff  'Led ambar a Off

Dim flag As Bit  'Bandera de control, establece el turno del led
flag = 0  'Bit a cero

'Rutina principal
void_main:

If tecla2 = teclaon And flag = 0 Then Gosub led1  'Si se cumple, salto con retorno a Led1
If tecla2 = teclaon And flag = 1 Then Gosub led2  'Si se cumple, salto con retorno a Led2

Goto void_main
End                                               
Include "_ProcSetUpEBasic.bas"
'Rutina para el control del parpadeo led1
led1:
ledv = ledon  'Pin RA1 a estado alto
WaitMs 500  'Pausa de medio segundo
ledv = ledoff  'Pin RA1 a estado bajo
WaitMs 500
Toggle flag  'Invierte bit
Return                                           
'Rutina para el control del parpadeo led2
led2:
leda = ledon
WaitMs 500
leda = ledoff
WaitMs 500
Toggle flag
Return
Saludos desde Granada, España.

Desconectado Atomium

  • PIC10
  • *
  • Mensajes: 16
    • Mecatronica
Re: Problema con Leds y un solo pulsador
« Respuesta #12 en: 02 de Enero de 2014, 19:47:09 »
Buenas noches,

Gracias, mañana lo grabaré en el pic 16F84 y haré la prueba.

Ya os comentaré que tal ha ido.


Saludos

Saludos desde Jaen

Desconectado Atomium

  • PIC10
  • *
  • Mensajes: 16
    • Mecatronica
Re: Problema con Leds y un solo pulsador
« Respuesta #13 en: 04 de Enero de 2014, 14:09:30 »
Hola,

A ti te va el programa porque lo usas con la pic EBasic y tambien le incluyes :

Include "_ProcSetUpEBasic.bas"


Sin este fichero no va.


Saludos

Saludos desde Jaen

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: Problema con Leds y un solo pulsador
« Respuesta #14 en: 04 de Enero de 2014, 14:19:13 »
Si, es la configuración de la placa, el include me permite simplificar el programa principal.

Código: [Seleccionar]
'****************************************************************************
'Configuración de la placa entrenadora Pic EBasic ***************************
'By COS, 01/14, 11/2013, Pic Simulator IDE v6.96_04 *************************
'Pic16F88 y LCD con linea de datos a 4 Bit sin Bit R/W **********************
'****************************************************************************
'Include "_ProcSetUpEBasic.bas"
Symbol ledv = RB0  'Etiqueta al led verde
Symbol leda = RA7  'Etiqueta al led amarillo
Symbol blcd = RB3  'Etiqueta al backlight del lcd
Symbol tecla1 = RA6  'Etiqueta a la tecla S1
Symbol tecla2 = RA5  'Etiqueta a la tecla S2
'Codigos Ascci de control del Hyperterminal
Const ff = 0x0c  'FF, Avance de pagina
Const bell = 0x07  'BELL, Señal sonora
Const sp = 0x20  'SP, Espacio
Const bksp = 0x08  'BKSP, Retroceso
Const cr = 0x0d  'CR, retorno de carro
'-----------------------------------------
Proc _setupebasic()
'Puerto del LCD ----------------------------------------------------------
Define LCD_BITS = 4  'Bus de datos del lcd, a 4bit
Define LCD_DREG = PORTA  'Bus de datos, puerto A
Define LCD_DBIT = 0  'Bus datos 4, bit menos significativos del puerto
Define LCD_RSREG = PORTB  'Bit de control RS, puerto B
Define LCD_RSBIT = 7  'RB7 como RS
Define LCD_EREG = PORTB  'Bit de control E, puerto B
Define LCD_EBIT = 6  'RB6 como E
Define LCD_COMMANDUS = 2000  'Espera despues de cada comando
Define LCD_DATAUS = 100  'Espera despues de enviar un dato al LCD en uSeg.
Define LCD_INITMS = 50  'Espera inicialización del Display
'Configuración Placa Pic EBasic -----------
AllDigital
ANSEL = 0x00  'Los pin I/O digitales
CMCON = 0x07  'Comparador a off
OSCCON = 0x7e  'Reloj interno a 8Mhz
TRISA = 0x00  'Puerto A como salidas
TRISB = 0x00  'Puerto B como salidas
TRISA.4 = 1  'Como entrada (RA4, adc)
TRISA.6 = 1  'Como entrada (RA6, tecla S1)
TRISA.5 = 1  'Como entrada (RA5, tecla S2)
TRISB.5 = 0  'Como salida(RB5,Tx RS232)
TRISB.2 = 1  'Como entrada (RB2, Rx RS232)
TRISB.4 = 1  'Como entrada (RHT03 inicio)
PORTB.3 = 1  'Luz lcd a ON (RB3)
PORTA.7 = 1  'Led amarillo a OFF
PORTB.0 = 1  'Led verde a OFF
PORTB.1 = 0  'LED RHT03 a OFF
'-----------------------------------------
'Lcdinit
End Proc                                         
Saludos desde Granada, España.


 

anything