// !!! PODMIEŃ PONIŻSZE 3 LINIJKI NA SWOJE WŁASNE Z BLYNK CLOUD !!!
#define BLYNK_TEMPLATE_ID "TMPL4ycrh9xyp"
#define BLYNK_TEMPLATE_NAME "Test123"
#define BLYNK_AUTH_TOKEN "45ATDp4Oq539M7lV7P3Jnw0e_KM43TQ6"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#include <ESP32Servo.h> // Nowa biblioteka dla serwa
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// Konfiguracja sprzętu
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#define LED_PIN 2
#define POT_PIN 34 // Pin analogowy potencjometru
#define SERVO_PIN 18 // Pin sygnałowy serwomechanizmu
BlynkTimer timer;
Servo myservo; // Obiekt reprezentujący serwomechanizm
// Funkcja wysyłająca dane ze WSZYSTKICH czujników co 2 sekundy
void sendSensors() {
// 1. Odczyt i wysyłka Temperatury (V0) i Wilgotności (V2)
float t = dht.readTemperature();
float h = dht.readHumidity();
if (!isnan(t) && !isnan(h)) {
Blynk.virtualWrite(V0, t);
Blynk.virtualWrite(V2, h);
}
// 2. Odczyt z czujnika analogowego (0-4095) i wysyłka na V3
int potValue = analogRead(POT_PIN);
Blynk.virtualWrite(V3, potValue);
}
// Odbiór komendy dla Diody LED (Przycisk - V1)
BLYNK_WRITE(V1) {
int pinValue = param.asInt();
digitalWrite(LED_PIN, pinValue);
}
// Odbiór komendy dla Serwomechanizmu (Suwak - V4)
BLYNK_WRITE(V4) {
int angle = param.asInt(); // Odbierz pożądany kąt z telefonu (0-180)
myservo.write(angle); // Ustaw ramię robota pod zadanym kątem
}
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
dht.begin();
// Inicjalizacja Serwa
myservo.attach(SERVO_PIN);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
// Wywołuj funkcję sendSensors co 2000 ms
timer.setInterval(2000L, sendSensors);
}
void loop() {
Blynk.run();
timer.run();
}