#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pin definitions
const int relay1Pin = 3; // D3
const int relay2Pin = 4; // D4
const int buttonPin = 7; // D7
// Variables
int buttonState = 0;
int lastButtonState = HIGH;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;
int relayState = 0;
void setup() {
// Initialize pins
pinMode(relay1Pin, OUTPUT);
pinMode(relay2Pin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
// Initialize relays to off
digitalWrite(relay1Pin, HIGH);
digitalWrite(relay2Pin, HIGH);
// Initialize LCD
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Relay Control");
lcd.setCursor(0, 1);
lcd.print("Both relays OFF");
}
void loop() {
int reading = digitalRead(buttonPin);
// Check for button state change (debounce)
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == LOW) {
relayState = (relayState + 1) % 3;
updateRelays();
updateDisplay();
}
}
}
lastButtonState = reading;
}
void updateRelays() {
digitalWrite(relay1Pin, HIGH);
digitalWrite(relay2Pin, HIGH);
switch (relayState) {
case 1:
digitalWrite(relay1Pin, LOW);
break;
case 2:
digitalWrite(relay2Pin, LOW);
break;
}
}
void updateDisplay() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Relay Status:");
lcd.setCursor(0, 1);
switch (relayState) {
case 0:
lcd.print("Both relays OFF");
break;
case 1:
lcd.print("Relay 1 ON ");
break;
case 2:
lcd.print("Relay 2 ON ");
break;
}
}
Вот скрипт, при компиляции все хорошо, все загружает, при нажатии кнопки все работает
Проблема в том что не выводится ничего на экран
Библиотека установлена, экран подключен, может быть ошибка в скрипте?
На скобки не обращайте внимания, в ардуино все стоит на своих местах