Rabu, 08 Januari 2020

program robot 3 sensor untrasonik

#include <NewPing.h>
#define kirimaju A1   //Mendeklarasikan pin A0 sebagai pin untuk motor dc
#define kirimundur A2   //Mendeklarasikan pin A1 sebagai pin untuk motor dc
#define kananmaju A3   //Mendeklarasikan pin A2 sebagai pin untuk motor dc
#define kananmundur A4   //Mendeklarasikan pin A3 sebagai pin untuk motor dc
#define trigPin1 9    //mendeklarasikan pin 7 sebagai pin untuk trigger ultrasonik 1
#define echoPin1 8    //mendeklarasikan pin 6 sebagai pin untuk echo ultrasonik 1
#define trigPin2 11   //mendeklarasikan pin 5 sebagai pin untuk trigger ultrasonik 2
#define echoPin2 10    //mendeklarasikan pin 4 sebagai pin untuk echo ultrasonik 1
#define trigPin3 13    //mendeklarasikan pin 3 sebagai pin untuk trigger ultrasonik 3
#define echoPin3 12   //mendeklarasikan pin 2 sebagai pin untuk echo ultrasonik 1

void setup() {   //fungsi wajib untuk program arduino
 Serial.begin(9600);
  pinMode(trigPin1, OUTPUT);    //mendeklarasikan trigPin1 sebagai pin output
  pinMode(trigPin2, OUTPUT);    //mendeklarasikan trigPin2 sebagai pin output
  pinMode(trigPin3, OUTPUT);    //mendeklarasikan trigPin3 sebagai pin output
  pinMode(echoPin1, INPUT);    //mendeklarasikan echoPin1 sebagai pin input
  pinMode(echoPin2, INPUT);    //mendeklarasikan echoPin2 sebagai pin input
  pinMode(echoPin3, INPUT);    //mendeklarasikan echoPin3 sebagai pin input

  pinMode(kirimaju, OUTPUT);    //mendeklarasikan pin kirimaju sebagai pin output
  pinMode(kirimundur, OUTPUT);    //mendeklarasikan pin kirimundur sebagai pin output
  pinMode(kananmaju, OUTPUT);    //mendeklarasikan pin kananmaju sebagai pin output
  pinMode(kananmundur, OUTPUT);    //mendeklarasikan pin kananmndur sebagai pin output

}
void loop() {   
 
  long duration1, distance1;    //memberi tipe data pada variabel
  digitalWrite(trigPin1, LOW);    //memberi logika 0 atau low pada keluaran trigPin1
  delayMicroseconds(2);    //memberi waktu delay
  digitalWrite(trigPin1, HIGH);    //memberi logika 1 atau low pada keluaran trigPin1
  delayMicroseconds(10);    //memberi waktu delay
  digitalWrite(trigPin1, LOW);    //memberi logika 0 atau low pada keluaran trigPin1
  duration1 = pulseIn(echoPin1, HIGH);    //memproses nilai duration1 yang terbaca
  distance1 = (duration1/2) / 29.1;    //menghitung nilai distance1
Serial.print(distance1);
Serial.print("   ||   ");

  long duration2, distance2;    //memberi tipe data pada variabel
  digitalWrite(trigPin2, LOW);    //memberi logika 0 atau low pada keluaran trigPin2
  delayMicroseconds(2);    //memberi waktu delay
  digitalWrite(trigPin2, HIGH);    //memberi logika 1 atau HIGH pada keluaran trigPin2
  delayMicroseconds(10);    //memberi waktu delay
  digitalWrite(trigPin2, LOW);    //memberi logika 0 atau low pada keluaran trigPin2
  duration2 = pulseIn(echoPin2, HIGH);    //memproses nilai duration2 yang terbaca
  distance2 = (duration2/2) / 29.1;    //menghitung nilai distance2
Serial.print(distance2);
Serial.print("   ||   ");


  long duration3, distance3;    //memberi tipe data pada variabel
  digitalWrite(trigPin3, LOW);   //memberi logika 0 atau low pada keluaran trigPin3
  delayMicroseconds(2);    //memberi waktu delay
  digitalWrite(trigPin3, HIGH);   //memberi logika 1 atau HIGH pada keluaran trigPin3
  delayMicroseconds(10);    //memberi waktu delay
  digitalWrite(trigPin3, LOW);   //memberi logika 0 atau low pada keluaran trigPin3
  duration3 = pulseIn(echoPin3, HIGH);    //memproses nilai duration3 yang terbaca
  distance3 = (duration3/2) / 29.1;    //menghitung nilai distance3
Serial.print(distance3);
Serial.print("   ||   ");
 
  if (distance1>10 && distance2>10 && distance3>10)    //Memberi kondisi
  { //robot bergerak maju
      digitalWrite(kirimaju, HIGH);    //Memberi logika 1 atau HIGH pada pin kirimaju
      digitalWrite(kirimundur, LOW);    //Memberi logika 0 atau LOW pada pin kirimundur
      digitalWrite(kananmaju, HIGH);    //Memberi logika 1 atau HIGH pada pin kanan maju
      digitalWrite(kananmundur, LOW);    //Memberi logika 0 atau LOW pada pin kananmundur
  }

  else if (distance1<10 && distance2>10 && distance3>10)    //Memberi kondisi
  { //robot bergerak mundur
      digitalWrite(kirimaju, LOW);    //Memberi logika 0 atau LOW pada pin kirimaju
      digitalWrite(kirimundur, HIGH);    //Memberi logika 1 atau HIGH pada pin kirimundur
      digitalWrite(kananmaju, LOW);    //Memberi logika 0 atau LOW pada pin kananmaju
      digitalWrite(kananmundur, HIGH);    //Memberi logika 1 atau HIGH pada pin kanan mundur
  }

  else if (distance1>10 && distance2<10 && distance3>10)    //Memberi kondisi
  { //robot belok ke kanan
      digitalWrite(kirimaju, HIGH);    //Memberi logika 1 atau HIGH pada pin kirimaju
      digitalWrite(kirimundur, LOW);    //Memberi logika 0 atau LOW pada pin kirimundur
      digitalWrite(kananmaju, LOW);    //Memberi logika 0 atau LOW pada pin kananmaju
      digitalWrite(kananmundur, HIGH);    //Memberi logika 1 atau HIGH pada pin kananmundur
  }

  else if (distance1<10 && distance2<10 && distance3>10)    //Memberi kondisi
  { //robot belok ke kanan
      digitalWrite(kirimaju, HIGH);    //Memberi logika 1 atau HIGH pada pin kirimaju
      digitalWrite(kirimundur, LOW);    //Memberi logika 0 atau LOW pada pin kirimundur
      digitalWrite(kananmaju, LOW);    //Memberi logika 0 atau LOW pada pin kananmaju
      digitalWrite(kananmundur, HIGH);    //Memberi logika 1 atau HIGH pada pin kananmundur
  }

  else if (distance1>10 && distance2>10 && distance3<10)    //Memberi kondisi
  { //robot belok ke kiri
      digitalWrite(kirimaju, LOW);    //Memberi logika 0 atau LOW pada pin kirimaju
      digitalWrite(kirimundur, HIGH);    //Memberi logika 1 atau HIGH pada pin kirimundur
      digitalWrite(kananmaju, HIGH);    //Memberi logika 1 atau HIGH pada pin kananmaju
      digitalWrite(kananmundur, LOW);    //Memberi logika 0 atau LOW pada pin kananmundur
  }

  else if (distance1<10 && distance2>10 && distance3<10)    //Memberi kondisi
  { //robot belok ke kiri
      digitalWrite(kirimaju, LOW);    //Memberi logika 0 atau LOW pada pin kirimaju
      digitalWrite(kirimundur, HIGH);    //Memberi logika 1 atau HIGH pada pin kirimundur
      digitalWrite(kananmaju, HIGH);    //Memberi logika 1 atau HIGH pada pin kananmaju
      digitalWrite(kananmundur, LOW);    //Memberi logika 0 atau LOW pada pin kananmundur
  }

  else if (distance1<10 && distance2<10 && distance3<10)    //Memberi kondisi
  { //robot bergerak mundur
      digitalWrite(kirimaju, LOW);    //Memberi logika 0 atau LOW pada pin kirimaju
      digitalWrite(kirimundur, HIGH);    //Memberi logika 1 atau HIGH pada pin kirimundur
      digitalWrite(kananmaju, LOW);    //Memberi logika 0 atau LOW pada pin kananmaju
      digitalWrite(kananmundur, HIGH);    //Memberi logika 1 atau HIGH pada pin kananmundur
  }
  else    //pilihan terakhir jika tidak ada kondisi yang terpenuhi
  { //robot bergerak maju
      digitalWrite(kirimaju, HIGH);    //Memberi logika 1 atau HIGH pada pin kirimaju
      digitalWrite(kirimundur, LOW);    //Memberi logika 0 atau LOW pada pin kirimundur
      digitalWrite(kananmaju, HIGH);    //Memberi logika 1 atau HIGH pada pin kananmaju
      digitalWrite(kananmundur, LOW);    //Memberi logika 0 atau LOW pada pin kananmundur
  }
}  //kurung penutup dari program fungsi void loop

