From f2691d62f9c0624840821e99f5602f533892333a Mon Sep 17 00:00:00 2001 From: sieja Date: Tue, 29 Jul 2025 18:05:33 +0200 Subject: [PATCH] Wersja 1.0 --- ESP32/LampkiBalkon/LampkiBalkon.ino | 80 +++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 ESP32/LampkiBalkon/LampkiBalkon.ino diff --git a/ESP32/LampkiBalkon/LampkiBalkon.ino b/ESP32/LampkiBalkon/LampkiBalkon.ino new file mode 100644 index 0000000..632bde0 --- /dev/null +++ b/ESP32/LampkiBalkon/LampkiBalkon.ino @@ -0,0 +1,80 @@ +#include +#include + +#define PinLED 2 // on-board LED +#define IN1 32 +#define IN2 14 + +BH1750 lightMeter; + +void setup() { + Serial.begin(9600); + Wire.begin(); + lightMeter.begin(); + + pinMode(IN1, OUTPUT); + pinMode(IN2, OUTPUT); + pinMode(PinLED, OUTPUT); +} + +void pulsujNaprzemiennie(int czasSekundy) { + const int steps = 150; + int delayPerStep = (czasSekundy * 1000) / (2 * steps); // ms + + for (int i = 0; i <= steps; i++) { + float phase = (float)i / steps; + float brightness1 = 1.0 - phase; + float brightness2 = phase; + + int t_on1 = (int)(brightness1 * 2000); + int t_on2 = (int)(brightness2 * 2000); + + digitalWrite(IN1, HIGH); + digitalWrite(IN2, LOW); + delayMicroseconds(t_on1); + + digitalWrite(IN1, LOW); + digitalWrite(IN2, HIGH); + delayMicroseconds(t_on2); + + digitalWrite(IN1, LOW); + digitalWrite(IN2, LOW); + delay(delayPerStep - 4); + } + + for (int i = steps; i >= 0; i--) { + float phase = (float)i / steps; + float brightness1 = 1.0 - phase; + float brightness2 = phase; + + int t_on1 = (int)(brightness1 * 2000); + int t_on2 = (int)(brightness2 * 2000); + + digitalWrite(IN1, HIGH); + digitalWrite(IN2, LOW); + delayMicroseconds(t_on1); + + digitalWrite(IN1, LOW); + digitalWrite(IN2, HIGH); + delayMicroseconds(t_on2); + + digitalWrite(IN1, LOW); + digitalWrite(IN2, LOW); + delay(delayPerStep - 4); + } +} + +void loop() { + uint16_t lux = lightMeter.readLightLevel(); + Serial.print("Light: "); + Serial.print(lux); + Serial.println(" lx"); + + if (lux < 10) { + digitalWrite(PinLED, LOW); + pulsujNaprzemiennie(5); // cykl trwa teraz 5 sekund + } else { + digitalWrite(PinLED, HIGH); + delay(5 000); + } +}