MEMBUAT ALAT PAKAN IKAN OTOMATIS
DENGAN ARDUINO DAN RTC DS3231
- Arduino UNO
- RTC DS3231
- LCD 16x12 i2C
- Motor Servo
//BY: RISKI PERMADANI
//YOUTUBE CHANNEL
#define MakanPertama DateTime(0, 1, 1, 7, 0, 0, 0)//Disetting jam 7 pagi >> ubah ini untuk settingan waktu makan pertama
#define MakanKedua DateTime(0, 1, 1, 17, 0, 0, 0)//Disetting jam 5 sore >> ubah ini untuk settingan waktu makan kedua
#define pinservo 3
#define waktuservo_ON 1000//milidetik
#define servo_ON 20//derajat
#define servo_OFF 60//derajat
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "RTC_DS3231_RP.h"
#include <Servo.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2);//coba juga 0x27
Servo iniservo;
char weekDay[][7] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu" };
byte detikSebelumnya;
char buf[17];
void setup() {
Serial.begin(9600);
Serial.println("Pakan Ikan Otomatis");//untuk tampilan awal
Serial.println("By:RISKI PERMADANI");//untuk tampilan awal
iniservo.attach(pinservo);
iniservo.write(servo_OFF);
Wire.begin();
rtc.begin();
Wire.beginTransmission(0x3F);
if (Wire.endTransmission())
{
lcd = LiquidCrystal_I2C(0x27, 16, 2);
}
lcd.begin();
lcd.backlight();
lcd.setCursor(3, 0);
lcd.print("PAKAN IKAN");//untuk tampilan nama project
lcd.setCursor(4, 1);
lcd.print("OTOMATIS");//untuk tampilan nama project
delay(3000);
lcd.clear();
lcd.setCursor(6, 0);
lcd.print("RISKI");//untuk tampilan nama
lcd.setCursor(4, 1);
lcd.print("PERMADANI");//untuk tampilan nama
delay(3000);
lcd.clear();
Serial.println("Sistem mulai");
sprintf(buf, "Set waktu 1 = %02d:%02d (%lu)", MakanPertama.hour(), MakanPertama.minute(), MakanPertama.get());
Serial.println(buf);
sprintf(buf, "Set waktu 2 = %02d:%02d (%lu)", MakanKedua.hour(), MakanKedua.minute(), MakanKedua.get());
Serial.println(buf);
}
void loop()
{
DateTime now = rtc.now();
rtc.convertTemperature();
lcd.setCursor(9, 1);
lcd.print(rtc.getTemperature());//untuk tampilan Suhu
lcd.print("'C");//untuk tampilan derajat C
lcd.setCursor(0, 0);
lcd.print(weekDay[now.dayOfWeek()]);//untuk tampilan hari
lcd.setCursor(6, 0);
lcd.print(now.date(), DEC); //untuk tampilan tanggal
lcd.print("/");
lcd.print(now.month(), DEC);//untuk tampilan bulan
lcd.print("/");
lcd.print(now.year(), DEC);//untuk tampilan tahun
if (detikSebelumnya != now.second())
{
sprintf(buf, "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
lcd.setCursor(0, 1);
lcd.print(buf);
Serial.print(buf);
detikSebelumnya = now.second();
uint32_t epoch = now.get() % 86400;//hanya jam menit detik
if ((epoch == MakanPertama.get()) ||
(epoch == MakanKedua.get()))
{
char buf[17];
sprintf(buf, "SEKARANG: %02d:%02d", now.hour(), now.minute());//untuk tampilan saat waktu makan
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(buf);
lcd.setCursor(0, 1);
lcd.print("Waktunya Makan!!");//untuk tampilan saat waktu makan
Serial.println(buf);
//tambah atau kurangi program ini untuk setting berapa kali servo berjalan
//di setting 2X
iniservo.write(servo_ON);
delay(waktuservo_ON);
iniservo.write(servo_OFF);
delay(1000);
iniservo.write(servo_ON);
delay(waktuservo_ON);
iniservo.write(servo_OFF);
delay(1000);
lcd.clear();
}
}
}
Kalian juga harus memasukan file zip untuk library arduino ide kalian dibawah ini:
Untuk tutorial lengkapnya dapat kalian lihat di video Youtube dibawah ini:
Komentar
Posting Komentar