Skip to content

Instantly share code, notes, and snippets.

@danjperron
Last active September 8, 2018 02:59
Show Gist options
  • Save danjperron/807d19cd362733e797fff8bfacd394d1 to your computer and use it in GitHub Desktop.
Save danjperron/807d19cd362733e797fff8bfacd394d1 to your computer and use it in GitHub Desktop.
const int GAUCHE = 11;
const int BARRE = 10;
const int DROITE = 9;
const int button = A0;
const int DEFAULT_DEBOUNCE_MS = 20;
int Val;
int oldVal=HIGH;
int counter = 1;
int delay1 = 1250;
int mscounter=0; //compteur de milli seconde
int mode=0; // quel est le mode des flashers
void setup() {
pinMode(GAUCHE,OUTPUT);
pinMode(BARRE,OUTPUT);
pinMode(DROITE,OUTPUT);
pinMode(button,INPUT);
}
int debounce=DEFAULT_DEBOUNCE_MS;
void loop() {
// partie de lecture du bouton avec debounce
Val = digitalRead(button);
if(Val != oldVal)
{
if(debounce == 0)
{
if(Val == LOW)
counter++;
oldVal= val;
}
else
debounce--;
}
else
debounce=DEFAULT_DEBOUNCE_MS;
// verification du compteur
if(counter>4)
counter=1;
// commande selon compteur
// il serait mieux de faire des fonctions pour chaque commande
// ok pour le compteur de 1 seconde
// il est possible de partir un timer en interrupt
// ou de tout simplement faire un delay 1ms
// et d'ajuster un compteur pour les secondes
// de cette façcon tu ne bloques pas ta vérification de bouton
mscounter++;
if(mscounter < delay1)
mode = 0;
else if(mscounter < (2*delay1))
mode = 1;
else
{
mode = 0; // ok deux modes seulement
mscounter=0;
}
if (counter == 1){
if(mode == 0)
{
digitalWrite(GAUCHE,HIGH);
digitalWrite(BARRE,HIGH);
digitalWrite(DROITE,LOW);
}
else
{
digitalWrite(GAUCHE, LOW);
digitalWrite(BARRE, LOW);
digitalWrite(DROITE, LOW);
}
}
if (counter == 2){
if(mode == 0)
{
digitalWrite(GAUCHE,LOW);
digitalWrite(BARRE,HIGH);
digitalWrite(DROITE,LOW);
}
else
{
digitalWrite(GAUCHE, LOW);
digitalWrite(BARRE, LOW);
digitalWrite(DROITE, LOW);
}
}
if (counter == 3){
if(mode ==0)
{
digitalWrite(GAUCHE,LOW);
digitalWrite(BARRE,HIGH);
digitalWrite(DROITE,HIGH);
}
else
{
digitalWrite(GAUCHE, LOW);
digitalWrite(BARRE, LOW);
digitalWrite(DROITE, LOW);
}
}
if (counter == 4){
if(mode ==0)
{
digitalWrite(GAUCHE,HIGH);
digitalWrite(BARRE,HIGH);
digitalWrite(DROITE,HIGH);
}
else
{
digitalWrite(GAUCHE, LOW);
digitalWrite(BARRE, LOW);
digitalWrite(DROITE, LOW);
}
}
delay(1);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment