// PROJECT :DoWhileMenu // PURPOSE :Example for review of menu concepts with 2021 ICS3U ACES // COURSE :ICS3U // AUTHOR :C. D'Arcy // DATE :2021 04 24 // MCU :* // STATUS :Working // REFERENCE:http://darcy.rsgc.on.ca/ACES/TEI3M/ArduinoCode/TowardsBetterCode.html#menus void setup() { Serial.begin(9600); } void showMenu() { Serial.println("A.\t Option A"); Serial.println("B.\t Option B"); Serial.println("C.\t Option C"); Serial.println("X.\t Exit"); } void loop() { char ch; do { showMenu(); while (!Serial.available()); ch = Serial.read(); switch (ch) { case 'A': case 'a': Serial.println(F("Option A Selected\n")); break; case 'B': case 'b': Serial.println(F("Option B Selected\n")); break; case 'C': case 'c': Serial.println(F("Option C Selected\n")); break; case 'X': case 'x': Serial.println(F("Exit Selected.\n")); break; default: Serial.println(F("Incorrect Selection. Try Again.\n")); break; } Serial.read(); //remove \n from the input buffer and throw away } while (ch != 'X' && ch != 'x'); // } while (!(ch == 'X' || ch == 'x') ); //Alternatively, apply DeMorgan's Law Serial.println(F("Session terminated.")); while (1); //hold... }