#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Adresa I2C a display-ului LCD
#define LCD_ADDRESS 0x27
// Numărul de pini GPIO utilizați pentru butoane
#define BUTTON_1_PIN 14
#define BUTTON_2_PIN 27
#define BUTTON_3_PIN 26
#define BUTTON_4_PIN 25
// Numărul de pini GPIO utilizați pentru LED-uri
#define LED_1_PIN 19
#define LED_2_PIN 18
#define LED_3_PIN 5
#define LED_4_PIN 17
// Obiectul pentru controlul display-ului LCD
LiquidCrystal_I2C lcd(LCD_ADDRESS, 16, 2);
void setup() {
// Inițializarea porturilor GPIO pentru butoane
pinMode(BUTTON_1_PIN, INPUT_PULLUP);
pinMode(BUTTON_2_PIN, INPUT_PULLUP);
pinMode(BUTTON_3_PIN, INPUT_PULLUP);
pinMode(BUTTON_4_PIN, INPUT_PULLUP);
// Inițializarea porturilor GPIO pentru LED-uri
pinMode(LED_1_PIN, OUTPUT);
pinMode(LED_2_PIN, OUTPUT);
pinMode(LED_3_PIN, OUTPUT);
pinMode(LED_4_PIN, OUTPUT);
// Inițializarea comunicării cu display-ul LCD
lcd.init();
lcd.backlight();
}
void loop() {
// Citirea stării butoanelor
int button1 = digitalRead(BUTTON_1_PIN);
int button2 = digitalRead(BUTTON_2_PIN);
int button3 = digitalRead(BUTTON_3_PIN);
int button4 = digitalRead(BUTTON_4_PIN);
// Setarea stării LED-urilor în funcție de butoane
digitalWrite(LED_1_PIN, button1);
digitalWrite(LED_2_PIN, button2);
digitalWrite(LED_3_PIN, button3);
digitalWrite(LED_4_PIN, button4);
// Afisarea stării butoanelor și a LED-urilor pe LCD
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Butoane: ");
lcd.print(button1);
lcd.print(button2);
lcd.print(button3);
lcd.print(button4);
lcd.setCursor(0,1);
lcd.print("LED-uri: ");
lcd.print(digitalRead(LED_1_PIN));
lcd.print(digitalRead(LED_2_PIN));
lcd.print(digitalRead(LED_3_PIN));
lcd.print(digitalRead(LED_4_PIN));
// Opritul procesorului pentru o clipă, pentru a reduce consumul de energie
delay(100);
}