/*
Forum: https://forum.arduino.cc/t/button-saving-note-help/1163834/4
Wokwi: https://wokwi.com/projects/374972054606400513
*/
constexpr byte buttonL = 3;
constexpr byte buttonR = 6;
constexpr byte buttonP = 8;
constexpr byte buttonC = 10;
String Histo = "";
constexpr byte red = 4;
constexpr byte green = 2;
constexpr byte yellow = 9;
bool onPlayMode = false;
void setup() {
// put your setup code here, to run once:
pinMode(buttonL, INPUT_PULLUP);
pinMode(buttonR, INPUT_PULLUP);
pinMode(buttonP, INPUT_PULLUP);
pinMode(buttonC, INPUT_PULLUP);
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(yellow, OUTPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
if(digitalRead(buttonL) == LOW){
setLedsGRY(HIGH,LOW,LOW);
Histo = Histo + "1";
delay(20); // poor man's debouncing
while(!digitalRead(buttonL)){};
}
if(digitalRead(buttonR) == LOW){
setLedsGRY(LOW,HIGH,LOW);
Histo = Histo + "2";
delay(20); // poor man's debouncing
while(!digitalRead(buttonR)){};
}
if(digitalRead(buttonC) == LOW){
setLedsGRY(LOW,LOW,HIGH);
Histo = Histo + "3";
delay(20); // poor man's debouncing
while(!digitalRead(buttonC)){};
}
if(digitalRead(buttonP) == LOW){
if(onPlayMode==false){
onPlayMode = true;
PlayHisto();
}
}
}
void setLedsGRY(boolean g, boolean r, boolean y){
digitalWrite(green,g);
digitalWrite(red,r);
digitalWrite(yellow,y);
}
void PlayHisto(){
Serial.println("Play Histo");
setLedsGRY(LOW,LOW,LOW);
delay(500);
for (int i = 0; i <= (Histo.length()-1); i++) {
setLedsGRY(LOW,LOW,LOW);
Histo.substring(i, (i+1));
Serial.println(Histo.substring(i, (i+1)));
if(Histo.substring(i, (i+1))=="1"){
setLedsGRY(HIGH,LOW,LOW);
delay(500);
}
if(Histo.substring(i, (i+1))=="2"){
setLedsGRY(LOW,HIGH,LOW);
delay(500);
}
if(Histo.substring(i, (i+1))=="3"){
setLedsGRY(LOW,LOW, HIGH);
delay(500);
}
if((i+1)==Histo.length()){
onPlayMode = false;
setLedsGRY(HIGH,HIGH,HIGH);
delay(500);
setLedsGRY(LOW,LOW,LOW);
}
}
}