Cara kerja :
Alat ini bertugas untuk mengingatkan kita kala hujan mulai turun. Jadi semisal hujan mulai turun
berupa gerimis rintik-rintik, maka air akan mengenai permukaan sensor dan alarm berupa buzzer pun
akan berbunyi sebagai pengingatnya.
Keterangan Rangkaian :
Bisa Menggunakan Segala Jenis Arduino (UNO, NANO, MEGA, MINI, dll)
Kaki RS LCD ===> pin 2 Arduino
Kaki E LCD ===> pin 3 Arduino
Kaki D1 LCD ===> pin 4 Arduino
Kaki D2 LCD ===> pin 5 Arduino
Kaki D3 LCD ===> pin 6 Arduino
Kaki D4 LCD ===> pin 7 Arduino
Kaki RW LCD ===> GND (Ground)
Kaki VO LCD ===> Output Potensio
Pin Outpun Rain Sensor ===> Pin A5 Arduino
Pin Positif Buzzer ===> Pin 8 Arduino
void setup()
{
//Inialisasi jumlah baris dan kolom lcd
lcd.begin(16, 2);
//Inialisasi status I/O
pinMode(pinHujan, INPUT);
pinMode(pinBuzzer, OUTPUT);
//Menghapus tulisan lcd
lcd.clear();
//Menuliskan kata pada lcd
lcd.setCursor(0, 0);
lcd.print("Alat Pendeteksi");
lcd.setCursor(0, 1);
lcd.print("Hujan .....");
delay(3000);
}
void loop()
{
//Variabel data adalah hasil pembacaan pin sensor hujan
data = analogRead(pinHujan);
Water level sensor adalah suatu sensor yang mampu mendeteksi air maupun ketinggian air menurut
panjang alat tersebut. Alat ini mampu mengeluarkan output analog yang akan dicacah Arduino menjadi
1024 bagian pada ADC nya (Analog to Digital Converter). 1024 itu terdiri dari angka 0 samapi dengan
1023. Jadi semakin tinggi air yang menyentuh sensor, maka nilai outputnya semakin besar pula.
Program di atas, di atur agar alarm berbunyi saat output water level sensor bernilai 400 ke atas. Jadi saat
air menyentuh bagian bawah sensor, maka alarm berupa buzzer pun berbunyi. Nilai ini bisa diatur sesuai
dengan kebutuhan.
Keterangan Rangkaian :
Bisa Menggunakan Segala Jenis Arduino (UNO, NANO, MEGA, MINI, dll)
Kaki RS LCD ===> pin 2 Arduino
Kaki E LCD ===> pin 3 Arduino
Kaki D1 LCD ===> pin 4 Arduino
Kaki D2 LCD ===> pin 5 Arduino
Kaki D3 LCD ===> pin 6 Arduino
Kaki D4 LCD ===> pin 7 Arduino
Kaki RW LCD ===> GND (Ground)
Kaki VO LCD ===> Output Potensio
Pin Outpun Water Level Sensor ===> Pin A5 Arduino
Pin Positif Buzzer ===> Pin 8 Arduino
Script Program
/* ---------- ALAT PENDETEKSI KETINGGIAN AIR ----------- */
/* ----------- Dibuat oleh Tim Creator------------ */
void setup()
{
//Inialisasi jumlah baris dan kolom lcd
lcd.begin(16, 2);
//Inialisasi status I/O
pinMode(pinAir, INPUT);
pinMode(pinBuzzer, OUTPUT);
//Menghapus tulisan lcd
lcd.clear();
//Menuliskan kata pada lcd
lcd.setCursor(0, 0);
lcd.print("Alateteksi");
lcd.setCursor(0, 1);
lcd.print("Ketinggian);
delay(3000);
}
void loop()
{
//Variabel data adalah hasil pembacaan pin sensor air
data = analogRead(pinAir);
Note :
void.setup () “digunakan untuk sekali program berjalan”
void.loop () “digunakan untuk mengulang ulang program”
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); // atur alamat LCD ke 0x27 untuk tampilan 16 karakter dan 2 baris
void setup()
{
lcd.init(); // inisialisasi lcd
lcd.backlight(); // untuk menampilkan pencahayaan pada lcd
}
void loop()
{
lcd.setCursor(0,0); // untuk menampilkan karakter dari kolom 0 dan baris 0
lcd.print("Hello, world!"); // untuk menampilkan tulisan ke lcd
lcd.scrollDisplayRight (); // untuk menampilkan tulisan berjalan dari arah kanan
delay (100); // delay saat tulisan berjalan
lcd.clear ();
#include <Wire.h>;
void setup(){
Wire.begin();
Serial.begin(9600);
while (!Serial);
Serial.println("cari alamat I2C");
}
void loop(){
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ ){
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0){
Serial.print("..................... 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4){
Serial.print("Tidak menemukan 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("tidak menemukan I2C");
else
Serial.println("Finished");
delay(4000);
}
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd.init();
lcd.backlight();
}
void loop()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("INSERT YOUR TEXT");
lcd.setCursor(0,1);
lcd.print("----- HERE -----");
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("YOU");
delay(700);
lcd.setCursor(5,0);
lcd.print("CAN");
delay(700);
lcd.setCursor(10,0);
lcd.print("DO");
delay(700);
lcd.setCursor(14,0);
lcd.print("IT");
delay(3000);
lcd.clear();
lcd.setCursor(3,0);
lcd.print("THANK YOU");
lcd.setCursor(3,1);
lcd.print("---------");
delay(3000);
Rangkaian Alat
delay(1000);
}
// delay program
delay(100);
Cara kerja
Sensor Jarak yang berfungsi sebagai sensor adanya benda didepannya. Hal itu akan disalurkan ke mikrokontroler
pada kasus ini digunakan Arduino Nano yang akan mengolah sinyal trigger tersebut untuk menggerakan servo.
Fungsi utama dari servo yaitu membuka dan menutup tempat sampah berdasarkan adanya trigger sinyal sensor dan
waktu. Pada saat kondisi terbuka dan tidak ada benda yang menghalangi sensor, maka akan didelay selama 3 detik
untuk proses penutupan tempat sampah. Setelah proses penutupan cek kondisi didalam ruangan tempat sampah, cek
apakah kondisi sudah dalam kondisi penuh atau belum. Jika sudah penuh maka buzzer dibunyikan dan terdapat
notifikasi di layar LCD 16×2
Skema rangkaian :
Komponenen yang dibutuhkan antara lain :
1) Arduino Nano
2) Driver LCD PCF8574
3) LCD 16×2
4) Ultrasonic HC-SR04 2 pcs
5) Servo
6) LM2596
7) Adaptor 12v 2A
8) Sensor Proximity
9) Buzzer
10) Tempat / box pcb
11) Tempat sampah
12) dan alat pendukung lainnya
Script program :
1
2
3 //www.nyebarilmu.com
4
5 #include <Servo.h>
6 #include <Wire.h>
7 #include <LiquidCrystal_PCF8574.h>
8
9 #define echoPin2 4
10 #define trigPin2 5
11 #define buzzer 6
12 #define echoPin 7
13 #define trigPin 8
14 #define LEDPin 13
15
16 LiquidCrystal_PCF8574 lcd(0x38); //dapat dicek menggunakan i2c finder
17
18 Servo myservo;
19
20 int maximumRange = 30;
21 int minimumRange = 00;
22 unsigned long mulai, selesai, over, duration, distance, duration2, distance2;
23 float detik;
24 boolean a=0;
25
26 void setup() {
27 Serial.begin (9600);
28 lcd.begin(16,2);
29 lcd.setBacklight(255);
30
31 lcd.setCursor(00,00);
32 lcd.print(" nyebarilmu.com ");
33 lcd.setCursor(00,1);
34 lcd.print(" sampah pintar");
35 delay(2000);
36 lcd.clear();
37
38 pinMode(trigPin, OUTPUT);
39 pinMode(echoPin, INPUT);
40 pinMode(LEDPin, OUTPUT);
41 pinMode(buzzer, OUTPUT);
42
43 pinMode(trigPin2, OUTPUT);
44 pinMode(echoPin2, INPUT);
45 // digitalWrite(buzzer, LOW);
46 digitalWrite(LEDPin, LOW);
47
48 myservo.attach(9);
49 mulai=0;
50 }
51
52 void tim(){
53 over = (mulai-selesai) % 3600000;
54 detik = int(over / 1000);
55 }
56
57 void cek_jarak(){
58 digitalWrite(trigPin, LOW); delayMicroseconds(2);
59 digitalWrite(trigPin, HIGH); delayMicroseconds(10);
60 digitalWrite(trigPin, LOW);
61 duration = pulseIn(echoPin, HIGH);
62
63 //perhitungan untuk dijadikan jarak
64 distance = duration/58.2;
65
66 digitalWrite(trigPin2, LOW); delayMicroseconds(2);
67 digitalWrite(trigPin2, HIGH); delayMicroseconds(10);
68 digitalWrite(trigPin2, LOW);
69 duration2 = pulseIn(echoPin2, HIGH);
70
71 //perhitungan untuk dijadikan jarak
72 distance2 = duration2/58.2;
73 }
74
75 void cek_kondisi(){
76 lcd.clear();
77 while(1){
78 cek_jarak();
79 digitalWrite(buzzer, HIGH);
80 lcd.setCursor(00,00);
81 lcd.print("Tempat sampah");
82 lcd.setCursor(00,1);
83 lcd.print(" -Full- ");
84 if(distance2 > 10){break; lcd.clear();
85 }
86 }}
87
88 void loop() {
89 cek_jarak();
90
91 if (distance < 30 && a==0) {
92 lcd.clear(); a=1;
93 while(1){
94 cek_jarak();
95 lcd.setCursor(00,00);
96 lcd.print("Jarak:");
97 lcd.print(distance);
98 myservo.write(180); //90 derajat
99 mulai = millis();
100 tim();
101 lcd.setCursor(00,1);
102 lcd.print("Timer:");
103 if (detik <= 9) {lcd.print("0");}
104 lcd.print(detik,0);
105 if(detik==5) {digitalWrite(LEDPin, HIGH); }
106 if ((detik>5) && distance>30) { break; lcd.clear();}
107 if ((detik>=3) && distance>30) { break; lcd.clear();}
108 if ((detik>=8) && distance<30 && a==1) { break; lcd.clear();}
109 }
110 }
111
112 if (distance < 30 && a==1) {
113 lcd.clear();
114 while(1){
115 cek_jarak();
116
117 myservo.write(90); //0 derajat
118
119 lcd.setCursor(00,00);
120 lcd.print("1:");
121 lcd.print(distance);
122 lcd.setCursor(9,00);
123 lcd.print("2:");
124 lcd.print(distance2);
125 lcd.setCursor(00,1);
126 lcd.print("Stand-By - 1");
127
128 cek_kondisi();
129 if (distance>30) { break; lcd.clear();}
130 }
131 }
132
133 if (distance > 30) {
134 selesai= millis();
135 detik = 0;
136 digitalWrite(LEDPin, LOW);
137 myservo.write(90); //0 derajat
138 a=0;
139
140 lcd.setCursor(00,00);
141 lcd.print("1:");
142 lcd.print(distance);
143 lcd.print(" ");
144 lcd.setCursor(9,00);
145 lcd.print("2:");
146 lcd.print(distance2);
147 lcd.print(" ");
148 lcd.setCursor(00,1);
149 lcd.print("Stand-By");
150 }
151
152 if(distance2 <= 10){ cek_kondisi();}
153
154 delay(50);
155 }
156
Penjelasan program
a. Penjelasan Kode program pertama
1) Pada program diatas menggunakan timer sebagai waktu limit untuk pembukaan tutup secara otomatis
2) Jarak sensing benda untuk membukanya tempat sampah yaitu kurang dari 30 cm
3) Timer setting untuk penutupan secara otomatis yaitu 3 detik dengan kondisi jarak sensing dari
pembacaan sensor lebih dari 30 cm
4) Misal saat 3 detik masih terdeteksi jarak sensing kurang dari 30 cm, maka terdapat pengondisian detik
ke-8 akan tertutup otomatis
5. Alat pendeteksi gas LPG dan kebakaran menggunakan Arduino + MQ2( or MQ9) + LCD
SCREEN +I2C module + buzzer / Led
Manfaat :
Sensor MQ-2 adalah sensor yang digunakan untuk mendeteksi konsentrasi gas yang mudah terbakar di udara serta
asap dan keluaran membaca sebagai tegangan analog. Sensor gas asap MQ-2 dapat langsung diatur sensitifitasnya
dengan memutar trimpotnya. Gas yang dapat dideteksi diantaranya : LPG, i-butane, propane, methane , alcohol,
Hydrogen, smoke. Sensor MQ-2 berfungsi mendeteksi adanya asap yang diakibatkan karena kebakaran.
Cara kerja :
Sistem dapat bekerja apabila saklar ON/OFF ditekan. Saat saklar ON maka sensor gas MQ2 mulai membaca ada
atau tidaknya kadar gas di sekitar sensor. Apabila terjadi kebocoran, setelah LCD menunjukkan angka 500ppm
untuk kadar gas maka relai akan nyala sehingga kipas berputar. Nyalanya relai diikuti dengan bekerjanya modul
GSM SIM800L untuk mengirim pesan singkat atau telepon sesuai dengan yang telah diatur.
Skema Rangkaian
Circuit Connection
LCD display to i2c display : simply connect LcD dispaly to i2c display module with parallel i2c to
arduino
------------------------------------------
i2c to Arduino
VCC to 5V
GND to GND
SDA TO A4
SCL TO A5
------------------------------------------
Arduino to Gas sensor
GND to GND
VCC to 5V
A0 to A0
--------------------------------------------
BUZZER&LED TO ARDUINO
+VE TO I/O13
-VE TO GND
----------------------------------------------
Add i2c library to Arduino library
Source code:
// jika data Analog pada sensor Asap lebih besar dari batas
else if (analogSensor > sensorThres)
{
digitalWrite(redLED, HIGH);
tone(pinAlarm, 1000, 200);
delay(100);
Manfaat :
Mengendalikan sistem smart home dengan praktis dengan smartphone digenggaman tanpa mencari saklar
dan dapat mengurangi pemakaian listrik yang berlebih
Source Code/Sketch :
/*************************************
* Program : Project 57. Kontrol 4 lampu via android
* Input : Module Bluetooth HC-05
* Output : 4 Relay
* 125 Proyek Arduino Inkubatek
* www.tokotronik.com
* ***********************************/
#include <SoftwareSerial.h>
SoftwareSerial mySerial(9, 8); // RX, TX
byte in_serial,str;
void setup(){
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
delay(1000);
mySerial.begin(9600);
}
void loop(){
str=mySerial.read();
switch(str){
case 'A': //RELAY 1 ON
digitalWrite(2,1);break;
case 'a': //RELAY 1 OFF
digitalWrite(2,0);break;
case 'B': //RELAY 2 ON
digitalWrite(3,1);break;
case 'b': //RELAY 2 OFF
digitalWrite(3,0);break;
case 'C': //RELAY 3 ON
digitalWrite(4,1);break;
case 'c': //RELAY 3 OFF
digitalWrite(4,0);break;
case 'D': //RELAY 4 ON
digitalWrite(5,1);break;
case 'd': //RELAY 4 OFF
digitalWrite(5,0);break;
}
}
Jalannya Alat :
1. Rangkai hardware Arduino dengan relay dan modul bluetooth seperti rangkaian (lihat skematik).
2. Upload program di atas.
3. Pasang power supply sistem : 9 Vdc. Pastikan lampu indikator (merah) nyala dan lampu modul
bluetooth (biru/merah) berkedip
4. Pastikan aplikasi “Bluetooth SPP Pro” sudah Anda instal, jika belum instal dulu aplikasinya Anda
bisa copy filenya di CD atau Anda juga bisa instal lewat Play store.
7. Membuat Kipas Pemadam Api Otomatis Menggunakan Arduino dan Sensor Api
Kebakaran merupakan bencana yang sering dikarenakan kelalaian manusia. Kebakaran dapat dicegah
dengan memadamkan api sebelum terlanjur meluas. cara kerja dari kipas ini yakni kipas otomatis
menyala saat sensor mendeteksi adanya api. Juga disertai dengan buzzer dan LCD sebagai
pelengkapnya .
1) 1 buah Arduino (bisa UNO, MINI, NANO, MEGA, dll, bisa didapat Di Sini)
2) 1 buah LCD 16×2 (Bisa didapat Di Sini)
3) 1 set Pin Header Male untuk LCD (Opsional, Bisa didapat Di Sini)
4) 1 buah Potensio 10K (Bisa didapat Di Sini)
5) 1 buah Buzzer (Bisa didapat Di Sini)
6) 1 buah Sensor Api/Flame Sensor (Bisa didapat Di Sini)
7) Breadboard/Projectboard jika diperlukan (Bisa diperoleh Di Sini)
8) Kabel jumper secukupnya (Bisa diperoleh Di Sini)
9) Library LiquidCrystal.h (Jika belum punya, bisa download Di Sini)
Keterangan Rangkaian :
Bisa Menggunakan Segala Jenis Arduino (UNO, NANO, MEGA, MINI, dll), karena penomoran pinnya
sama. Tinggal cocokkan Saja nomor Pin-Pin nya.
Kaki RS LCD ===> pin 2 Arduino
Kaki E LCD ===> pin 3 Arduino
Kaki D4 LCD ===> pin 4 Arduino
Kaki D5 LCD ===> pin 5 Arduino
Kaki D6 LCD ===> pin 6 Arduino
Kaki D7 LCD ===> pin 7 Arduino
Kaki RW LCD ===> GND (Ground)
Kaki VO LCD ===> Output Potensio
Kaki DO (Digital Output) Sensor ===> pin 8 Arduino
Salah satu kaki Buzzer ===> pin 9 Arduino
Kaki push Buzzer yang lain ===> pin 5V
Pin IN3 pada driver motor L298N ===> pin 10 Arduino
Pin IN4 pada driver motor L298N ===> pin 11 Arduino
Pin OUT3 pada driver motor L298N ===> salah satu pin motor/kipas
Pin OUT4 pada driver motor L298N ===> pin motor/kipas yang lain
Pin 12V pada driver L298N ===> sumber power (di sini menggunakan baterai 9V)
Pin Ground (GND) pada driver motor L298N ===> terhubung ke ground Arduino
Kaki vcc pada masing-masing komponen hubungkan ke sumber power positif 5v (bisa dari 5v Arduino)
Kaki gnd/ground pada masing-masing komponen hubungkan ke sumber negatif power (dihubungkan ke
pin gnd Arduino)
Script Program
// ---------- Project Kipas Pemadam Api Otomatis ------------ //
// ------------ Berbasis Arduino dan Sensor Api ------------- //
// ------------- Dibuat oleh :Tim Robotik -------------- //
pinMode(pinMotor1, OUTPUT);
pinMode(pinMotor2, OUTPUT);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Ready);
delay(1000);
}
// jika data sensor berupa logic LOW atau tidak ada api
if (dataSensor == LOW)
{
// kipas & buzzer mati
digitalWrite(pinBuzzer, HIGH);
digitalWrite(pinMotor1, LOW);
digitalWrite(pinMotor2, LOW);
Sumber : http://legionberbagi.blogspot.com/
a. arduino uno r3
b. mini servo
c. led
d. bluetooth hc06 atau 05
e. sterofoam atau gabus atau apa aja yang bisa dibuat rumah rumahan (kalau perlu)
f. lcd 2 x16
g. potensiometer
h. resistor 100 ohm
i. protoboard, atau projectboard
j. sensor ultrasonic
k. jumper seperlunya
l. dan sebuah smartphone android
nah kita perlu juga menggunakan library servonya, kalau belum punya bisa ambil disini
penghubungan pinnya sebagai berikut:
LCD ke ARDUINO
VSS = GND
VDD = 5V
V0 = POTENSIO (KAKI TENGAH POTENSIO)
RS = 12
E = 11
RW = GND
D4 = 5
D5 = 4
D6 = 3
D7 = 2
BUZZER = 8
LED BIRU = A4
LED HIJAU = A3
SERVO = 9
PROGRAM
#define echoPin 6
#define trigPin 7
#define ledbiru A4
#define ledhijau A3
int maximumRange = 200; // Maximum range needed
int minimumRange = 0; // Minimum range needed
long duration, distance; // Duration used to calculate distance
int state = 0;
int flag = 0;
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#include <Servo.h>
Servo myservo;
void setup() {
pinMode(8, OUTPUT);
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledbiru, OUTPUT);
pinMode(ledhijau, OUTPUT);
digitalWrite(ledhijau, LOW);
lcd.begin(16, 2);
myservo.attach(9);
lcd.setCursor(0,1);
lcd.print("--PORTAL TUTUP--");
digitalWrite(ledhijau,LOW);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration/58.2;
Serial.println(distance);
delay(100);
if (distance<=10){
lcd.setCursor(0,0);
lcd.print("----ADA TAMU----");
digitalWrite(ledbiru,HIGH);
}
if (distance<=10){
digitalWrite(8,HIGH);
delay(100);
digitalWrite(8,LOW);
delay(300);
}
else{
digitalWrite(ledbiru,LOW);
digitalWrite(8,LOW);
lcd.setCursor(0,0);
lcd.print("-TIDAK ADA TAMU-");
}
if (Serial.available() > 0){
state = Serial.read();
flag=0;
}
if (state=='1'){
if (flag ==0){
digitalWrite(ledhijau,HIGH);
lcd.setCursor(0,1);
lcd.print("-PORTAL TERBUKA-");
myservo.write(180);
delay(3000);
myservo.write(90);
lcd.setCursor(0,1);
lcd.print("--PORTAL TUTUP--");
digitalWrite(ledhijau,LOW);
flag = 1;
}
}
}
9. system parkir cerdas
Skema rangkaian :
Script program :
/*ParkingL02.pde
Arduining.com 08 JUL 2012
Code used in the production of the Youtube material.
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
void setup(){
myservo.attach(ServoM); // attaches the servo.
//================================================================
void loop(){
Display(Available);
if(digitalRead(In)==0)
{
if(Available != 0){
Available--;
myservo.write(BarUp);
delay(3000);
myservo.write(BarLow);
}
}
if(digitalRead(Exit)==0)
{
if(Available != CAPACITY){
Available++;
myservo.write(BarUp);
delay(3000);
myservo.write(BarLow);
}
}
}
/*-------------------------------------------------------------------
Put the segments according to the number.
--------------------------------------------------------------------*/
void Display(int number){
byte segs = ~segments[number]; //"~" is used for commom anode.
digitalWrite(segA, bitRead(segs, 0) );
digitalWrite(segB, bitRead(segs, 1) );
digitalWrite(segC, bitRead(segs, 2) );
digitalWrite(segD, bitRead(segs, 3) );
digitalWrite(segE, bitRead(segs, 4) );
digitalWrite(segF, bitRead(segs, 5) );
digitalWrite(segG, bitRead(segs, 6) );
}
10. traffic light berdasarkan kerapatan kendaraan
1) Jika ada lalu lintas di semua sinyal, maka sistem akan bekerja secara normal dengan mengendalikan
sinyal satu per satu.
2) Jika tidak ada lalu lintas di dekat sinyal, maka sistem akan melewati sinyal ini dan akan beralih ke
yang berikutnya. Misalnya, jika tidak ada kendaraan pada sinyal 2, 3 dan saat ini sistem
memungkinkan kendaraan pada sinyal 1 untuk lewat. Kemudian setelah sinyal 1, sistem akan beralih
ke sinyal 4 melewatkan sinyal 2 dan 3.
3) Jika tidak ada lalu lintas sama sekali dari 4 sinyal, sistem akan berhenti pada sinyal saat ini dan hanya
akan bergerak pada sinyal berikutnya jika akan ada lalu lintas di sinyal lain
Cara kerja :
Empat sensor ultrasonik dihubungkan dengan Arduino. Arduino akan membaca dari sensor-sensor ini dan
akan menghitung jarak. Sensor ini dapat mengukur dari 2 hingga 400 cm.
Sensor ultrasonik pada dasarnya memancarkan gelombang ultrasonik dari pelatuk dan diterima oleh gema
setelah membelokkan objek. Untuk menghasilkan gelombang, kita harus mengatur pemicu pada tinggi
untuk 10 kita yang akan mengirimkan ledakan sonik 8 siklus pada 40 KHz yang akan mengenai objek dan
setelah memukul objek, gelombang akan diterima oleh gema. Gema kemudian akan memberi tahu kami
waktu gelombang telah berjalan di dalam kita (mikro detik). Kami kemudian akan mengubah waktu ini
menjadi jarak yang ditempuh dengan menggunakan S = v * t.
LED terhubung ke Arduino melalui resistor 220 ohm. Perlunya menggunakan resistor dengan LED.
Resistor membatasi arus yang mengalir melalui LED. Jika Anda tidak akan menggunakannya maka LED
akan segera terbakar. Anda dapat menggunakan nilai resistor dari 100 ohm hingga 10k ohm dengan LED.
Semakin besar nilai LED, semakin sedikit arus yang akan berlalu.
Scrip program 2 :
Kita akan memperbarui sistem ini dengan ketika kendaraan mencoba untuk bergerak bahkan
selama sinyal merah itu akan menyalakan alarm untuk memperingatkan pengemudi kendaraan
dan akan mengirimkan peringatan ke sipir lalu lintas dengan gambar.
#include<TimerOne.h>
void setup(){
Serial.begin(115200);
Timer1.initialize(100000); //Begin using the timer. This function must be called first. "microseconds" is
the period of time the timer takes.
Timer1.attachInterrupt(softInterr); //Run a function each time the timer period finishes.
void loop()
{
// If there are vehicles at signal 1
if(S1<t)
{
signal1Function();
}
// This is interrupt function and it will run each time the timer period finishes. The timer period is set at
100 milli seconds.
void softInterr()
{
// Reading from first ultrasonic sensor
digitalWrite(triggerpin1, LOW);
delayMicroseconds(2);
digitalWrite(triggerpin1, HIGH);
delayMicroseconds(10);
digitalWrite(triggerpin1, LOW);
time = pulseIn(echopin1, HIGH);
S1= time*0.034/2;
void signal1Function()
{
Serial.println("1");
low();
// Make RED LED LOW and make Green HIGH for 5 seconds
digitalWrite(signal1[0], LOW);
digitalWrite(signal1[2], HIGH);
delay(redDelay);
void signal2Function()
{
Serial.println("2");
low();
digitalWrite(signal2[0], LOW);
digitalWrite(signal2[2], HIGH);
delay(redDelay);
void signal3Function()
{
Serial.println("3");
low();
digitalWrite(signal3[0], LOW);
digitalWrite(signal3[2], HIGH);
delay(redDelay);
void signal4Function()
{
Serial.println("4");
low();
digitalWrite(signal4[0], LOW);
digitalWrite(signal4[2], HIGH);
delay(redDelay);
Sistem Kontrol Sinyal Lalu Lintas Berbasis Jalan 4 Arah Menggunakan Sensor Arduino dan IR
1) Arduino Nano
2) IR Transmitter Sensor
3) IR Receiver Sensor
4) 10k Resistor
5) 220ohm resistor
6) 100ohm resistor
7) Led (Red, Green, Yellow).
8) Veroboard
9) Some Jumper wire
11. Pengisian Lampu dengan Tenaga surya