/*
* Erik Hansen
* April 2, 2023
* Lab 6 Project
*/
// include the library code:
#include <LiquidCrystal.h>
// Declaration
LiquidCrystal lcd(12, 11, 10, 9, 8, 7); // LCD Pins (7-10 = Data 4-7, 11-12 = Enable/Read)
// Values/Variables
unsigned long displaySec = 59; // Seconds
unsigned long displayMin = 0; // Minutes
unsigned long prevMillis = 0;
unsigned long currMillis = 0;
unsigned long elapsedMillis = 0;
void setup() {
// Set up LCD (rows/columns)
lcd.begin(16, 2);
digitalWrite(LED_BUILTIN, LOW); // turn off the LED
}
void loop() {
// Countdown display
currMillis = millis();
elapsedMillis = currMillis - prevMillis;
// Countdown
if (elapsedMillis >= 1000) {
prevMillis = currMillis;
displaySec--;
// Check when 0 seconds remain
if (displaySec == 0) {
displaySec = 59;
// Check if 0 minutes remain
if (displayMin == 0) {
displayMin = 2;
displaySec = 59;
}
displayMin--;
}
// Check if the countdown has reached 0:00
if (displayMin == 0 && displaySec == 0) {
digitalWrite(LED_BUILTIN, HIGH);
while (true) {} // Enter an infinite loop
}
// LCD print
// Countdown in millis (Line 1)
lcd.setCursor(0, 0);
lcd.print((displayMin * 60 + displaySec) * 1000);
// Countdown in seconds (Line 2)
lcd.setCursor(0, 1);
lcd.print(displayMin);
lcd.print(":");
if (displaySec < 10) {
lcd.print("0"); // add a leading zero if necessary
}
lcd.print(displaySec);
}
}