Bonjour
Je me permets de vous écrire car j'ai un soucis d'algorithme en programmation en langage C.
voici mon problème :
J'ai un bouton poussoir j'aimerais quel me fasse trois actions différentes.
Un appui court allume la led1.
Un appui long allume la led2.
Un double appui rapide éteint les LEDs(led1 et led2).

Merci d'avance c'est dans le cadre de mon stage j'ai réussi à faire l'appui court et l'appui long mais j'arrive pas à faire le double appui.

programme

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#define BUTTON_POLLING_INTERVAL 20          //intervalles de lecture du bouton, en ms
#define COUNT_DEBOUNCE 10                   //durée maximale autorisée de relâchement du bouton (en nombre d'intervalles)
#define COUNT_SHORT_PRESS 5                 //durée mini d'un appui court (en nombre d'intervalles)
#define COUNT_LONG_PRESS 50

unsigned int releasedCount = 0;
unsigned totalCount = 0;

while(totalCount<COUNT_LONG_PRESS)
		{
	    	_delay_ms(20);

	    	if((BOUT1)==0)
	    	{
	        	releasedCount=0;
	       	 	totalCount++;
	    	}
	    	else
	    	{
	        	releasedCount++;
	    	}
	   		if(releasedCount>=COUNT_DEBOUNCE)
	   		{
	        	break;
	    	}
	    }
	 
		//execution des actions apres appui
		if(totalCount==COUNT_LONG_PRESS)
		{
	    //inserer ici action appui long
			//test2();
			eteint_leds();
			totalCount=0;
	    while((BOUT1)==0);
		}
		else if(totalCount>COUNT_SHORT_PRESS)
		{
	    //inserer ici action appui bref
			fonction_A();
			PORTA |=(1<<PORTA0);
			totalCount=0;
			appui_bout1=1;
		}
               // action double appui
		else if((appui_bout1==1)&&(totalCount>COUNT_SHORT_PRESS)) 
		{
			eteint_leds();
			appui_bout1=0;
		}