Wersja 1.0
This commit is contained in:
80
ESP32/LampkiBalkon/LampkiBalkon.ino
Normal file
80
ESP32/LampkiBalkon/LampkiBalkon.ino
Normal file
@@ -0,0 +1,80 @@
|
||||
#include <Wire.h>
|
||||
#include <BH1750.h>
|
||||
|
||||
#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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user