Sabtu, 21 Desember 2019

Program alat penyiram tanaman otomatis

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>

SoftwareSerial SIM800L(5, 4);
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

int pompa = A1; 
float TANAH = A0, LEMBAB = 0;
#define power 7

#define trigPin 3
#define echoPin 2
#define hijau 8
#define kuning 9
#define merah 10
#define BUZZER 6

void setup() {
 Serial.begin(9600);
 SIM800L.begin(115200);

 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);
  pinMode( power, OUTPUT);
 pinMode(BUZZER, OUTPUT);
 pinMode(hijau, OUTPUT);
 pinMode(merah, OUTPUT);
 pinMode(kuning, OUTPUT);
 pinMode  (pompa, OUTPUT);

 lcd.begin(20, 4);               
 lcd.backlight();
 lcd.clear();
 lcd.setCursor(2, 0);
 lcd.print("Assalamualaikum");
 lcd.setCursor(7, 1);
 lcd.print("WR.WB");
  lcd.setCursor(2, 2);
 lcd.print("SKRIPSI ROBOTIKA");
 lcd.setCursor(2, 3);
 lcd.print("PENYIRAM TANAMAN");
 delay(3000);

 lcd.clear();
 lcd.setCursor(0, 0);
 lcd.print("Nama : Diana Yuntari");
 lcd.setCursor(0, 1);
 lcd.print("NPM  : 1660100060");
  lcd.setCursor(0, 2);
 lcd.print("Prodi: Informatika");
 lcd.setCursor(0, 3);
 lcd.print("Fak  : Teknik");
 delay(4000);

  lcd.clear();
}

void loop() {
  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;
 digitalWrite( power, HIGH);

 LEMBAB = analogRead(TANAH);
Serial.print("Kelembapan tanah");
Serial.print(LEMBAB);


lcd.setCursor(0,0);   
lcd.print("Jarak      :");
lcd.print(distance);   
lcd.print("cm");

lcd.setCursor(0,1);   
lcd.print("Wadah Air  :");


lcd.setCursor(0,2);   
lcd.print("Kelembapan :");
lcd.print(LEMBAB); 
lcd.setCursor(18,2);   
lcd.print("%");   

 lcd.setCursor(0,3);   
lcd.print("Kon.Tanah  :");

 if(LEMBAB>900 ){
  Serial.print("Tanah Kering");

lcd.setCursor(12,3);   
lcd.print("KERING.");   
 delay(500);
digitalWrite(pompa, LOW);
delay(1000);
 
}
else{
  Serial.print(" Kel. Normal ");
  lcd.setCursor(12,3);   
 lcd.print("LEMBAB");

  digitalWrite(pompa, HIGH);
  delay(1000);

}
////Perintah Program Sensor Jarak //////

if(distance < 5) {
  digitalWrite(hijau, HIGH);
  digitalWrite(kuning, LOW);
  digitalWrite(merah, LOW);
  digitalWrite(BUZZER, LOW);
  delay(300);

lcd.setCursor(12,1);   
lcd.print("Penuh.");

}
else {
 digitalWrite(hijau, LOW);
 digitalWrite(kuning, HIGH);
lcd.setCursor(12,1);   
lcd.print("Sedang");
  }
if(distance >= 10) {

lcd.setCursor(12,1);   
lcd.print("Kosong");
   digitalWrite(hijau, LOW);
  digitalWrite(kuning, LOW);
  digitalWrite(merah, HIGH);
  digitalWrite(BUZZER, HIGH);
   digitalWrite(merah, LOW);
 digitalWrite(BUZZER, LOW);
  delay(500);
digitalWrite(merah, HIGH);
  digitalWrite(BUZZER, HIGH);
  digitalWrite(merah, LOW);
 digitalWrite(BUZZER, LOW);
  delay(500);
  digitalWrite(merah, HIGH);
  digitalWrite(BUZZER, HIGH);
  delay(500);
 digitalWrite(merah, LOW);
 digitalWrite(BUZZER, LOW);
  delay(500);
  digitalWrite(merah, HIGH);
  digitalWrite(BUZZER, HIGH);
  delay(500);
 digitalWrite(merah, LOW);
 digitalWrite(BUZZER, LOW);
  delay(500);
   digitalWrite(merah, HIGH);
  digitalWrite(BUZZER, HIGH);
  delay(500);
  digitalWrite(merah, LOW);
 digitalWrite(BUZZER, LOW);
  delay(500);
  SIM800L.write("AT+CMGF=1\r\n");
  delay(1000);
  SIM800L.write("AT+CMGS=\"082176559542\"\r\n");
  delay(1000);
  SIM800L.write("Sensor Merdeteksi Adanya ketinggian air  ... !!!");
  delay(1000);
  SIM800L.write((char)26);
  delay(1000);

 
 lcd.clear(); 
}

delay(300);
 
}

Tidak ada komentar:

Posting Komentar