program robot kipra pemadam api

//==========================================================================================
//  Progam ini di buat oleh Misbah najh (FB)
//  Program dikendalikan menguanakan sensor jarak Ultrasonic
//  mengunakan motor servo MG995,sensor hc-sr04,flame sensor 5channel, fan L9110, arduino uno,dan chassis
//  Chassis+servo modif didapatkan https://www.tokopedia.com/microbot/frame-chassis-robot-pemadam-api-servo-roda
//  Tutorial dan video klik  https://www.sinauduino.blogspot.co.id
//  full tutorial video https://www.youtube.com/watch?v=BL8ZB5-ql9Q
//==========================================================================================

//inisialisai motor servo
#include <Servo.h>
#define RODA1 4
#define RODA2 5
Servo Roda1; Servo Roda2;
//definisi pin kipas dan pin buzzer
#define kipas 6
#define buzzer 3
bool keadaan;
//KALIBRASI KECEPATAN DAN SETPOIN SENSOR
int kecepataan =600; // NILAI GERAK BELOK 90* (500-1000);
int rodakanan  =93;  // NILAI BERHENTI RODA KANAN (+-90);
int rodakiri   =95;  // NILAI BERHENTI RODA KIRI (+-90);
int setpoin    =7;   // NILAI TOLERANSI JARAK HINDAR (7-15);
int lintasan   =200; // NILAI TOLERANSI WARNA LINTASAN (0-1024)
int api        =500; // NILAI TOLERANSI CAHAYA API (0-1024)

