const int NUM_DRINKS = 4;
const int drinkButton[NUM_DRINKS] = {6,7,8,9};
const int drinksSelectedButton = 10;
bool drinkSelected[NUM_DRINKS];
byte lastDrinkButtonStatus[NUM_DRINKS];
void setup()
{
Serial.begin(115200);
Serial.println("drinks on the house.\n");
pinMode(drinksSelectedButton, INPUT_PULLUP);
for (int i = 0; i < NUM_DRINKS; i++)
{
drinkSelected[i] = false;
pinMode(drinkButton[i], INPUT_PULLUP);
lastDrinkButtonStatus[i] = digitalRead(drinkButton[i]);
}
}
void loop()
{
static byte lastDrinksSelectedStatus = digitalRead(drinksSelectedButton);
byte drinksSelectedStatus = digitalRead(drinksSelectedButton);
// Check to see if any drinks have been selected
/*
for (int i = 0; i < NUM_DRINKS; i++)
if (!digitalRead(drinkButton[i])) drinkSelected[i]) = true;
*/
for (int i = 0; i < NUM_DRINKS; i++) {
byte drinkButtonStatus = digitalRead(drinkButton[i]);
if (drinkButtonStatus != lastDrinkButtonStatus[i]) {
delay(50); // debounce
if (drinkButtonStatus == LOW) {
if (!drinkSelected[i]) {
drinkSelected[i] = true;
Serial.print("mark selected ");
Serial.println(i + 1);
}
else {
drinkSelected[i] = false;
Serial.print("unmark ");
Serial.println(i + 1);
}
}
lastDrinkButtonStatus[i] = drinkButtonStatus;
}
}
if (drinksSelectedStatus != lastDrinksSelectedStatus)
{
delay(50); // debounce
if (drinksSelectedStatus == LOW)
{
Serial.println("Drinks Selected:");
displayDrinks();
}
lastDrinksSelectedStatus = drinksSelectedStatus;
}
}
void displayDrinks()
{
for (int i = 0; i < NUM_DRINKS; i++)
{
if (drinkSelected[i])
{
Serial.print(i+1);
Serial.print(" ");
drinkSelected[i] = false;
}
}
Serial.println("");
}