#include "WiFi.h"
#include <ESP32Servo.h>
#include <BlynkSimpleEsp32.h>
#include <HX711.h>
//#include <RTClib.h>
#define trigPin 5
#define echoPin 18
#define buzzer 4
//#define DOUT 19
//#define CLK 18
//#define calibration_factor 410.00
int sound = 500;
int pos = 0;
int PIR = 2;
//char dataHari[7][12] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"};
//String hari;
//int tanggal, bulan, tahun, jam, menit, detik;
//float suhu;
//int GRAM;
Servo myservo;
//RTC_DS3231 rtc;
////HX711 scale;
// define the variables for the WiFi and Blynk connection
#define BLYNK_TEMPLATE_ID "TMPL6QUr8_Vgq"
#define BLYNK_TEMPLATE_NAME "Automatic Cat Feeder"
#define BLYNK_AUTH_TOKEN "4oDoHEHCHWL6AaYNcvlij3X51jZkBpvT"
char auth[] = "4oDoHEHCHWL6AaYNcvlij3X51jZkBpvT";
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
void setup() {
//if (! rtc.begin()) {
//Serial.println("RTC Tidak Ditemukan");
//Serial.flush();
//abort();
//}
//Atur Waktu
//rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
Serial.begin(115200);
Serial.println("Initializing WiFi...");
WiFi.mode(WIFI_STA);
Serial.println("Setup done!");
pinMode(PIR,INPUT);
myservo.attach(15);
Serial.begin(115200);
//ultrasonik
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzer, OUTPUT);
//scale.begin(DOUT,CLK);
//scale.set_scale(calibration_factor);
//scale.tare();
}
void loop() {
//GRAM = scale.get_units(), 4;
//scale.set_scale(calibration_factor);
//Serial.println(GRAM);
Serial.println("Scanning...");
//wifi scanning
int n = WiFi.scanNetworks();
Serial.println("Scan done!");
if (n == 0) {
Serial.println("No networks found.");
} else {
Serial.println();
Serial.print(n);
Serial.println(" networks found");
for (int i = 0; i < n; ++i) {
// Print SSID and RSSI for each network found
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.RSSI(i));
Serial.print(")");
Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN) ? " " : "*");
delay(10);
}}
//servo dan pir
pos = digitalRead(PIR);
if (pos == HIGH) {
delay(300);
myservo.write(90);
Serial.println("Feeding!!");
} else {
myservo.write(0);
}
//ultrasonik dan buzzer
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1;
if (distance >= 17 && distance <= 2) {
digitalWrite(buzzer, HIGH);
delay(2000);
}
else {
digitalWrite(buzzer, LOW);
delay(2000);
}
if (distance > 17 || distance <= 2){
Serial.print(distance);
Serial.println(" cm");
noTone(buzzer);
}
else {
Serial.print(distance);
Serial.println(" cm");
Serial.println("Makanan Hampir Habis, Petugas Harap untuk Mengisi Secepatnya!!");
tone(buzzer, sound);
}
delay(300);
//DateTime now = rtc.now();
//hari = dataHari[now.dayOfTheWeek()];
//tanggal = now.day(), DEC;
//bulan = now.month(), DEC;
//tahun = now.year(), DEC;
//jam = now.hour(), DEC;
//menit = now.minute(), DEC;
//detik = now.second(), DEC;
//suhu = rtc.getTemperature();
//Serial.println(String() + hari + ", " + tanggal + "-" + bulan + "-" + tahun);
//Serial.println(String() + jam + ":" + menit + ":" + detik);
// Serial.println(String() + "Suhu: " + suhu + " C");
// Serial.println();
//kondisi
// if (jam == 7 & menit == 59 & detik == 1){
// kasih_pakan(1);
// }
// if (jam == 10 & menit == 59 & detik == 1){
// Serial.println("Waktunya Pemberian Vitamin/Wet Food!!");
// }
//if (jam == 13 & menit == 59 & detik == 1){
//kasih_pakan(1);
//}
//if (jam == 17 & menit == 59 & detik == 1){
// Serial.println("Waktunya Pemberian Vitamin/Wet Food!!");
//}
//if (jam == 20 & menit == 59 & detik == 1){
//kasih_pakan(3);
// }
//}
//void kasih_pakan(int jumlah){
//for (int i = 1; i <= jumlah; i++){
//myservo.write(150);
//delay(100);
//myservo.write(0);
//delay(100);
//}
}