//inisialisasi sensor 1 sebelah kiri
#include <NewPing.h>
#define echo1    10
#define trigger1 9
NewPing sonar1(trigger1,echo1,100);

//inisialisasi sensor 2 sebelah depan
#define echo2    12
#define trigger2 11
NewPing sonar2(trigger2,echo2,100);

//inisialisasi sensor 2 sebelah kanan
#define echo3    8
#define trigger3 7
NewPing sonar3(trigger3,echo3,100);


void setup() {
 Serial.begin(9600); // serial monitor "menampilkan data sensor"
 diam(3000);
 Roda1.attach(RODA1);  //pin motor servo
 Roda2.attach(RODA2); 
 pinMode(kipas,INPUT);
 pinMode(buzzer,OUTPUT);
 keadaan = 0;
 }

void loop() {
// sensor mengukur dan membaca
int jarak1 =sonar1.ping_cm(); // sensor kiri
int jarak2 =sonar2.ping_cm(); // sensor depan
int jarak3 =sonar3.ping_cm(); // sensor kanan
int base    = analogRead(A0); // pin sensor tcr5000
int api1    = analogRead(A1); // pin sensor Api A1-A5
int api2    = analogRead(A2);
int api3    = analogRead(A3);
int api4    = analogRead(A4);
int api5    = analogRead(A5);
//sensor menampilkan data yang dibaca
Serial.print(jarak1);
Serial.print("   ||   ");
Serial.print(jarak2);
Serial.print("   ||   ");
Serial.print(jarak3);
Serial.print("   ||   ");
Serial.print(api3);
Serial.print("   ||   ");
Serial.println(base);

//PEMIS 1 jika api terdeteksi maka exsekusi
if ((api2>api||api3>api||api4>api) && (jarak2>1&&jarak2<15)){
digitalWrite(buzzer,HIGH);  //buzzer bunyi
pinMode(kipas, OUTPUT); digitalWrite(kipas,LOW);//kipas bergerak
diam(2000); // panggil diam "lihat inisialisasi progam pangillan void diam(x);"
tiup(kecepataan);  //panggil tiup
diam(1000); //panggil diam
keadaan = 1;
}

//PREMIS 2 Jika api tidak terdeteksi maka exsekusi
else{
digitalWrite(buzzer,LOW); // buzzer mati
pinMode(kipas, INPUT); digitalWrite(kipas,HIGH); // kipas berhenti
if (base>lintasan && keadaan > 0){
  maju();
  delay(kecepataan);
  diam (100000);//berhenti total
}
//jika sensor kiri terdeteksi maka belok kanan
else if (jarak1<setpoin&&jarak1>1){
  kanan(); //panggil kanan
  delay(50);
  }
//jika sensor kanan terdeteksi maka belok kiri
else if (jarak3<setpoin&&jarak3>1){
  kiri();
  delay(50);
  }
//jika sensor depan terdeteksi maka balik (balik belum ditentukan)
else if (jarak2<setpoin&&jarak2>1){
  //jika sensor kiri < sensor kanan maka ditentukan "balik kanan"
  if (jarak1<jarak3){
  balik_kanan();
  delay(kecepataan);
  }
  //jika sensor kanan > sensor kanan maka ditentukan "balik kiri"
  else if (jarak1>jarak3){
  balik_kiri();
  delay(kecepataan);
}
}
//JIKA NIALI SET POIN SEMUA SENSOR TIDAK TERLAMPAUI MAKA "ROBOT MAJU"
else{
  maju();
  delay(100);
}
}
}

