In dit project heb i gewerkt aan een simpele state machine met een rgb lichtje.   

De werking

als je het aanzet dan veranderd hij random door de verschillende kleuren heen die ik heb aangemaakt met behulp van de functie case.

 

vervolgens als je op het knopje klikt dan wordt het licht van de led wit.  Deze blijft wit indien er niet nogmaals op het knopje gedrukt wordt. 

 

Als er dan voor de tweede keer op het knopje gedrukt wordt gaat de led weer random van kleur veranderen doormiddel van de schakeling russen de verschillende case's die ik heb aangemaakt

 

CODE 

 

int Kleur = 0;

int Rood = 9;

int Groen = 10;

int Blauw = 11;

int Tijd = 500;

int Tijd_2 = 100;

int BUTTON = 4 ; // button -> pin 4

 

int val = 0; // stores the state of the input pin

int old_val = 0; // stores the previous value of "val"

int state = 0; // 0 = LED off while 1 = LED on

 

void setup() {

 

pinMode(Rood ,OUTPUT);

pinMode(Groen ,OUTPUT);

pinMode(Blauw ,OUTPUT);

pinMode(BUTTON, INPUT);

 

}

 

void loop() {

// put your main code here, to run repeatedly:

int Kleur = random(6);

val = digitalRead(BUTTON);

 

if ((val == HIGH) && (old_val == LOW))

{

state = 1 - state;

delay(10);

}

old_val = val;

 

if (state == 1)

{

digitalWrite(Rood, HIGH);

digitalWrite(Groen, HIGH);

digitalWrite(Blauw, HIGH);

}

else

{

switch (Kleur) {

case 0:

digitalWrite(Rood, HIGH);

delay(Tijd);

analogWrite(Rood, LOW);

break;

 

case 1:

digitalWrite(Groen, HIGH);

delay(Tijd);

digitalWrite(Groen, LOW);

break;

 

case 2:

digitalWrite(Blauw, HIGH);

delay(Tijd);

digitalWrite(Blauw, LOW);

break;

 

case 3:

digitalWrite(Blauw, HIGH);

delay(Tijd);

digitalWrite(Blauw, LOW);

break;

 

case 4:

digitalWrite(Groen, HIGH);

digitalWrite(Rood, 160);

delay(Tijd);

digitalWrite(Groen, LOW);

digitalWrite(Rood, LOW);

break;

 

 

case 5:

digitalWrite(Rood, HIGH);

digitalWrite(Groen, HIGH);

digitalWrite(Blauw, HIGH);

delay(Tijd);

digitalWrite(Rood, LOW);

digitalWrite(Groen, LOW);

digitalWrite(Blauw, LOW);

break;

}

 

}

}