#define BLYNK_TEMPLATE_ID "??"
#define BLYNK_TEMPLATE_NAME "???"
#define BLYNK_AUTH_TOKEN "????"
char ssid[] = "Robocode_5G";
char pass[] = "1?????";
#define PIN_LASER 4
#define PIN_PIEZO 2
#define PIN_SENSOR 16 // D16=RX2
#define PIN_DHT 13
#define PIN_WS2812 18
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include "DHT.h"
#include <Adafruit_NeoPixel.h> // адресних світлодіодиків ws2812b
#define NUM_PIXELS 64
Adafruit_NeoPixel ws2812b(NUM_PIXELS, PIN_WS2812, NEO_GRB + NEO_KHZ800);
BlynkTimer timerBlynk;
DHT dht(PIN_SENSOR, DHT11);
void setup() {
// Налаштування пінів
pinMode(PIN_LASER, OUTPUT);
pinMode(PIN_PIEZO, OUTPUT);
pinMode(PIN_SENSOR, INPUT);
dht.begin();
Serial.begin(115200);
ws2812b.begin();
// Підключення до Wi-Fi та Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
// Таймер для регулярного оновлення даних
timerBlynk.setInterval(1000L, sendSensorData);
}
void loop() {
Blynk.run();
timerBlynk.run();
delay(250);
}
// Обробка віртуальних пінів для керування
BLYNK_WRITE(V0) { digitalWrite(PIN_LASER, param.asInt()); }
BLYNK_WRITE(V2) { digitalWrite(PIN_PIEZO, param.asInt()); }
int red = 0;
int green = 0;
int blue = 0;
BLYNK_WRITE(V4) { red = param.asInt();} // ловимо значення з блінка в змінну
BLYNK_WRITE(V5) {green= param.asInt();}
BLYNK_WRITE(V6) { blue= param.asInt();}
// Надсилання даних на Blynk
void sendSensorData() {
// Надсилання стану датчика дверей
Blynk.virtualWrite(V1, digitalRead(PIN_SENSOR));
if (digitalRead(PIN_SENSOR)) {
Blynk.logEvent("on", "Sensor 16 activated");
}
// Надсилання даних температури
Blynk.virtualWrite(V3, dht.readTemperature());
// Оновлення кольору на LED
updateLEDColor();
}
// Оновлення кольору LED
void updateLEDColor() {
for (int i = 0; i < NUM_PIXELS; i+=5) {
ws2812b.setPixelColor(i, ws2812b.Color(red, green, blue));
}
ws2812b.show();
}