// inisialisasi progam pangillan
void maju(){          //SEMUA RODA MAJU
  Roda1.write(380);
  Roda2.write(-380);
}
void mundur(){        //SEMUA RODA MUNDUR
  Roda1.write(-380);
  Roda2.write(380);
}
void balik_kiri(){
  Roda1.write(-380);   //RODA1 MUNDUR
  Roda2.write(-380);   //RODA2 MAJU
}
void balik_kanan(){
  Roda1.write(380);    //RODA1 MAJU
  Roda2.write(380);    //RODA2 MUNDUR
}
void kanan(){
 Roda1.write(380);       //RODA1 MAJU
 Roda2.write(rodakanan); //RODA2 BERHENTI
}
void kiri(){
 Roda1.write(rodakiri); //RODA1 BERHENTI
 Roda2.write(-380);     //RODA2 MAJU
}
void diam(int x){
  Roda1.write(93);  //RODA KANAN BERHENTI
  Roda2.write(95);  //RODA KIRI BERHENTI
  delay(x);         //SEMUA RODA BERHENTI
  }
void tiup(int x){   // ROBOT BERHENTI DAN MENIUP KEKANAN DAN KRKIRI
balik_kanan();
delay(x/4);
diam(x);
balik_kiri();
delay(x/2);
diam(x);
balik_kanan();
delay(x/2);
diam(x);
balik_kiri();
delay(x/4);
diam(x);
}

Sabtu, 21 Desember 2019

Program Pendeteks banjir dengan speaker isd 1820

#include <SoftwareSerial.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
SoftwareSerial SIM800L(12, 11);
#define trigPin 3
#define echoPin 4
#define ledaman 5
#define led1 6
#define led2 7
#define led3 8
#define BUZZER 9
#define konveyor A1
#define speaker 10


