#define BLYNK_TEMPLATE_ID "???????????????????????????????????????"
#define BLYNK_TEMPLATE_NAME "???????????????????????????????????????"
#define BLYNK_AUTH_TOKEN "???????????????????????????????????????"
char ssid[] = "Robocode_5G";
char pass[] = "???????????????????????????????????????";
#define PIN_LASER 4
#define PIN_PIEZO 2
#define PIN_SENSOR 16 // D16=RX0
#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>
#define NUM_PIXELS 64
Adafruit_NeoPixel ws2812b(NUM_PIXELS, PIN_WS2812, NEO_GRB + NEO_KHZ800);
BlynkTimer timerBlynk;
DHT dht(PIN_SENSOR, DHT11);
// Колір LED
byte colorR = 0;
byte colorG = 0;
byte colorB = 0;
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();
}
// Обробка віртуальних пінів для керування
BLYNK_WRITE(V0) { digitalWrite(PIN_LASER, param.asInt()); }
BLYNK_WRITE(V2) { digitalWrite(PIN_PIEZO, param.asInt()); }
BLYNK_WRITE(V4) { colorR = param.asInt(); }
BLYNK_WRITE(V5) { colorG = param.asInt(); }
BLYNK_WRITE(V6) { colorB = 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++) {
ws2812b.setPixelColor(i, ws2812b.Color(colorR, colorG, colorB));
}
ws2812b.show();
}