• Lunes 13 de Mayo de 2024, 09:02

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - ayasystems

Páginas: [1]
1
Programación en C / Detectar Tiempo Transcurrido Entre Pulsaciones
« en: Lunes 7 de Mayo de 2007, 12:11 »
Buenas a todos,

Estoy diseñando un circuito para el coche. Este se encargará de plegar los espejos eléctricos tras recibir dos pulsaciones de cierre seguidas en menos de dos segundos.

Se me ha ocurrido hacerlo de la siguiente manera, a ver si se os ocurre una forma más optima de contar el tiempo transcurrido entre pulsaciones

Graaaacias!!!!

Código: Text
  1.  
  2.  
  3. //Programa de control de espejos y ventanillas
  4. //Autor: Ayasystems 06/05/07
  5.  
  6. #include <12C508.h>
  7. #fuses INTRC,NOWDT,NOPROTECT, NOMCLR
  8. #use delay(clock=4000000)
  9. #define GP0 PIN_B0 //Relé sacar espejos
  10. #define GP1 PIN_B1 //Relé meter espejos
  11. #define GP2 PIN_B2 //Pulso cierre
  12. #define GP3 PIN_B3 //Pulso apertura
  13. #define GP4 PIN_B4
  14. #define GP5 PIN_B5
  15.  
  16.  
  17. void MirrorIn(void){
  18.    output_high(GP1);
  19.    delay_ms(4000); //Esperamos 4 seg. a que se metan
  20.    output_low(GP1);
  21. }
  22.  
  23. void MirrorOut(void){
  24.    output_high(GP0);
  25.    delay_ms(4000); //Esperamos 4 seg. a que salgan
  26.    output_low(GP0);
  27. }
  28.  
  29. main() {
  30.    char primer_pulso = 0;
  31.    char segundo_pulso = 0;
  32.    char contador = 0;
  33.    
  34.    output_low(GP0);
  35.    output_low(GP1);
  36.    output_low(GP2);
  37.    output_low(GP4);
  38.    
  39.    while (TRUE){
  40.       contador = 0;
  41.       if (input(GP2)){//pulsado cierre
  42.          //Detectar si han pulsado dos veces en menos de dos segundos
  43.          while (contador<25000){//Calcular el valor para que esté un segundo dando vueltas al While
  44.             if (input(GP2)){
  45.                segundo_pulso = 1;  
  46.             }//if input(GP2)
  47.          }//fin while
  48.          if (segundo_pulso = 1){
  49.             MirrorIn();//Metemos los espejos
  50.          }//if segundo_pulso
  51.       }//if input(GP2)  
  52.      
  53.      
  54.       if (input(GP3)){//pulsado abrrir
  55.          //Detectar si han pulsado dos veces en menos de dos segundos
  56.          while (contador<25000){//Calcular el valor para que esté un segundo dando vueltas al While
  57.             if (input(GP3)){
  58.                segundo_pulso = 1;  
  59.             }//if input(GP3)
  60.          } //fin while  
  61.          if (segundo_pulso = 1){
  62.             MirrorOut();//Sacamos los espejos
  63.          }//segundo_pulso
  64.       }//input(GP3)  
  65.    }//while TRUE Bulce infinito
  66. }//main
  67.  
  68.  

2
Microcontroladores / Conversor A/d Y Pic
« en: Martes 20 de Junio de 2006, 13:08 »
Hola buenas a todos,

he estado mirando por el foro pero no me queda claro....

Supongamos que decido usar un 16F877

Éste me obtendrá el voltaje de entrada en forma digital.

Quiero hacer un avisador de batería baja que cuando la batería baje por debajo de los 9 voltios avise con un led por ejemplo.

Como paso el valor a decimal para poder luego poner un "IF volt < 9 ..... ENDIF"

El rango de entrada tiene que estar entre 0 y 5 voltios, no? uso un divisor de tensión para poder monitorear una batería de 12?

Gracias por adelantado, a ver si me podeís echar un cable.

Quiero hacerlo con un pic porque usaré más cosas de éste. Es para un helicoptero de radio control. Quiero monitorear la batería y aprovechar el Pic para que los LEDs parpadeen como las luces de navegación de los de verdad.


Saluuuudos ;)

Páginas: [1]