#define BLYNK_TEMPLATE_ID "TMPL6jTUwEUsw"
#define BLYNK_TEMPLATE_NAME "wokwi blynk"
#define BLYNK_AUTH_TOKEN "xNhymTbn33ePjuckfc4EBcMd-Zt2qK9b"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHTesp.h>
#include <Adafruit_NeoPixel.h>
#define PIN 14
#define NUM 26
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUM,PIN, NEO_GRB + NEO_KHZ800);
int r,g,b,data;
#define DHTPIN 15
DHTesp dht;
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
//ultrsonic
const int trigPin = 18;
const int echoPin = 19;
//define sound speed in cm/uS
#define SOUND_SPEED 0.034
#define CM_TO_INCH 0.393701
long duration;
float distanceCm;
float distanceInch;
BlynkTimer timer;
void setup() {
pixels.begin(); // initialize NeoPixel strip object (REQUIRED)
Serial.begin(115200);
dht.setup(DHTPIN, DHTesp::DHT22); // Initialize DHT sensor
Blynk.begin(auth, ssid, pass);
timer.setInterval(2000L, sendDHTData); // Send DHT data every 2 seconds
timer.setInterval(1000L, DistanceData); // Send DHT data every 1 seconds
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
// Start wifi - 2 parameters (ssid & password)
WiFi.begin(ssid, pass);
Serial.println("Connecting to WiFi");
// Connection status
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
// Connection Info
Serial.println("");
Serial.println("WiFi connected!");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
}
void DistanceData() {
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculate the distance
distanceCm = duration * SOUND_SPEED/2;
// Convert to inches
distanceInch = distanceCm * CM_TO_INCH;
// Prints the distance in the Serial Monitor
Serial.print("Distance (cm): ");
Serial.println(distanceCm);
// Write Distance Data into Blynk
// 2 parameters - 1. pin #, 2. Value
Blynk.virtualWrite(V1, distanceCm);
}
void sendDHTData() {
float t = dht.getTemperature();
float h = dht.getHumidity();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Blynk.virtualWrite(V2, t);
Blynk.virtualWrite(V3, h);
Serial.print("Humidity: ");
Serial.print(h);
Serial.print("%\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" °C");
}
void loop() {
Blynk.run();
timer.run();
}
BLYNK_WRITE(V4)
{
data = param.asInt();
Serial.println(data);
if(data==0)
{
static1(r,g,b);
}
else if(data==1)
{
animation1();
}
}
void static1(int r, int g, int b)
{
for(int i=0;i<=NUM;i++)
{
pixels.setPixelColor(i, pixels.Color(r,g,b));
pixels.show();
}
}
void animation1()
{
for(int i=0;i<NUM;i++)
{
pixels.setPixelColor(i, pixels.Color(255,0,0));
pixels.show();
delay(100);
}
for(int i=NUM;i>=0;i--)
{
pixels.setPixelColor(i, pixels.Color(0,255,0));
pixels.show();
delay(100);
}
for(int i=0;i<NUM;i++)
{
pixels.setPixelColor(i, pixels.Color(0,255,255));
pixels.show();
delay(100);
}
for(int i=NUM;i>=0;i--)
{
pixels.setPixelColor(i, pixels.Color(255,255,0));
pixels.show();
delay(100);
}
}