Bonjour,
J'utilise un C embarqué et pour une application je cherche à faire fonctionner, j'aurai besoin que lorsque qu'un bouton poussoir est appuyé, celui ci réalise différentes actions en fonction du temps sur lequel l'utilisateur va l'appuyer :
Le bouton poussoir est déclaré comme une variable
L'état de BP_1 est donc soit 0 ou 1 si il est appuyé ou non.
Code : Sélectionner tout - Visualiser dans une fenêtre à part unsigned char BP_1;
Je cherche à faire ceci :
BP_1 appui bref < 0.5s - considéré comme accidentel --> Action : ne fait rien - pas d'action
BP_1 appui supérieur à 0.5s puis l'utilisateur fait des impulsions successives sur le bouton : incrémente de +1 la valeur d'une variable appelé VAR1 à chaque nouvelle impulsion ou si le bouton est maintenu appuyé moins de 1 seconde
BP_1 est maintenu appuyé par l'utilisateur plus de 2 secondes : incrémente par pas de +5 la valeur de la variable VAR1.
BP_1 est appuyé 2 fois rapidement puis relaché ( plus d'impulsion dans la seconde qui suit ) : incrémente de +1 la variable VAR2
On rencontre souvent ce type de bouton poussoir intelligent sur les appareils électronique du moment, je pense qu'il deja exister des codes fonctionnels pour faire cela mais je n'ai pas trouvé.
Pour faire des essais, j'ai tenté ceci mais essayer de reproduire l'incrémentation de +1 de la variable VAR1 mais ça n'est pas concluant du tout :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 unsigned char n = 0; unsigned char VAR1 = 0;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 while (BP_1 == 0) // Quand le BP + est appuyé, BP_1 passe à 0, au repos BP_1 est '1' { n++; if (n>200) // en fonction de la vitesse du micro n permet de faire la tempo de 0.5s { VAR1 += 1; __delay_ms(1000); // ré-incrémentera VAR1 que 1 seconde plus tard } } n=0;
Est ce que le code ci-dessous est une bonne façon de procéder pour réaliser ce type de fonctionnalité ?
Je ne sais pas trop comment faire.
Merci à vous,
Partager