Bonsoir
C'est réalisable, comment le faire ?
Etudier la gestion des boutons... les pwm....
De bonnes explications se trouvent dans les tutoriels conseillés aux débutants
Voir la seconde Règle du Forum Francophone.
OK
Le mieux serait de montrer içi le code actuel (dans le corps du message et entre les balises appropriées)
Qu'est ce qui empếche d'étendre à BP1+BP2+BP3 ce qui marche pour BP1+BP2 ?
Le mieux, avant de coder c'est de dessiner un petit organigramme avec les différents états et les actions qui permettent de passer d'un état à l'autre.
Si l'organigramme est clair et exhaustif, le code devrait sortir tout seul (ou presque).
Entre nous, le fonctionnement que tu cherches à obtenir est légèrement tordu. Appuyer 3 boutons ensembles pour obtenir l'un des états, c'est soit un exercice de style, soit la conception d'une lampe de chevet pour organiste.
je suis pas chez moi donc je peux pas mettre le code maintenant, je pense que je cherche a faire trop simple ou alors je me complique la vie !
mon programme est du style
si BP1=1 alors sortie =100%
si BP2=1 alors sortie =20%
sauf que comme c'est une boucle ça clignote, si je met un while a la place de "si BP2" ça marche mais le programme est bloqué (logique vous me direz)et je peux plus faire la suite !!
fdufnews:
Tu ferais bien de regarder le tuto sur les machines à états. Ce que tu cherches à faire correspond typiquement à l'utilisation d'un tel système.
j'ai étudié le tuto mais il n'y a rien a faire j'y arrive pas
du coup j'ai fait ça
//définie les pins des entrées
#define BP1 2
#define BP2 3
#define BP3 4
#define BP4 5
//définie les pins de sorties
#define Led 11
void setup() {
//définie les pins entrées en pullup
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
//Définie les pins sortie
pinMode(11, OUTPUT);
}
void loop() {
// Appuis sur BP1, la led s'allume à 100%
if(digitalRead(BP1) == 0 && digitalRead(BP2) == 1 && digitalRead(BP3) == 1)
{
digitalWrite(Led, HIGH);
delay(10);
}
// appuis sur BP1 ET BP2, la led s'allume a 20%
if(digitalRead(BP1) == 0 && digitalRead(BP2) == 0 && digitalRead(BP3) == 1)
{
analogWrite(Led, 50);
//delay(50);
}
// appuis sue BP1 ET BP2, la led s'eteint
if(digitalRead(BP1) == 0 && digitalRead(BP2) == 0 && digitalRead(BP3) == 0)
{
digitalWrite(Led,LOW);
//delay(50);
}
else
{
analogWrite(Led, 50); // si aucun appuis sur les BP
}
// appuis sur BP4 la led s'allume a 100% quelque soit la position des autres BP
while(digitalRead(BP4) == 0)
{
digitalWrite(Led, HIGH);
//delay(10);
}
}
c'est pas top mais ça fait ce que je voulais,
chose étrange et que je lui aie pas demandé, si j'appuis sur BP1 ET BP3 la led passe a 20% .