void setup() {
 
 lcd.begin(16, 2);               
 lcd.backlight();
 lcd.clear();
 lcd.setCursor(0, 0);
 lcd.print("Assalamualaikum");
 lcd.setCursor(5, 1);
 lcd.print("WR.WB");
 delay(2000);

 lcd.clear();
 lcd.setCursor(2, 0);
 lcd.print("Ririn Afriza");
 lcd.setCursor(0, 1);
 lcd.print("NPM : 1660100080");
 delay(2000);

 lcd.clear();
 lcd.setCursor(2, 0);
 lcd.print("I L0VE YOU");
 delay(2000);


 lcd.clear();
 lcd.setCursor(4, 0);
 lcd.print("SKRIPSI");
 lcd.setCursor(3, 1);
 lcd.print("ROBOTIKA");
 delay(2000);


  SIM800L.begin(115200);
 Serial.begin (9600);
 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);
 pinMode(BUZZER, OUTPUT);
 pinMode(konveyor, OUTPUT);
 pinMode(speaker, OUTPUT);

 pinMode(ledaman, OUTPUT);
 pinMode(led1, OUTPUT);
 pinMode(led2, OUTPUT);
 pinMode(led3, OUTPUT);


}

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;


lcd.clear();
lcd.setCursor(0,0);   
lcd.print("Tinggi Air:");   
lcd.print(distance);   
lcd.print("cm"); 
   

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


if(distance>=16) {
  digitalWrite(ledaman, HIGH);
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(BUZZER, LOW);
  digitalWrite(konveyor, HIGH);
digitalWrite(speaker, LOW);

lcd.setCursor(10,1);   
lcd.print("Aman"); 

}
else {
   digitalWrite(ledaman, LOW);
}
if(distance <= 15) {
  digitalWrite(led1, HIGH);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(BUZZER, LOW);
   digitalWrite(konveyor, HIGH);
digitalWrite(speaker, LOW);

lcd.setCursor(10,1);   
lcd.print("Normal"); 
}

