Feux tricolore

Bonsoir à tous,

Voilà, j'ai enfin décidé de franchir le pas ! je démarre avec l'arduino !
Programme du jours, domptage de la bête !
Donc après quelques petits bidouillage tel que, faire clignoter la traditionnelle LED et la réalisation d'un petit chenillard avec différente configuration, je décide d'apprendre à utiliser une pin en input, en l’occurrence lire l'état d'un bouton poussoir et allumer une LED lors de l'appui de celui-ci. Suite à ça, je décide d'appliquer tout ce que j'ai déjà appris pour réaliser un feu tricolore.

Cahier des charges :

LED VERTE=1
Bouton poussoir=1
Delay 6 secondes
LED VERTE=0
LED ORANGE=1
Delay 6 secondes
LED ORANGE=0
LED ROUGE=1
DELAY 10 secondes
LED ROUGE=0
LED VERTE=1

// the setup function runs once when you press reset or power the board

void setup() {

pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, INPUT);

}

//Feux rouge
void loop() {

int test = digitalRead(5); // Lecture de l'entree BP et sockage du résultats dans test
if(test==LOW) // Si test est à l'état bas
{
digitalWrite(2, HIGH); //la pin 2 passe à l'état haut

}

else //sinon

{
delay(5000);
digitalWrite(2,LOW); //la pin 2 passe à l'état bas
digitalWrite(3, HIGH); //la pin 3 passe à l'état haut
delay(6000);
digitalWrite(3,LOW); //la pin 3 passe à l'état bas
digitalWrite(4,HIGH); //la pin 4 passe à l'état haut
delay(10000);
digitalWrite(4,LOW); //la pin 4 passe à l'état bas

}

}

A ma grande surprise, ça fonctionne, je pensais que j'aurai un peu plus galéré mais ça été. Mais je suis sûr qu'il est possible d'optimiser tout ça ?

Merci

Tu peux optimiser avec millis(), le défaut de la fonction delay() et de bloquer tout le micro et rien ne peux se passer pendant ce temps

Prochain défi : ajouter un bouton piéton :smiling_imp:

Si le bouton est enfoncé alors que le feu est vert, il faut passer tout de suite à l'orange.

Après ça, tu auras compris tout l'intérêt d'utiliser millis() au lieu de delay().

Jambe:
Merci

Tu peux optimiser avec millis(), le défaut de la fonction delay() et de bloquer tout le micro et rien ne peux se passer pendant ce temps

Bonjour,

Merci pour la réponse, la prochaine fois j'utiliserai les balises code. Il me semblait bien que lorsque je lisais d'autre post, le code est en surbrillance et encadré, merci !
Je vais investiguer cette fonction "millis()" ! et tenter de la mettre en oeuvre.

bricoleau:
Prochain défi : ajouter un bouton piéton :smiling_imp:

Si le bouton est enfoncé alors que le feu est vert, il faut passer tout de suite à l'orange.

Après ça, tu auras compris tout l'intérêt d'utiliser millis() au lieu de delay().

J'utilise déjà un bouton poussoir piéton pour le passage au rouge du feux voiture et passage au vert du feux piéton. Mais je vais essayer ce que tu demandes.

Merci encore pour vos réponses !!