Bonjour,
Je suis débutant en programmation. Mon programme consiste a allumer et éteindre une led selon un capteur de luminosite (LDR).
Je cherche une solution pour pouvoir allumer et éteindre une led avec délais de 9s pour chaque changement d'état.
Mon problème c'est que je souhaite le réaliser avec un timer au lieu d'un delay_ms. Quand j'exécute le programme la led fait du tout tout-rien au lieu d'attendre 9s pour passer d'un état a l'autre.
Y aurait-il une âme charitable pour venir à mon aide svp![]()
Voila mon programme:
Code:#include<18F4580.h> #fuses HS,NOWDT,NOPROTECT,NOLVP #use delay(clock=20000000) #include <LCD_v3.c> unsigned char valeur; unsigned int valmax = 90; seuil de luminosité unsigned int valmin=20; deuxième seuil de luminosité unsigned int nb_timer; float tension; #int_timer0 tmr0() { nb_timer++; if (nb_timer==3) // pour obtenir nos 10s (3*3) { nb_timer=0; } set_timer0(6942); calcule valeur pour un période 3s } void main() { enable_interrupts(INT_TIMER0); // enable_interrupts(GLOBAL) ; // setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); // Configuration de mon timer set_timer0(6942); // while(TRUE) // setup_adc(ADC_CLOCK_DIV_64); // Convertisseur analogique setup_adc_ports(AN0); lcd_init(); { set_adc_channel(0); valeur=read_adc(); tension = (valeur/51.); lcd_gotoxy(2,1); printf(lcd_putc,"Tension=%f",tension); delay_ms(1000); if (valeur>= valmax) { lcd_putc("\f"); lcd_gotoxy(2,1); printf(lcd_putc,"valeur=%u",valeur); lcd_gotoxy(2,2); printf(lcd_putc,"Phare eteint"); delay_ms(2000); output_low(PIN_D7); } if (valeur<=valmin) { lcd_putc("\f"); lcd_gotoxy(2,1); printf(lcd_putc,"valeur=%u",valeur); lcd_gotoxy(2,2); printf(lcd_putc,"Phare allume"); delay_ms(2000); output_high(PIN_D7); } } }
-----