Outils pour utilisateurs

Outils du site


start:arduino:bpscl

Bouton poussoir en interrupteur sans clignotement

Code Arduino

BPsansClig.ino
const int Led1= 2;
const int Bp1  =3;
int MemLed1 =0;
int MemBp1 =0;
int tempo =50;
 
void DebugVar(int nb) {
  Serial.print("temps = ");Serial.println(nb); 
  Serial.print("Bp1 =");Serial.println(digitalRead(Bp1));
  Serial.print("MemBp1 =");Serial.println(MemBp1);
  Serial.print("MemLed1 =");Serial.println(MemLed1);
  delay(250);
}  
 
 
void setup()
{
  Serial.begin(9600);
  pinMode(Led1, OUTPUT);
  pinMode(Bp1, INPUT);
  digitalWrite(Led1, LOW);
  //DebugVar(10);
 
  }   
 
void loop() {
 
  int valeurBp1 = digitalRead(Bp1);// On lit la valeur de Bp1 au début de la boucle
  delay(tempo);
 
  /*
  //Temps 0
  if (valeurBp1 == 0 && MemBp1 ==0 && MemLed1 == 0) {// etat present 
      digitalWrite(Led1, LOW);MemBp1 =0;MemLed1 = 0; // Etat futur
      //delay(tempo);DebugVar(0);
  } 
  */  
  //Temps  1
  if (valeurBp1 == 1 && MemBp1 ==0 && MemLed1 == 0) {
      digitalWrite(Led1, HIGH);MemBp1 =1;MemLed1 = 1;  
      //delay(tempo);DebugVar(1);   
  }   
  //Temps 2
  if (valeurBp1 == 0 && MemBp1 ==1 && MemLed1 == 1) {
      digitalWrite(Led1, HIGH);MemBp1 =0;MemLed1 = 1;  
      //delay(tempo);DebugVar(2);
  }
  //Temps 3
  if (valeurBp1 == 1 && MemBp1 ==0 && MemLed1 == 1) {
      digitalWrite(Led1, LOW);MemBp1 =1;MemLed1 = 0;  
      //delay(tempo);DebugVar(3);
  }
  //Temps 4
  if (valeurBp1 == 0 && MemBp1 ==1 && MemLed1 == 0) {
      digitalWrite(Led1, LOW);MemBp1 =0;MemLed1 = 0;  
      //delay(tempo);DebugVar(4);
  }
 
}

Diagramme BP sans clignotement

Explication Diagramme BP

Explications diagramme bouton poussoir en interrupteur sans clignotement

Le bouton poussoir est cablé avec un pullup à GND ( plus facile à comprendre …)

Le bouton poussoir est actif quand on envoie un + 5V ( 1 ) sur la broche D3 de l'arduino

T0 : le bp1 est inactif = 0 , tous le reste est à 0.

T1 : le Bp1 est actif = 1 ⇒ La memoire du Bp1 est à 0 ( voir BP1 T0), Led1 devient allumée = 1 ( 1er front montant de Bp1), la memoire de la Led1 est = 0 ( voir Led1 T0).

T2 : le Bp1 est inactif = 0 ⇒ La memoire du Bp1 est à 1 ( voir Bp1 T1), Led1 reste allumée = 1 ( c'est le but) , la memoire de la Led1 est = 1 ( voir Led1 T1).

T3 : le Bp1 est actif = 1 ⇒ La memoire du Bp1 est à 0 ( voir Bp1 T2), Led1 est eteinte = 0 ( 2eime fronts montant de Bp1) , la memoire de la Led1 est = 1 ( voir Led1 T2).

T4 : le Bp1 est inactif = 0 ⇒ La memoire du Bp1 est à 1 ( voir Bp1 T3), Led1 est eteinte = 0 ( Le Led1 doit rester eteinte) , la memoire de la Led1 est = 0 ( voir Led1 T3).

On revient à T0

/home/chanteri/www/fablab37110/data/pages/start/arduino/bpscl.txt · Dernière modification : 2023/01/27 16:08 de 127.0.0.1