Esp32_2led
// Pin assignments
const int led1 = 2; // LED 1 on GPIO2
const int led2 = 4; // LED 2 on GPIO4
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop() {
// Turn LED1 ON, LED2 OFF
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
delay(1000); // 1 second
// Turn LED1 OFF, LED2 ON
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
delay(1000); // 1 second
}
Esp32_2led_piezo
// Pin assignments
const int led1 = 2; // LED 1 on GPIO2
const int led2 = 4; // LED 2 on GPIO4
const int buzzer = 5; // Buzzer on GPIO5
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop() {
// LED1 ON, LED2 OFF, buzzer beeps at 1000Hz
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
tone(buzzer, 1000); // 1000Hz tone
delay(1000); // 1 second
// LED1 OFF, LED2 ON, buzzer off
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
noTone(buzzer); // Stop tone
delay(1000); // 1 second
}
Esp32_2led_ultrasonic
const int led1 = 2;
const int led2 = 4;
const int TRIG_PIN = 18;
const int ECHO_PIN = 19;
unsigned long lastSend = 0; // To handle timing
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
[Link](115200);
}
void loop() {
// Alternate LEDs every second
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
delay(1000);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
delay(1000);
// Check every 1 second
if (millis() - lastSend >= 1000) {
lastSend = millis();
// Ultrasonic trigger
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Measure echo
long duration = pulseIn(ECHO_PIN, HIGH);
float distance = (duration * 0.0343) / 2;
// Print result to Serial Monitor
[Link]("Distance: ");
[Link](distance);
[Link](" cm");
} // close if()
}
Esp32_2led_ultrasonic_blynk
Required library in Arduino
Required tasks
1. Create Blynk account
2. Create Blynk template complete with datastream
3. Download Blynk IoT on mobile phone
4. Create a device in Blynk IoT
#define BLYNK_TEMPLATE_ID "YOUR_BLYNK_TEMPLATE_ID" // tukar
#define BLYNK_TEMPLATE_NAME "YOUR_BLYNK_TEMPLATE_NAME" // tukar
#define BLYNK_AUTH_TOKEN "YOUR_BLYNK_AUTH_TOKEN" // tukar
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
// WiFi credentials
char ssid[] = "abcdef"; // tukar ikut hotspot/wifi masing2
char pass[] = "abcdef"; // tukar ikut hotspot/wifi masing2
// LED pin
const int led1 = 2;
const int led2 = 4;
// Ultrasonic pins
const int trigPin = 18;
const int echoPin = 19;
static unsigned long lastSend = 0;
// Virtual pins
#define VPIN_LED1 V0
#define VPIN_LED2 V1
#define VPIN_DISTANCE V2 // matching dengan virtual pin di Blynk
// Control LED1 from Blynk
BLYNK_WRITE(VPIN_LED1) {
int value = [Link]();
digitalWrite(led1, value);
}
// Control LED2 from Blynk
BLYNK_WRITE(VPIN_LED2) {
int value = [Link]();
digitalWrite(led2, value);
}
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
[Link](115200);
[Link](BLYNK_AUTH_TOKEN, ssid, pass);
}
void loop() {
[Link]();
// Read distance and send to Blynk every second
if (millis() - lastSend >= 1000) {
lastSend = millis();
// --- Ultrasonic reading ---
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
float distance = (duration * 0.0343) / 2; // cm
// Display distance in Serial Monitor and Blynk
[Link]("Distance: ");
[Link](distance);
[Link](" cm");
[Link](VPIN_DISTANCE, distance);
}
}
Esp32_2led_ultrasonic_blynk_lcd
Required library
Note: If text on LCD blurry, dah adjust contrast pun same juga, tukar power (VCC)
from 3.3V to 5V (VIN) on ESP32
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define BLYNK_TEMPLATE_ID "YOUR_BLYNK_TEMPLATE_ID" // tukar
#define BLYNK_TEMPLATE_NAME "YOUR_BLYNK_TEMPLATE_NAME" // tukar
#define BLYNK_AUTH_TOKEN "YOUR_BLYNK_AUTH_TOKEN" // tukar
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
// WiFi credentials
char ssid[] = "abcdef"; // tukar ikut hotspot/wifi masing2
char pass[] = "abcdef"; // tukar ikut hotspot/wifi masing2
// LED pins
const int led1 = 2;
const int led2 = 4;
// Ultrasonic pins
const int trigPin = 18;
const int echoPin = 19;
unsigned long lastSend = 0;
// Virtual pins
#define VPIN_LED1 V0
#define VPIN_LED2 V1
#define VPIN_DISTANCE V2
// Initialize LCD (I2C address 0x27 is common; use 0x3F if needed)
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Blynk LED control
BLYNK_WRITE(VPIN_LED1) {
int value = [Link]();
digitalWrite(led1, value);
}
BLYNK_WRITE(VPIN_LED2) {
int value = [Link]();
digitalWrite(led2, value);
}
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
[Link](115200);
[Link](BLYNK_AUTH_TOKEN, ssid, pass);
// LCD setup
[Link]();
[Link]();
[Link](0, 0);
[Link]("Ultrasonic Ready");
}
void loop() {
[Link]();
if (millis() - lastSend >= 1000) {
lastSend = millis();
// Trigger ultrasonic sensor
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Measure echo
long duration = pulseIn(echoPin, HIGH);
float distance = (duration * 0.0343) / 2;
// Display on Serial Monitor
[Link]("Distance: ");
[Link](distance);
[Link](" cm");
// Display on LCD
[Link]();
[Link](0, 0);
[Link]("Distance:");
[Link](0, 1);
[Link](distance);
[Link](" cm");
// Send to Blynk
[Link](VPIN_DISTANCE, distance);
}
}
Esp32_2led_ultrasonic_telegram_lcd
Note: If text on LCD blurry, dah adjust contrast pun same juga, tukar power (VCC)
from 3.3V to 5V (VIN) on ESP32
Required tasks
1. Create your Telegram bot
2. Save your Telegram bot token and chat id
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h> // perlu install
#include <Wire.h>
#include <LiquidCrystal_I2C.h> // LCD library
// LCD settings
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Wi-Fi credentials
char ssid[] = "abcdef"; // tukar ikut hotspot/wifi masing2
char pass[] = "abcdef"; // tukar ikut hotspot/wifi masing2
// Telegram credentials
const char* botToken = "abcdef"; // tukar
const String chatId = "123456"; // tukar
// Ultrasonic Sensor pins
const int trigPin = 18;
const int echoPin = 19;
// LED pins
const int led1 = 2;
const int led2 = 4;
// Telegram bot
WiFiClientSecure client;
UniversalTelegramBot bot(botToken, client);
// Timers
unsigned long lastCheck = 0;
unsigned long lastDistanceUpdate = 0;
float currentDistance = 0.0;
// --------- SETUP ----------
void setup() {
[Link](115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
// Initialize LCD
[Link](21, 22); // I2C SDA, SCL for ESP32
[Link]();
[Link]();
[Link](0, 0);
[Link]("Connecting WiFi");
// Connect to Wi-Fi
[Link](ssid, password);
while ([Link]() != WL_CONNECTED) {
delay(500);
[Link](".");
}
[Link]("\nWiFi Connected");
[Link]();
[Link](0, 0);
[Link]("WiFi Connected");
delay(1000);
[Link]();
// Fix SSL for Telegram
[Link]();
}
// --------- GET DISTANCE ----------
float getDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
return (duration * 0.0343) / 2;
}
// --------- HANDLE COMMAND ----------
void handleCommand(String cmd) {
[Link]();
if (cmd == "/led1on") {
digitalWrite(led1, HIGH);
[Link](chatId, "LED 1 is ON", "");
} else if (cmd == "/led1off") {
digitalWrite(led1, LOW);
[Link](chatId, "LED 1 is OFF", "");
} else if (cmd == "/led2on") {
digitalWrite(led2, HIGH);
[Link](chatId, "LED 2 is ON", "");
} else if (cmd == "/led2off") {
digitalWrite(led2, LOW);
[Link](chatId, "LED 2 is OFF", "");
} else if (cmd == "/status") {
String status = "LED 1: ";
status += (digitalRead(led1) == HIGH) ? "ON" : "OFF";
status += "\nLED 2: ";
status += (digitalRead(led2) == HIGH) ? "ON" : "OFF";
status += "\nDistance: ";
status += String(currentDistance, 2);
status += " cm";
[Link](chatId, status, "");
} else {
[Link](chatId, "Unknown
command!\nUse:\n/led1on\n/led1off\n/led2on\n/led2off\n/status", "");
}
}
// --------- LOOP ----------
void loop() {
// Update distance every 500ms
if (millis() - lastDistanceUpdate >= 500) {
currentDistance = getDistance();
lastDistanceUpdate = millis();
// Show on Serial Monitor
[Link]("Distance: ");
[Link](currentDistance);
[Link](" cm");
// Show on LCD
[Link]();
[Link](0, 0);
[Link]("Distance:");
[Link](0, 1);
[Link](currentDistance, 2);
[Link](" cm");
}
// Check Telegram messages every 1 second
if (millis() - lastCheck > 1000) {
int msgCount = [Link](bot.last_message_received + 1);
while (msgCount) {
for (int i = 0; i < msgCount; i++) {
String text = [Link][i].text;
String chat_id = [Link][i].chat_id;
if (chat_id == chatId) {
handleCommand(text);
}
}
msgCount = [Link](bot.last_message_received + 1);
}
lastCheck = millis();
}
}