0% found this document useful (0 votes)
14 views14 pages

Aot Coding

simple aot coding for engineering

Uploaded by

Nurrun Iman
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views14 pages

Aot Coding

simple aot coding for engineering

Uploaded by

Nurrun Iman
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 14

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();
}
}

You might also like