FAQ FAQ  •  Buscar Buscar  •  Registrarse Registrarse  •  Entre para ver sus mensajes privados Entre para ver sus mensajes privados  • Login Login

Detección de tocado con 16F876A

Índice de los Foros Electronica Facil » FOROS ELECTRONICA » Microcontroladores PIC
Publicar nuevo tema   Responder al tema
Ver tema anteriorEntre para ver sus mensajes privadosVer tema siguiente
AutorMensaje
Ricardo.Ojeda
Asunto: Detección de tocado con 16F876A MensajePublicado: 15 Oct, 2009 - 08:40
Nuevo en el Foro
Nuevo en el Foro


Registrado: 04 Ago, 2009
Mensajes: 10

Hola muy buenas a todos.

Pongo el código y comento lo que necesito:

Código:
Programa Base
void main ()
{
   // Todos los fuses
   
   set_tris_a(0x3F);   // Port A entrada
   set_tris_b(0x00);   // Port B salida

   output_b(0x00);      // Borro las salidas

   int i;


   for (i=0;i<5;i++)
   {
      output_high(PIN_B0);
      if (input(PIN_A0))
      {
         output_low(PIN_B0);
         delay_ms(100);
         output_high(PIN_B4);
         delay_ms(300);
      }
      delay_ms(1000);

      output_high(PIN_B1);
      if (input(PIN_A1))
      {
         output_low(PIN_B1);
         delay_ms(100);
         output_high(PIN_B5);
         delay_ms(300);
      }
      delay_ms(1000);
   }
}





Aquí lo que hago es encender un LED rojo (RB0 y RB1) y cuando se pulsa el pulsador correspondiente (RA0 y RA1), se apaga el LED rojo y se enciende uno verde (RB4 y RB5).
Aquí lo que pasa, es que hasta que no pulse el botón, no seguirá haciendo nada.
Entonces lo que quiero hacer es que encienda el LED rojo RB0, se espere un tiempo determinado, y si no pulsas en ese tiempo, se apague y pase al siguiente. Y en el caso de que pulse en ese intervalo de tiempo, haga lo que ya está puesto en el código.

A ver si me podéis hechar una mano.

Muchas gracias.
Saludos!
 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
st0
Asunto:  MensajePublicado: 15 Oct, 2009 - 10:58
Habitual
Habitual


Registrado: 11 May, 2006
Mensajes: 108
Ubicación: España
No entiendo que quieres hacer. Explicalo mejor porque lo
he leido 3 veces y en las tres he pensado algo distinto.
 
 Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor  
Responder citando Volver arriba
Ricardo.Ojeda
Asunto:  MensajePublicado: 15 Oct, 2009 - 12:11
Nuevo en el Foro
Nuevo en el Foro


Registrado: 04 Ago, 2009
Mensajes: 10

En el programa que he puesto, sigue el mismo recorrido: Enciende un LED rojo que, cuando pulsas un boton, se apaga y enciende uno verde. Espera un tiempo, y vuelve a encender otro LED rojo que, cuando pulsas un boton, se apaga y enciende uno verde.

Lo que quiero es que, si no se a pulsado el boton en un tiempo determinado, me pase al siguiente LED rojo. Si en ese intervalo de tiempo, se pulsa, entonces hace como antes, apaga el rojo y enciende el verde. Y luego pasa al siguiente LED rojo.

No quiero que el LED rojo esté permanente hasta que se pulse el boton, quiero que esté encendido un tiempo límite y si llega a ese tiempo, se apague y pase al siguiente.

Espero que se entienda mejor.

Gracias por responder.

Saludos.
 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
JAMM
Asunto: Re: Detección de tocado con 16F876A MensajePublicado: 17 Dic, 2009 - 07:44
Habitual
Habitual


Registrado: 06 May, 2009
Mensajes: 60

Ricardo.Ojeda escribió:
Hola muy buenas a todos.

Pongo el código y comento lo que necesito:

Código:
Programa Base
void main ()
{
   // Todos los fuses
   
   set_tris_a(0x3F);   // Port A entrada
   set_tris_b(0x00);   // Port B salida

   output_b(0x00);      // Borro las salidas

   int i;


   for (i=0;i<5;i++)
   {
      output_high(PIN_B0);
      if (input(PIN_A0))
      {
         output_low(PIN_B0);
         delay_ms(100);
         output_high(PIN_B4);
         delay_ms(300);
      }
      delay_ms(1000);

      output_high(PIN_B1);
      if (input(PIN_A1))
      {
         output_low(PIN_B1);
         delay_ms(100);
         output_high(PIN_B5);
         delay_ms(300);
      }
      delay_ms(1000);
   }
}





Aquí lo que hago es encender un LED rojo (RB0 y RB1) y cuando se pulsa el pulsador correspondiente (RA0 y RA1), se apaga el LED rojo y se enciende uno verde (RB4 y RB5).
Aquí lo que pasa, es que hasta que no pulse el botón, no seguirá haciendo nada.
Entonces lo que quiero hacer es que encienda el LED rojo RB0, se espere un tiempo determinado, y si no pulsas en ese tiempo, se apague y pase al siguiente. Y en el caso de que pulse en ese intervalo de tiempo, haga lo que ya está puesto en el código.

A ver si me podéis hechar una mano.




Muchas gracias.
Saludos!



LO UNICO QUE NECESITAS ES REALIZAR UN CONTADOR DENTRO DE UN WHILE Y LISTO SI EL CONTADOR FINALIZA Y AUN NO OPRIMES BOTON, HACE LO QUE TU QUIERAS. SALUDOS

JAMM
 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
Mostrar mensajes anteriores:     
Cambiar a:  
Todas las horas son GMT
Publicar nuevo tema   Responder al tema
Ver tema anteriorEntre para ver sus mensajes privadosVer tema siguiente
 Índice de los Foros Electronica Facil » FOROS ELECTRONICA »  Microcontroladores PIC
powered by phppowered by MySQLPOWERED BY APACHEPOWERED BY CentOS© 2004 - 2025Información Legalpoliticas de cookiesipv6 ready