//smart dying
const int pinLDR = A0;
const int pinRS = A1;
int LEDa = 7; //variabel LED
int LEDb = 6;
int LEDc = 5;
int LEDd = 4;
int x=0;
int C1=8; //variabel motor stepper
int C2=9;
int C3=10;
int C4=11;
int step = 25; //Kecepatan putaran Motor Stepper
int delaytime = 2;
void setup() {
Serial.begin(9600);
pinMode(pinLDR,INPUT); //masukan Led
pinMode(pinRS,INPUT); //masukan RS
pinMode(LEDa,OUTPUT); // keluaran lampu Merah (1) tanda Gelap
pinMode(LEDb,OUTPUT); // keluaran lampu Hijau (1) tanda Cerah
pinMode(LEDc,OUTPUT); // keluaran lampu Merah (2) tanda Hujan
pinMode(LEDd,OUTPUT); // keluaran lampu Hijau (2) tanda Tidak Hujan
pinMode(C1,OUTPUT);
pinMode(C2,OUTPUT);
pinMode(C3,OUTPUT);
pinMode(C4,OUTPUT);
}
float total;
int dataLDR=0; // data LDR dimulai dari 0
int dataRS=0; // data RS dimulai dari 0
void loop (){
dataLDR = analogRead(pinLDR); // data LDR dibaca dari pin analog LDR
if(dataLDR>400) {digitalWrite(LEDa,HIGH);} // lampu merah (1) menyala apabila nilai LDR >400 (Gelap)
else {digitalWrite(LEDa,LOW);} // lampu hijau (1) mati apabila nilai LDR <400 (Cerah)
Serial.print("Data LDR = "); // tampilan data LDR di monitor
Serial.println(dataLDR); // Nilai dari data LDR yang akan ditampilkan
if(dataLDR<400) {digitalWrite(LEDb,HIGH);} // lampu hijau (1) menyala apabila nilai LDR <400 (Cerah)
else {digitalWrite(LEDb,LOW);} // lampu hijau (1) mati apabila nilai LDR >400 (Gelap)
dataRS= analogRead(pinRS); // data sensor hujan yang dibaca dari pin analog RS
if(dataRS<900) {digitalWrite(LEDc,HIGH);} // lampu merah (2) menyala apabila nilai RS <900 (Hujan)
else {digitalWrite(LEDc,LOW);} // lampu merah (2) mati apabila nilai RS >900 (Tidak Hujan)
Serial.print("Data RS = "); // tampilan data RS di monitor
Serial.println(dataRS); // Nilai dari data RS yang akan ditampilkan
if(dataRS>900) {digitalWrite(LEDd,HIGH);} // lampu hijau (2) menyala apabila nilai RS >900 (Tidak Hujan)
else {digitalWrite(LEDd,LOW);} // lampu hijau (2) mati apabila nilai RS <900 (Hujan)
total = (dataRS - (dataLDR+600));
Serial.print("total ");
Serial.println(total);
if (total<-10)
{ if (x==1){
Serial.print("jemuran keluar");
for (int i=0; i<2000; i++)
{mundur(); } x=0;}
}
else if (total>-10)
{ if(x==0) {
Serial.println("jemuran masuk");
for (int i=0; i<2000; i++)
{ maju(); } x=1;}
}
delay(1000);}
void mundur(){
step4();
delay(delaytime);
step3();
delay(delaytime);
step2();
delay(delaytime);
step1();
delay(delaytime);
}
void maju(){
step1();
delay(delaytime);
step2();
delay(delaytime);
step3();
delay(delaytime);
step4();
delay(delaytime);
}
void step1(){
digitalWrite(C1,LOW);
digitalWrite(C2,LOW);
digitalWrite(C3,HIGH);
digitalWrite(C4,HIGH);}
void step2(){
digitalWrite(C1,HIGH);
digitalWrite(C2,LOW);
digitalWrite(C3,LOW);
digitalWrite(C4,HIGH);}
void step3(){
digitalWrite(C1,HIGH);
digitalWrite(C2,HIGH);
digitalWrite(C3,LOW);
digitalWrite(C4,LOW);}
void step4(){
digitalWrite(C1,LOW);
digitalWrite(C2,HIGH);
digitalWrite(C3,HIGH);
digitalWrite(C4,LOW);}
Selasa, 28 Mei 2019
sensor hujan dan ldr motor siepper
sensor gas sms dan lcd
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
//Pin software Serial untuk komunikasi dengan module SIM800L
SoftwareSerial SIM800L(2, 3); // RX | TX
const int SensorPin = A0; // Gas Sensor Here
const int TestPin = A1; //Tombol Test
const int Speaker = 10;
const int merah = 13; //Out Digital To Emergency Lamp or Sirine drive with Relay
const int BuzzerPin = 12; //Active Buzzer
const int hijau = 11; //LED Indicator Sensor
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
float ppmGas; //Gas dalam 'ppm'->perkiraan
float GasPercent; //Gas dalam 'Percent'
const int GasMax = 50; //Persentase Maximal Gas
uint8_t SmsCount = 0; // SMS Count Variable
const int SmsMax = 3; //Maksimal SMS yang akan Dikirim
const long intervalSMS = 10; //Interval pengiriman setiap sms dalam detik
unsigned long previousMillis = 0;
String gasStat;
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
int ledState = LOW;
unsigned long previousMillis2 = 0;
long interval = 1000;
void setup() {
// put your setup code here, to run once:
pinMode (A1,INPUT_PULLUP);
pinMode (11,OUTPUT);
digitalWrite (11, LOW);
pinMode (12,OUTPUT);
pinMode (13,OUTPUT);
lcd.begin(16, 2);
lcd.init();
lcd.init();
lcd.backlight();
Serial.begin(9600);
SIM800L.begin(9600);
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
lcd.setCursor (0,0);
lcd.print(F("Sensor Kebocoran"));
lcd.setCursor (0,1);
lcd.print(F(" Gas LPG "));
delay (2000);
lcd.clear();
}
//Skecth program ini dibuat oleh Dani-Rajacell untuk www.belajarduino.com
//Silahkan pergunakan coding ini secara free dan mohon untuk tidak menghapus marking ini
//sebagai bentuk apresiasi atas free sharing program ini.
//Untuk kebutuhan Module dan Board Arduino silahkan bisa dibeli di :
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
void loop() {
// put your main code here, to run repeatedly:
GasPercent = map(analogRead(SensorPin),0,1023,0,100);
ppmGas = map(analogRead(SensorPin),0,1023,0,10000);
interval = map(analogRead(SensorPin),0,1023,1000,10);
Serial.print (GasPercent ); Serial.println (" %");
Serial.print (ppmGas,0); Serial.println (" ppm");
lcd.setCursor (0,0);
lcd.print ("P.Gas:"); lcd.print (GasPercent,1);
lcd.print ("%"); lcd.print (" ");
lcd.setCursor (0,1);
lcd.print ("C.Gas:"); lcd.print (ppmGas,0);
lcd.print ("ppm"); lcd.print (" ");
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
if( GasPercent>GasMax || digitalRead(TestPin) == LOW ){
digitalWrite(BuzzerPin,HIGH);
digitalWrite(merah,LOW);
digitalWrite(hijau, HIGH);
gasStat ="*";
if(SmsCount<SmsMax){
//lcd.backlight();
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= (intervalSMS*1000)) {
previousMillis = currentMillis;
kirimSMS();
SmsCount=SmsCount+1;
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
}
}
}
else {
digitalWrite(BuzzerPin,LOW);
digitalWrite(merah,HIGH);
digitalWrite(hijau, LOW);
gasStat ="*";
SmsCount=0; //Reset hitungan SMS
//lcd.noBacklight();
}
blinkingLed (interval);
//delay scanning sensor
delay(100);
}
//Skecth program ini dibuat oleh Dani-Rajacell untuk www.belajarduino.com
//Silahkan pergunakan coding ini secara free dan mohon untuk tidak menghapus marking ini
//sebagai bentuk apresiasi atas free sharing program ini.
//Untuk kebutuhan Module dan Board Arduino silahkan bisa dibeli di :
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
void kirimSMS () {
int tes = 0;
if(digitalRead(TestPin) == LOW){tes=1;}
String PesanSMS = ("Terjadi Kebocoran Gas LPG dengan konsentrasi Gas ")+String(GasPercent)+("% ")+String(ppmGas)+(" ppm");
lcd.clear();
lcd.setCursor (0,0);
if(tes==0){lcd.print (" WARNING!!! ");}
if(tes==1){lcd.print (" TESTING!!! ");}
lcd.setCursor (0,1);
lcd.print ("Send SMS.");
Serial.println("Menyiapkan Pesan Text");
SIM800L.write("AT+CMGF=1\r\n");
delay(500);
lcd.print (".");
delay(500);
Serial.println("Set SMS ke Nomor Tujuan");
//Tulis nomor tujuan SMS pada perintah dibawah ini
SIM800L.write("AT+CMGS=\"+6285384571695\"\r\n");
delay(500);
lcd.print (".");
delay(500);
lcd.print (".");
Serial.println("Mengirim pesan SMS");
//Tulis pesan SMS pada baris perintah dibawah ini
SIM800L.print(PesanSMS);
Serial.println(PesanSMS);
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
delay(500);
lcd.print (".");
delay(500);
lcd.print (".");
Serial.println("Mengakhiri SMS");
SIM800L.write((char)26);
delay(500);
lcd.print ("..");
Serial.println("SMS Selesai Dikirim!");
delay(500);
lcd.setCursor(0,1);
lcd.print (" SMS SENT!! ");
delay(500);
lcd.clear();
}
//Skecth program ini dibuat oleh Dani-Rajacell untuk www.belajarduino.com
//Silahkan pergunakan coding ini secara free dan mohon untuk tidak menghapus marking ini
//sebagai bentuk apresiasi atas free sharing program ini.
//Untuk kebutuhan Module dan Board Arduino silahkan bisa dibeli di :
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
void blinkingLed (long in ) {
unsigned long currentMillis2 = millis();
if (currentMillis2 - previousMillis2 >= in) {
previousMillis2 = currentMillis2;
if (ledState == LOW) {
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
ledState = HIGH;
} else {
ledState = LOW;
}
lcd.setCursor (14,0);
lcd.print (gasStat);
}
}
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
//Pin software Serial untuk komunikasi dengan module SIM800L
SoftwareSerial SIM800L(2, 3); // RX | TX
const int SensorPin = A0; // Gas Sensor Here
const int TestPin = A1; //Tombol Test
const int Speaker = 10;
const int merah = 13; //Out Digital To Emergency Lamp or Sirine drive with Relay
const int BuzzerPin = 12; //Active Buzzer
const int hijau = 11; //LED Indicator Sensor
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
float ppmGas; //Gas dalam 'ppm'->perkiraan
float GasPercent; //Gas dalam 'Percent'
const int GasMax = 50; //Persentase Maximal Gas
uint8_t SmsCount = 0; // SMS Count Variable
const int SmsMax = 3; //Maksimal SMS yang akan Dikirim
const long intervalSMS = 10; //Interval pengiriman setiap sms dalam detik
unsigned long previousMillis = 0;
String gasStat;
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
int ledState = LOW;
unsigned long previousMillis2 = 0;
long interval = 1000;
void setup() {
// put your setup code here, to run once:
pinMode (A1,INPUT_PULLUP);
pinMode (11,OUTPUT);
digitalWrite (11, LOW);
pinMode (12,OUTPUT);
pinMode (13,OUTPUT);
lcd.begin(16, 2);
lcd.init();
lcd.init();
lcd.backlight();
Serial.begin(9600);
SIM800L.begin(9600);
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
lcd.setCursor (0,0);
lcd.print(F("Sensor Kebocoran"));
lcd.setCursor (0,1);
lcd.print(F(" Gas LPG "));
delay (2000);
lcd.clear();
}
//Skecth program ini dibuat oleh Dani-Rajacell untuk www.belajarduino.com
//Silahkan pergunakan coding ini secara free dan mohon untuk tidak menghapus marking ini
//sebagai bentuk apresiasi atas free sharing program ini.
//Untuk kebutuhan Module dan Board Arduino silahkan bisa dibeli di :
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
void loop() {
// put your main code here, to run repeatedly:
GasPercent = map(analogRead(SensorPin),0,1023,0,100);
ppmGas = map(analogRead(SensorPin),0,1023,0,10000);
interval = map(analogRead(SensorPin),0,1023,1000,10);
Serial.print (GasPercent ); Serial.println (" %");
Serial.print (ppmGas,0); Serial.println (" ppm");
lcd.setCursor (0,0);
lcd.print ("P.Gas:"); lcd.print (GasPercent,1);
lcd.print ("%"); lcd.print (" ");
lcd.setCursor (0,1);
lcd.print ("C.Gas:"); lcd.print (ppmGas,0);
lcd.print ("ppm"); lcd.print (" ");
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
if( GasPercent>GasMax || digitalRead(TestPin) == LOW ){
digitalWrite(BuzzerPin,HIGH);
digitalWrite(merah,LOW);
digitalWrite(hijau, HIGH);
gasStat ="*";
if(SmsCount<SmsMax){
//lcd.backlight();
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= (intervalSMS*1000)) {
previousMillis = currentMillis;
kirimSMS();
SmsCount=SmsCount+1;
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
}
}
}
else {
digitalWrite(BuzzerPin,LOW);
digitalWrite(merah,HIGH);
digitalWrite(hijau, LOW);
gasStat ="*";
SmsCount=0; //Reset hitungan SMS
//lcd.noBacklight();
}
blinkingLed (interval);
//delay scanning sensor
delay(100);
}
//Skecth program ini dibuat oleh Dani-Rajacell untuk www.belajarduino.com
//Silahkan pergunakan coding ini secara free dan mohon untuk tidak menghapus marking ini
//sebagai bentuk apresiasi atas free sharing program ini.
//Untuk kebutuhan Module dan Board Arduino silahkan bisa dibeli di :
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
void kirimSMS () {
int tes = 0;
if(digitalRead(TestPin) == LOW){tes=1;}
String PesanSMS = ("Terjadi Kebocoran Gas LPG dengan konsentrasi Gas ")+String(GasPercent)+("% ")+String(ppmGas)+(" ppm");
lcd.clear();
lcd.setCursor (0,0);
if(tes==0){lcd.print (" WARNING!!! ");}
if(tes==1){lcd.print (" TESTING!!! ");}
lcd.setCursor (0,1);
lcd.print ("Send SMS.");
Serial.println("Menyiapkan Pesan Text");
SIM800L.write("AT+CMGF=1\r\n");
delay(500);
lcd.print (".");
delay(500);
Serial.println("Set SMS ke Nomor Tujuan");
//Tulis nomor tujuan SMS pada perintah dibawah ini
SIM800L.write("AT+CMGS=\"+6285384571695\"\r\n");
delay(500);
lcd.print (".");
delay(500);
lcd.print (".");
Serial.println("Mengirim pesan SMS");
//Tulis pesan SMS pada baris perintah dibawah ini
SIM800L.print(PesanSMS);
Serial.println(PesanSMS);
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
delay(500);
lcd.print (".");
delay(500);
lcd.print (".");
Serial.println("Mengakhiri SMS");
SIM800L.write((char)26);
delay(500);
lcd.print ("..");
Serial.println("SMS Selesai Dikirim!");
delay(500);
lcd.setCursor(0,1);
lcd.print (" SMS SENT!! ");
delay(500);
lcd.clear();
}
//Skecth program ini dibuat oleh Dani-Rajacell untuk www.belajarduino.com
//Silahkan pergunakan coding ini secara free dan mohon untuk tidak menghapus marking ini
//sebagai bentuk apresiasi atas free sharing program ini.
//Untuk kebutuhan Module dan Board Arduino silahkan bisa dibeli di :
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
void blinkingLed (long in ) {
unsigned long currentMillis2 = millis();
if (currentMillis2 - previousMillis2 >= in) {
previousMillis2 = currentMillis2;
if (ledState == LOW) {
//https://www.tokopedia.com/rajacell/etalase/arduino-board-module
ledState = HIGH;
} else {
ledState = LOW;
}
lcd.setCursor (14,0);
lcd.print (gasStat);
}
}
program sensor ldr dan hujan
#include <Servo.h>
const int pinLDR = A0;
const int pinRS = A1;
int LEDa = 7; //variabel LED
int LEDb = 6;
Servo servo;
Servo servo1;
void setup() {
Serial.begin(9600);
pinMode(pinLDR,INPUT); //masukan Led
pinMode(pinRS,INPUT); //masukan RS
pinMode(LEDa,OUTPUT); // keluaran lampu Merah (1) tanda Gelap
pinMode(LEDb,OUTPUT); // keluaran lampu Hijau (1) tanda Cerah
servo.attach(5) ; // keluaran lampu Hijau (2) tanda Tidak Hujan
servo1.attach(4) ;
}
float total;
int dataLDR=0; // data LDR dimulai dari 0
int dataRS=0; // data RS dimulai dari 0
void loop (){
dataLDR = analogRead(pinLDR); // data LDR dibaca dari pin analog LDR
if(dataLDR>400) {
digitalWrite(LEDa,HIGH); // lampu merah (1) menyala apabila nilai LDR >400 (Gelap)
servo.write(0);
}
else {
digitalWrite(LEDa,LOW); // lampu hijau (1) mati apabila nilai LDR <400 (Cerah)
servo.write(180);
}
Serial.print("Data LDR = "); // tampilan data LDR di monitor
Serial.println(dataLDR);
dataRS= analogRead(pinRS); // data sensor hujan yang dibaca dari pin analog RS
if(dataRS<900) { // lampu merah (2) menyala apabila nilai RS <900 (Hujan)
digitalWrite(LEDb,HIGH);
servo1.write(0);
}
else {
digitalWrite(LEDb,LOW); // lampu hijau (1) mati apabila nilai LDR <400 (Cerah)
servo1.write(180);
} // lampu merah (2) mati apabila nilai RS >900 (Tidak Hujan)
Serial.print("Data RS = "); // tampilan data RS di monitor
Serial.println(dataRS); // Nilai dari data RS yang akan ditampilkan
}
const int pinLDR = A0;
const int pinRS = A1;
int LEDa = 7; //variabel LED
int LEDb = 6;
Servo servo;
Servo servo1;
void setup() {
Serial.begin(9600);
pinMode(pinLDR,INPUT); //masukan Led
pinMode(pinRS,INPUT); //masukan RS
pinMode(LEDa,OUTPUT); // keluaran lampu Merah (1) tanda Gelap
pinMode(LEDb,OUTPUT); // keluaran lampu Hijau (1) tanda Cerah
servo.attach(5) ; // keluaran lampu Hijau (2) tanda Tidak Hujan
servo1.attach(4) ;
}
float total;
int dataLDR=0; // data LDR dimulai dari 0
int dataRS=0; // data RS dimulai dari 0
void loop (){
dataLDR = analogRead(pinLDR); // data LDR dibaca dari pin analog LDR
if(dataLDR>400) {
digitalWrite(LEDa,HIGH); // lampu merah (1) menyala apabila nilai LDR >400 (Gelap)
servo.write(0);
}
else {
digitalWrite(LEDa,LOW); // lampu hijau (1) mati apabila nilai LDR <400 (Cerah)
servo.write(180);
}
Serial.print("Data LDR = "); // tampilan data LDR di monitor
Serial.println(dataLDR);
dataRS= analogRead(pinRS); // data sensor hujan yang dibaca dari pin analog RS
if(dataRS<900) { // lampu merah (2) menyala apabila nilai RS <900 (Hujan)
digitalWrite(LEDb,HIGH);
servo1.write(0);
}
else {
digitalWrite(LEDb,LOW); // lampu hijau (1) mati apabila nilai LDR <400 (Cerah)
servo1.write(180);
} // lampu merah (2) mati apabila nilai RS >900 (Tidak Hujan)
Serial.print("Data RS = "); // tampilan data RS di monitor
Serial.println(dataRS); // Nilai dari data RS yang akan ditampilkan
}
Langganan:
Postingan (Atom)