if(distance < 10) {
  digitalWrite(led2, HIGH);
  digitalWrite(led1, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(BUZZER, LOW);
  digitalWrite(konveyor, HIGH);
digitalWrite(speaker, LOW);
lcd.setCursor(10,1);   
lcd.print("Siaga."); 

}
if(distance <= 5) {

  digitalWrite(led2, LOW);
  digitalWrite(led1, LOW);
 digitalWrite(konveyor, LOW);

  digitalWrite(led3, HIGH);
  digitalWrite(BUZZER, HIGH);
delay(500);
 digitalWrite(led3,LOW);
 digitalWrite(BUZZER, LOW);
delay(500);
 digitalWrite(led3, HIGH);
  digitalWrite(BUZZER, HIGH);
delay(500);
 digitalWrite(led3,LOW);
 digitalWrite(BUZZER, LOW);
delay(500);
 digitalWrite(led3, HIGH);
  digitalWrite(BUZZER, HIGH);
delay(500);
 digitalWrite(led3,LOW);
 digitalWrite(BUZZER, LOW);
delay(500);
 digitalWrite(led3, HIGH);
  digitalWrite(BUZZER, HIGH);
delay(500);
digitalWrite(led3,LOW);
 digitalWrite(BUZZER, LOW);
delay(500);
digitalWrite(speaker, HIGH);
delay(500);


lcd.setCursor(10,1);   
lcd.print("Bahaya"); 

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

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

program Pendeteksi kekeruan air dengan sensor turbidity



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

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

int pompa1 = 6;
int pompa2 = 7;
int buzzer = 2;
int ledmerah = A1;
int ledbiru = A2;
int ledhijau = A3;

int photocellPin0 = A0, photocellReading=0;
float Res0 = 10.0;
void setup() {
  pinMode(pompa1, OUTPUT);
 pinMode(pompa2, OUTPUT);
 pinMode(buzzer, OUTPUT);
 pinMode(ledmerah, OUTPUT);
 pinMode(ledbiru, OUTPUT);
pinMode(ledhijau, OUTPUT);


 
Serial.begin(9600);
 lcd.begin(20, 4);               
 lcd.backlight();
 lcd.clear();
 lcd.setCursor(3, 0);
 lcd.print("Assalamualaikum");
 lcd.setCursor(7, 1);
 lcd.print("WR.WB");

 lcd.setCursor(5, 2);
 lcd.print("LOLA ARFIKA");
 lcd.setCursor(2, 3);
 lcd.print("NPM : 1660100065");
 delay(2000);

 lcd.clear();
}
int i;
void loop() {

 photocellReading = analogRead(photocellPin0);
 float Vout0=photocellReading*0.0048828125;



lcd.setCursor(0,0);
lcd.print("Voltage :");

lcd.setCursor(10,0);
lcd.print(Vout0);

lcd.setCursor(15,0);
lcd.print(" V/t");

lcd.setCursor(0,1);
lcd.print("Volt");

lcd.setCursor(10,1);
lcd.print(photocellReading);

//Output

lcd.setCursor(0,1);
lcd.print("ADC ");
lcd.setCursor(8,1);
lcd.print(":");

lcd.setCursor(10,1);
lcd.print(photocellRea ding);
lcd.setCursor(15,1);
lcd.print("%");

lcd.setCursor(0,2);
lcd.print("Kondisi :");


if (photocellReading >= 500) {

lcd.setCursor(10,2);
lcd.print("KOSONG");

digitalWrite(pompa1, HIGH);
digitalWrite(pompa2, HIGH);

digitalWrite(ledhijau, LOW);
digitalWrite(ledbiru, HIGH);
digitalWrite(ledmerah, LOW);
digitalWrite(buzzer, LOW);


}

if (photocellReading <=500) {
lcd.setCursor(10,2);
lcd.print("KERUH.");

digitalWrite(pompa1, HIGH);
digitalWrite(pompa2, LOW);

digitalWrite(ledhijau, LOW);
digitalWrite(ledbiru, LOW);
digitalWrite(ledmerah, HIGH);
digitalWrite(buzzer, HIGH);
delay(500);
digitalWrite(buzzer, LOW);
delay(500);
digitalWrite(buzzer, HIGH);
delay(500);
digitalWrite(buzzer, LOW);
delay(500);
}


if (photocellReading >=650) {
lcd.setCursor(10,2);
lcd.print("JERNIH");

digitalWrite(pompa1, LOW);
digitalWrite(pompa2, HIGH);

digitalWrite(ledhijau, HIGH);
digitalWrite(ledbiru, LOW);
digitalWrite(ledmerah, LOW);
digitalWrite(buzzer, LOW);
}

delay(2000);//pengulangan pembacaan
lcd.clear();


}

Program robot pemadam api dan skema

#include <Servo.h>
#define RODA1 4
#define RODA2 5
Servo Roda1; Servo Roda2;
//definisi pin kipas dan pin buzzer
#define pompa 13
#define buzzer A7
bool keadaan;
//KALIBRASI KECEPATAN DAN SETPOIN SENSOR
int kecepataan =600; // NILAI GERAK BELOK 90* (500-1000);
int rodakanan  =93;  // NILAI BERHENTI RODA KANAN (+-90);
int rodakiri   =95;  // NILAI BERHENTI RODA KIRI (+-90);
int setpoin    =7;   // NILAI TOLERANSI JARAK HINDAR (7-15);
int lintasan   =200; // NILAI TOLERANSI WARNA LINTASAN (0-1024)
int api        =500; // NILAI TOLERANSI CAHAYA API (0-1024)

//inisialisasi sensor 1 sebelah kiri
#include <NewPing.h>
#define echo1    9
#define trigger1 10
NewPing sonar1(trigger1,echo1,100);

//inisialisasi sensor 2 sebelah depan
#define echo2    11
#define trigger2 12
NewPing sonar2(trigger2,echo2,100);

//inisialisasi sensor 3 sebelah kanan
#define echo3    7
#define trigger3 8
NewPing sonar3(trigger3,echo3,100);


void setup() {
 Serial.begin(9600); // serial monitor "menampilkan data sensor"
 diam(3000);
 Roda1.attach(RODA1);  //pin motor servo
 Roda2.attach(RODA2); 
 pinMode(pompa,OUTPUT);
 pinMode(buzzer,OUTPUT);
 keadaan = 0;
 }

void loop() {
// sensor mengukur dan membaca
int jarak1 =sonar1.ping_cm(); // sensor kiri
int jarak2 =sonar2.ping_cm(); // sensor depan
int jarak3 =sonar3.ping_cm(); // sensor kanan
int base    = analogRead(A0); // pin sensor tcr5000
int api1    = analogRead(A1); // pin sensor Api A1-A5
int api2    = analogRead(A2);
int api3    = analogRead(A3);
int api4    = analogRead(A4);
int api5    = analogRead(A5);
//sensor menampilkan data yang dibaca
Serial.print(jarak1);
Serial.print("   ||   ");
Serial.print(jarak2);
Serial.print("   ||   ");
Serial.print(jarak3);
Serial.print("   ||   ");
Serial.print(api3);
Serial.print("   ||   ");
Serial.println(base);

//PEMIS 1 jika api terdeteksi maka exsekusi
if ((api2>api||api3>api||api4>api) && (jarak2>1&&jarak2<15)){
digitalWrite(buzzer,HIGH);  //buzzer bunyi
 digitalWrite(pompa,LOW);
diam(2000); // panggil diam "lihat inisialisasi progam pangillan void diam(x);"
tiup(kecepatan);  //panggil tiup
diam(1000); //panggil diam
keadaan = 1;

}

//PREMIS 2 Jika api tidak terdeteksi maka exsekusi
else{
digitalWrite(buzzer,LOW); // buzzer mati
pinMode(pompa, INPUT); digitalWrite(pompa,HIGH); // kipas berhenti
if (base>lintasan && keadaan > 0){
  maju();
  delay(kecepataan);
  diam (100000);//berhenti total
}
//jika sensor kiri terdeteksi maka belok kanan
else if (jarak1<setpoin&&jarak1>1){
  kanan(); //panggil kanan
  delay(50);
  }
//jika sensor kanan terdeteksi maka belok kiri
else if (jarak3<setpoin&&jarak3>1){
  kiri();
  delay(50);
  }
//jika sensor depan terdeteksi maka balik (balik belum ditentukan)
else if (jarak2<setpoin&&jarak2>1){
  //jika sensor kiri < sensor kanan maka ditentukan "balik kanan"
  if (jarak1<jarak3){
  balik_kanan();
  delay(kecepataan);
  }
  //jika sensor kanan > sensor kanan maka ditentukan "balik kiri"
  else if (jarak1>jarak3){
  balik_kiri();
  delay(kecepataan);
}
}
//JIKA NIALI SET POIN SEMUA SENSOR TIDAK TERLAMPAUI MAKA "ROBOT MAJU"
else{
  maju();
  delay(100);
}
}
}

// inisialisasi progam pangillan
void maju(){          //SEMUA RODA MAJU
  Roda1.write(380);
  Roda2.write(-380);
}
void mundur(){        //SEMUA RODA MUNDUR
  Roda1.write(-380);
  Roda2.write(380);
}
void balik_kiri(){
  Roda1.write(-380);   //RODA1 MUNDUR
  Roda2.write(-380);   //RODA2 MAJU
}
void balik_kanan(){
  Roda1.write(380);    //RODA1 MAJU
  Roda2.write(380);    //RODA2 MUNDUR
}
void kanan(){
 Roda1.write(380);       //RODA1 MAJU
 Roda2.write(rodakanan); //RODA2 BERHENTI
}
void kiri(){
 Roda1.write(rodakiri); //RODA1 BERHENTI
 Roda2.write(-380);     //RODA2 MAJU
}
void diam(int x){
  Roda1.write(93);  //RODA KANAN BERHENTI
  Roda2.write(95);  //RODA KIRI BERHENTI
  delay(x);         //SEMUA RODA BERHENTI
  }
void tiup(int x){   // ROBOT BERHENTI DAN MENIUP KEKANAN DAN KRKIRI
balik_kanan();
delay(x/4);
diam(x);
balik_kiri();
delay(x/2);
diam(x);
balik_kanan();
delay(x/2);
diam(x);
balik_kiri();
delay(x/4);
diam(x);
}