/*
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;
constexpr int debounce = 100; // [ms]
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(115200);
}
void loop() {
// put your main code here, to run repeatedly:
if (digitalRead(buttonL) == LOW) {
setLedsGRY(HIGH, LOW, LOW);
delay(debounce); // poor man's debouncing
while (digitalRead(buttonL) == LOW) { delay(10);};
Histo = Histo + "1";
}
if (digitalRead(buttonR) == LOW) {
setLedsGRY(LOW, HIGH, LOW);
delay(debounce); // poor man's debouncing
while (digitalRead(buttonR) == LOW) {delay(10);};
Histo = Histo + "2";
}
if (digitalRead(buttonC) == LOW) {
setLedsGRY(LOW, LOW, HIGH);
delay(debounce); // poor man's debouncing
while (digitalRead(buttonC) == LOW) {delay(10);};
Histo = Histo + "3";
}
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");
Serial.println(Histo);
Serial.println(Histo.length());
Serial.println("----------------");
setLedsGRY(LOW, LOW, LOW);
delay(500);
for (int i = 0; i < Histo.length(); i++) {
char c = Histo[i];
Serial.print(c);
switch (c) {
case '1' : setLedsGRY(HIGH, LOW, LOW);
break;
case '2' : setLedsGRY(LOW, HIGH, LOW);
break;
case '3' : setLedsGRY(LOW, LOW, HIGH);
break;
}
delay(500);
}
Serial.println();
onPlayMode = false;
setLedsGRY(HIGH, HIGH, HIGH);
delay(500);
setLedsGRY(LOW, LOW, LOW);
}