#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
const int buttonPin = 2;
const int ledPin1 = 1;
const int ledPin2 = 3;
const int ledPin3 = 4;
const int numModes = 4;
int currentMode = 0;
void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
lcd.init();
lcd.backlight();
// Print something
lcd.setCursor(0, 0);
lcd.print("Workwi Plus+");
lcd.setCursor(0, 1);
lcd.print("Light Mode");
delay(1000);
lcd.clear();
currentMode = 0;
updateLEDs();
updateLCD();
}
void loop() {
if (digitalRead(buttonPin) == LOW) {
delay(250); // Simple debounce
currentMode = (currentMode + 1) % numModes;
updateLEDs();
updateLCD();
}
}
void updateLEDs() {
switch (currentMode) {
case 0:
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, HIGH);
break;
case 1:
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
break;
case 2:
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, HIGH);
break;
case 3:
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
break;
}
}
void updateLCD() {
lcd.setCursor(0, 0);
lcd.print("Mode: ");
lcd.print(currentMode + 1);
}