14. tellen en schakelen


tellen en schakelen
  
/* dezelfde knop wordt gebruik om verschillende toestanden in te schakelen.
Deze code kan ook als uitgangssituatie worden gebruikt om bv het aantal pulsen te tellen van een sensor of het aantal keren dat een sensor 'hoog' of 'laag' registreert en vervolgens moet schakelen. 
*/

// constanten

#define knopPin 2    
#define ledPin 13
# define ledPin2 5   

// variabelen 

int drukKnopTeller = 0;   // teller aantal keren drukknop indrukken
int knopStatus = 0;         // status van de drukknop
int laatsteKnopStatus = 0;     // laatste status van de drukknop


void setup() {
  
  pinMode(knopPin, INPUT); // drukknopingang pin 2
  pinMode(ledPin, OUTPUT); // LED als uitgang op pin 13
  pinMode(ledPin2, OUTPUT); // LED als uitgang op pin 5
  Serial.begin(9600);
}


void loop() {
   knopStatus = digitalRead(knopPin); // lees de digitale waarde van de drukknopingang pin 2

    if (knopStatus != laatsteKnopStatus) // als....laatste knopstatus niet gelijk is aan de eerdere knopstatus dan voer uit: 
    
    {
        if (knopStatus == HIGH) // als de knopstatus 'hoog' is maw als de knop is ingedrukt: 
        {
        drukKnopTeller++; // optellen aantal keren dat er op de knop is gedrukt
      Serial.println("aan"); 
      Serial.print("aantal keren op de knop gedrukt: ");
      Serial.println(drukKnopTeller);
    } else {
      Serial.println("uit");
    }
      delay(50); // korte vertraging om contactdender tegen te gaan
  }
   laatsteKnopStatus = knopStatus; // de laatste status van de knop opslaan
   if (drukKnopTeller == 2) 
   {
   digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }
  if (drukKnopTeller == 5) 
   {
   digitalWrite(ledPin2, HIGH);
  } else {
    digitalWrite(ledPin2, LOW);
  }
}


code voor het gebruik van een aan- en uitschakelaar met toestandswitsch:

int i=0;
int a=0;

void setup()
{
  Serial.begin(9600);
  pinMode(4, INPUT);
  pinMode(6, OUTPUT);
}

void loop()
{
 if (i == 0){ digitalWrite(6, LOW);}  else{digitalWrite(6, HIGH);}

 if (i == 0 && digitalRead(4) == HIGH && a == 1){i = 1;} else{} // LED moet aan
 if (i == 1 && digitalRead(4) == HIGH && a == 0){i = 0;} else{} // LED moet uit
 
 if (i == 0 && digitalRead(4) == LOW){a = 1;} else{} // Test LED=uit en S4 is losgelaten
 if (i == 1 && digitalRead(4) == LOW){a = 0;} else{} // Test LED=aan en S4 is losgelaten
 
 
 Serial.print("a=");
 Serial.print(a);
 Serial.print(" i=");
 Serial.print(i);
 Serial.print(" I4=");
 Serial.println(digitalRead(4));
 
}