/*Informatyka PUW 21_22_gr.D1_SW_Sterowanie_diod_LED
Wykonal Radoslaw Nawrot_150064*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Adres I2C wyświetlacza LCD
const int buttonPin = 7; // Pin przycisku
const int redLED = 2; // Pin czerwonej diody LED
const int yellowLED = 3; // Pin żółtej diody LED
const int greenLED = 4; // Pin zielonej diody LED
int buttonState = HIGH; // Stan przycisku (HIGH = nie naciśnięty)
int lastButtonState = HIGH; // Poprzedni stan przycisku
unsigned long lastDebounceTime = 0; // Czas ostatniego odbicia styków przycisku
unsigned long debounceDelay = 50; // Opóźnienie odbicia styków przycisku
void setup() {
Wire.begin();
lcd.begin(16, 2);
lcd.backlight();
pinMode(buttonPin, INPUT_PULLUP);
pinMode(redLED, OUTPUT);
pinMode(yellowLED, OUTPUT);
pinMode(greenLED, OUTPUT);
}
void loop() {
int reading = digitalRead(buttonPin);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == LOW) {
// Obsługa naciśnięcia przycisku
updateLEDs();
}
}
}
lastButtonState = reading;
}
void updateLEDs() {
static int ledsState = 0; // Aktualny stan diod
ledsState = (ledsState + 1) % 6; // Przełączanie między 0-5
// Wyłącz wszystkie diody
digitalWrite(redLED, LOW);
digitalWrite(yellowLED, LOW);
digitalWrite(greenLED, LOW);
// Włącz diody zgodnie z aktualnym stanem
if (ledsState == 0) {
digitalWrite(redLED, HIGH);
lcd.clear();
lcd.print("Czerwony ON");
} else if (ledsState == 1) {
lcd.clear();
lcd.print("Czerwony OFF");
} else if (ledsState == 2) {
digitalWrite(yellowLED, HIGH);
lcd.clear();
lcd.print("Zolty ON");
} else if (ledsState == 3) {
lcd.clear();
lcd.print("Zolty OFF");
} else if (ledsState == 4) {
digitalWrite(greenLED, HIGH);
lcd.clear();
lcd.print("Zielony ON");
} else if (ledsState == 5) {
lcd.clear();
lcd.print("Zielony OFF");
}
}