#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
// Define pin connections for Nokia 5110 display
#define RST_PIN D2
#define CE_PIN D3
#define DC_PIN D4
#define DIN_PIN D11
#define CLK_PIN D13
// Initialize display
Adafruit_PCD8544 display = Adafruit_PCD8544(CLK_PIN, DIN_PIN, DC_PIN, CE_PIN, RST_PIN);
// Multiplexor - corectat conform imaginii
const int S0 = 7; // D7
const int S1 = 8; // D8
const int S2 = 9; // D9
const int S3 = 10; // D10
const int muxSIG = A0;
const int muxChannel = 0; // citim canalul 0
// Releu & LED
const int relayPin = 8;
const int ledPin = D6; // LED pe pinul D6
// Timing
unsigned long previousBlink = 0;
bool ledState = false;
void setup() {
Serial.begin(115200);
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(relayPin, OUTPUT);
// Initialize the Nokia 5110 display
display.begin();
display.setContrast(50);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(BLACK);
display.setCursor(0, 0);
display.println("Salut!");
display.display();
digitalWrite(relayPin, LOW); // start OFF
}
void selectMuxChannel(int channel) {
digitalWrite(S0, channel & 1);
digitalWrite(S1, (channel >> 1) & 1);
digitalWrite(S2, (channel >> 2) & 1);
digitalWrite(S3, (channel >> 3) & 1);
}
void loop() {
// 1. Citim valoarea analogă de pe multiplexer canal 0
selectMuxChannel(muxChannel);
int sensorValue = analogRead(muxSIG);
// 2. Decidem starea releului
bool relayOn = sensorValue >= 500;
digitalWrite(relayPin, relayOn ? HIGH : LOW);
// 3. LED blink dacă releul e OFF
if (!relayOn) {
if (millis() - previousBlink >= 100) {
ledState = !ledState;
digitalWrite(ledPin, ledState);
previousBlink = millis();
}
} else {
digitalWrite(ledPin, LOW);
}
// 4. Afișăm pe display
display.clearDisplay();
display.setCursor(0, 0);
display.print("Valoare: ");
display.println(sensorValue);
display.print("Releu: ");
display.println(relayOn ? "ON" : "OFF");
display.display();
delay(10);
}
Loading
nokia-5110
nokia-5110