#include "CTBot.h";
#include <WiFi.h>
#include <WiFiClient.h>
#include <ArduinoJson.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
#define Merah 14
#define Kuning 12
#define Hijau 13
#define buzzer 26
Adafruit_MPU6050 mpu;
String token = "6615261736:AAEQGpcZkXV8Z_dJWmbRxb-cOwJaS4ZfIew";
const int bot_id = 6242476867;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
CTBot mybot;
float jarak = 0;
int nada;
void ukur_jarak(){
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
int yKuadrat = a.acceleration.x * a.acceleration.x;
int xKuadrat = a.acceleration.y * a.acceleration.y;
int zKuadrat = a.acceleration.z * a.acceleration.z;
jarak = sqrt(yKuadrat + xKuadrat + zKuadrat) * 0.5;
/* Print out the values */
Serial.print("Magnitudo= ");
Serial.print(jarak);
Serial.print(" : ");
delay(100);
}
void output_jarak(){
if(jarak > 0 && jarak <= 3){
Serial.println("Aman");
digitalWrite(Hijau, HIGH);
delay(50);
digitalWrite(Hijau, LOW);
delay(50);
}
else if(jarak > 3 && jarak <= 5){
Serial.println("Hama Mendekat!");
digitalWrite(Kuning, HIGH);
delay(500);
digitalWrite(Kuning, LOW);
delay(250);
}
else if(jarak > 5 && jarak <= 7){
Serial.println("Ada Hama");
digitalWrite(Merah, HIGH);
delay(1000);
digitalWrite(Merah, LOW);
delay(100);
}
}
void pesan(){
TBMessage msg;
if(jarak < 200) {
tone(buzzer, nada);
mybot.sendMessage(bot_id, "Ada Hama Kurang dari 2 meter!");
if(mybot.getNewMessage(msg)) {
Serial.println("Pesan masuk: " + msg.text);
String pesan = msg.text;
if(pesan == "on") {
mybot.sendMessage(bot_id, "Alarm Dinyalakan");
}
if(pesan == "off") {
noTone(buzzer);
mybot.sendMessage(bot_id, "Alarm Dimatikan");
}
}
}
else {
noTone(buzzer);
}
}
void setup() {
Serial.begin(115200);
pinMode(Merah, OUTPUT);
pinMode(Hijau, OUTPUT);
pinMode(buzzer, OUTPUT);
Serial.println("Memulai Telegram Bot");
mybot.wifiConnect(ssid, pass);
mybot.setTelegramToken(token);
if(mybot.testConnection()) {
Serial.println("Koneksi Berhasil");
}
else {
Serial.println("Koneksi Gagal");
}
while (!mpu.begin()){
Serial.println("MPU6050 ready!");
delay(500);
}
}
void loop() {
digitalWrite(Merah, LOW);
digitalWrite(Kuning, LOW);
digitalWrite(Hijau, LOW);
ukur_jarak();
output_jarak();
pesan();
delay(500);
}