Bonjour je ne trouve plus mes posts
donc je repose ma question
comment je peux faire pour ajouter un bouton à mon code j'ai essayé plusieurs méthodes mais ça ne marche pas
je souhaite suite à un appuis sur le bouton que sa lance mon code jusqu’à un nouvel appuis sur le bouton
int pinLed01, pinLed1, pinLed2, pinLed3, pinLed4; //on peut déclarer plusieurs variables
void setup()
{
//initialisation des variables
pinLed01 = 2;
pinLed1 = 3;
pinLed2 = 4;
pinLed3 = 6;
pinLed4 = 7;
//initialisation des modes
pinMode(pinLed01, OUTPUT);
pinMode(pinLed1, OUTPUT);
pinMode(pinLed2, OUTPUT);
pinMode(pinLed3, OUTPUT);
pinMode(pinLed4, OUTPUT);
//mise à 0V de chaque pin
digitalWrite(pinLed01, LOW);
digitalWrite(pinLed1, LOW);
digitalWrite(pinLed2, LOW);
digitalWrite(pinLed3, LOW);
digitalWrite(pinLed4, LOW);
}
void loop()
{
//test allumage et repérage des lEDs
digitalWrite(pinLed01, HIGH);
delay(1500);
digitalWrite(pinLed1, HIGH);
delay(800);
digitalWrite(pinLed2, HIGH);
delay(800);
digitalWrite(pinLed3, HIGH);
delay(1500);
digitalWrite(pinLed4, HIGH);
delay(1500);
//on éteint tout
digitalWrite(pinLed1, LOW);
digitalWrite(pinLed2, LOW);
digitalWrite(pinLed3, LOW);
digitalWrite(pinLed4, LOW);
digitalWrite(pinLed01, LOW);
delay(500);
}
Vous avez 2 états: EN_ATTENTE et EN_COURS. vous démarrez dans l'état EN_ATTENTE et un appui sur le bouton vous fait passer en mode EN_COURS. Dans ce mode là un appui sur le bouton vous fait repasser en attente.
une fois que vous connaissez le mode dans lequel vous êtes, vous pouvez décider d'exécuter ou non un bout de code. --> la structure ressemblerait alors à cela par exemple:
#include <simpleBouton.h>
simpleBouton bouton(3); //Cablage : D3---BP---GND
enum : byte {EN_ATTENTE, EN_COURS} etat;
void setup() {
Serial.begin(115200);
etat = EN_ATTENTE;
}
void loop()
{
// Test pour savoir si on change d'état
if (bouton) { // on a appuyé sur le bouton, on change d'état
switch (etat) {
case EN_ATTENTE:
// éventuellement ici initialiser ce qu'il faut pour démarrer le programme
etat = EN_COURS;
break;
case EN_COURS:
// éventuellement ici mettre ce qu'il faut pour terminer proprement le programme
etat = EN_ATTENTE;
break;
}
}
// si le programme est en cours d'exécution, on fait ce qu'il faut
if (etat == EN_COURS) {
// =============================================================
// ici faire tourner 1 étape (non bloquante) de votre programme
// =============================================================
}
// ici on peut aussi faire autre chose, genre clignoter une LED pour montrer que le système est fonctionnel
}
bonjour a tous
je revient vers vous avec mon code
desolé je n'ai pas utiliser la librerie (bouton poussoir )
mais j'ai enfin reussi a faire ce que je voulais
je joint mon code
//déclaration des variables
int pinBouton;
int pinLed01,pinLed1,pinLed2,pinLed3,pinLed4;
void setup()
{
//initialisation des variables
pinBouton = 10;
pinLed01 = 2;
pinLed1 = 3;
pinLed2 = 4;
pinLed3 = 6;
pinLed4 = 7;
//définition des modes
pinMode(pinBouton, INPUT); //mode lecture pour le bouton
pinMode(pinLed01, OUTPUT); //mode écriture pour led
pinMode(pinLed1, OUTPUT);
pinMode(pinLed2, OUTPUT);
pinMode(pinLed3, OUTPUT);
pinMode(pinLed4, OUTPUT);
}
void loop()
{
//lecture de l'état du bouton et stockage dans etatBouton
boolean etatBouton = digitalRead(pinBouton);
//test des conditions
if (etatBouton==HIGH)//test si bouton appuyé
{
digitalWrite(pinLed01, HIGH);//lancement du programe
delay(1000);
digitalWrite(pinLed1, HIGH);
delay(1000);
digitalWrite(pinLed2, HIGH);
delay(1000);
digitalWrite(pinLed3, HIGH);
delay(1500);
digitalWrite(pinLed4, HIGH);
delay(1000);
digitalWrite(pinLed01, LOW);
digitalWrite(pinLed1, LOW);
digitalWrite(pinLed2, LOW);
digitalWrite(pinLed3, LOW);
digitalWrite(pinLed4, LOW);
}
delay(200); //petite attente
}
encore un petit service vers le quelle vous pouvez m'orienter
mon code sert pour un feux de départ pour course automobile (sur un circuit autoroutier)
je voudrais bien rajouter un feux ( rouge en pinLed5) qui s'allumerais en cas de faux départ avec un délai modifiable
comment puis-je faire ?
bonjour a tous
merci de vos réponse j'ai des capteurs de type h21a1comme ceux-la
mais serait il possible de le faire au niveau des rails quand on appuis sur la télécommande pour envoyer le courant a la voiture ?
les rails sont des rails de circuit "TCR changement de file"
Une barrière infra-rouge ou laser ne nécessite qu'une entrée mais elle ne permet pas d'identifier l'auteur du faux départ
Des capteurs sur la piste ou la lecture de la tension délivrée par les poignées permet de connaitre l'auteur du faux départ mais complique un peu l'interface. D'autant qu'il me semble que la tension sur les rails est de 12V et que sa polarité change lors des changement de piste.
Cela dépend donc de ton besoin et de ta capacité à réaliser la fonction.
L'arduino gérait le count-down et pilotait aussi des relais qui bloquaient l'alimentation des rails de la piste. Donc un faux départ n'était pas possible - puisque le jus arrivait seulement quand le feu passait au vert.
Cependant bien sûr tout le monde trichait et tenait la manette à fond pendant la phase Rouge/Orange/Vert puisque ça ne faisait rien
Donc on avant changé un peu la donne et aussi mis un capteur sur le fils des poignées de commandes qui permettait de voir si quelqu'un avait appuyé sur sa télécommande avant le feu vert. Il n'y avait comme cela pas de faux départ puisque pas de courant dans le rail, mais on pouvait enlever des points à ceux qui avaient appuyé sur la manette trop tôt.
Joli montage ça fait super pro ! (pas clické sur la vidéo car tinypic c’est louche - site financé par plein de pub agressives et usage de flash qui n’est pas sécurisé et ne fonctionne pas sur mon smartphone de toutes façons)
J-M-L:
Joli montage ça fait super pro ! (pas clické sur la vidéo car tinypic c’est louche - site financé par plein de pub agressives et usage de flash qui n’est pas sécurisé et ne fonctionne pas sur mon smartphone de toutes façons)