Devices & Components
Arduino Uno Rev3
SG90 Micro-servo motor
5 mm LED: Red
Resistor 330 ohm
SparkFun Audio-Sound Breakout - WTV020SD
Variable Resistor 10k ohm
Custom PCB
Alphanumeric LCD, 16 x 2
Hardware & Tools
Hot glue gun (generic)
Soldering iron (generic)
Scissor, Electrician
Desoldering Tip, Tenma 21-8220 Desoldering Pump
Wire Stripper & Cutter, 18-10 AWG / 0.75-4mm² Capacity Wires
Solder Wire, Lead Free
Project description
Code
Untitled file
arduino
1#include <LiquidCrystal.h> //inisialisasi library LCD 2#include <Servo.h> //inisialisasi library motor servo 3LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //inisialisasi pin LCD yang digunakan yaitu rs=12,en=11,d4=5,d5=4,d6=3,d7=2 4Servo myservo1; //inisialisasi variabel dari untuk menggerakkan motor servo 5int pos = 0; //inisialisasi keadaan awal dari motor servo yaitu pos=0 6int LED1=6; //inisialisasi pin LED terhubung ke pin 6 arduino 7int soundSensor=8; //inisialisasi pin sensor suara terhubung ke pin 8 arduino 8boolean LEDStatus=false; //inisialisasi variabel LEDStatus berupa tipe data boolean yang memiliki nilai awal yaitu false 9void setup() { //prosedur untuk setup 10Serial.begin(9600); // digunakan untuk memulai komunikasi serial dengan kecepatan transmisi data 9600 bps 11 pinMode(LED1, OUTPUT); //konfigurasi pin LED1 sebagai output 12 pinMode(soundSensor,INPUT); //konfigurasi pin sensor suara sebagai INPUT 13 myservo1.attach(9); //kabel data servo dihubungkan ke pin 9 arduino 14 int a; //inisialisasi variabel a berupa tipe data integer 15 lcd.begin(16,2); //menunjukkan LCD yang digunakan memiliki 16 kolom dan 2 baris 16 lcd.setCursor(16, 0); //untuk menentukan letak kursor pertama atau letak awal karakter pada kolom-17 baris-1 17 lcd.print("Project UAS"); //menampilkan karakter "Project UAS" pada baris pertama 18 lcd.setCursor(16, 1); //untuk menentukan letak kursor kedua atau letak awal karakter pada kolom-17 baris-2 19 lcd.print("MIKRO II"); //menampilkan karakter "MIKRO II" pada baris kedua 20 for(a=0;a<16;a++){ //fungsi for digunakan untuk pengulangan dengan kondisi awal variabel a=0 hingga a<16 dengan menaikkan nilai variabel a sebesar 1 21 lcd.scrollDisplayLeft(); //pernyataan yang diulang adalah input yang ditampilkan pada LCD yang bergerak ke kiri . 22 delay(100); //jeda waktu 100 ms 23 } 24 delay(100); //jeda waktu untuk membuat LCD dalam kondisi awal adalah 100ms 25 lcd.clear(); //setelah jeda waktu 100ms, tampilan LCD seperti semula atau menghapus apa yang ditampilkan sebelumnya untuk selanjutnya menampilkan karakter selanjutnya 26 lcd.setCursor(16, 0); //untuk menentukan letak kursor pertama atau letak awal karakter pada kolom-17 baris-1 27 lcd.print("Kelompok ????"); //menampilkan karakter "Kelompok ????" pada baris pertama 28 lcd.setCursor(16, 1); //untuk menentukan letak kursor kedua atau letak awal karakter pada kolom-17 baris-2 29 lcd.print("TKK_4_C"); //menampilkan karakter "TKK_4_C" pada baris kedua 30 for(a=0;a<16;a++){ //fungsi for digunakan untuk pengulangan dengan kondisi awal variabel a=0 hingga a<16 dengan menaikkan nilai variabel a sebesar 1 31 lcd.scrollDisplayLeft(); //pernyataan yang diulang adalah input yang ditampilkan pada LCD yang bergerak ke kiri . 32 delay(100); //jeda waktu 100ms 33 } 34 delay(100); //jeda waktu untuk membuat LCD dalam kondisi awal adalah 100ms 35 lcd.clear(); //setelah jeda waktu 100ms, tampilan LCD seperti semula atau menghapus apa yang ditampilkan sebelumnya untuk selanjutnya ditampilkan kembali dengan jeda waktu 100ms 36} 37void loop() { //prosedur untuk looping atau pengulangan 38 int a; //inisialisasi variabel a berupa tipe data integer 39 int SensorData=digitalRead(soundSensor); //membaca sinyal keluaran dari sensor berupa data digital yaitu logika 1 atau 0 40 if(SensorData==1){ //jika hasil pembacaan berogika sama dengan 1, maka 41 if(LEDStatus==false){ //jika kondisi lED bernilai false 42 lcd.begin(16,2); 43 lcd.setCursor(16,0); //penentuan letak kursor pada baris pertama 44 lcd.print("Pintu Tertutup"); //menampilkan karakter "Pintu Tertutup" pada baris pertama 45 lcd.setCursor(16,1); //penentuan letak kursor pada baris kedua 46 lcd.print(" "); //berisi spasi pada baris kedua 47 for(a=0;a<16;a++){ //fungsi pengulangan untuk nilai a=0 hingga a<16, variabel a terus bertambah 48 lcd.scrollDisplayLeft(); //karakter yang tampil pada LCD bergerak berjalan ke kiri 49 delay(100); //jeda waktu 100ms 50 } 51 LEDStatus=true; //kondisi LED sama dengan true 52 digitalWrite(LED1,LOW); //memberi nilai LOW pada LED1, atau lampu LED mati 53 for (pos = 90; pos <= 180; pos += 1) { //fungsi perulangan untuk posisi servo dari 90 derajat sampai 180 derajat dengan setiap kenaikan 1 54 myservo1.write(pos); //memberitahu servo untuk pergi ke posisi 'pos' 55 delay(50); //jeda waktu 50ms 56 Serial.print("on"); //menampilkan karakter "on" pada serial monitor 57 Serial.println(""); 58 } 59 } 60 else{ //jika salah, maka 61 lcd.begin(16,2); 62 lcd.setCursor(16,0); //penentuan letak kursor pada baris pertama 63 lcd.print("Pintu Terbuka"); //menampilkan karakter "Pintu Terbuka" pada baris pertama 64 lcd.setCursor(16,1); //penentuan letak kursor pada baris kedua 65 lcd.print(" "); //berisi spasi pada baris kedua 66 for(a=0;a<16;a++){ //fungsi pengulangan untuk nilai a=0 hingga a<16, variabel a terus bertambah 67 lcd.scrollDisplayLeft(); //karakter yang tampil pada LCD bergerak berjalan ke kiri 68 delay(100); //jeda waktu 100ms 69 } 70 LEDStatus=false; //kondisi LED sama dengan false 71 digitalWrite(LED1,HIGH); //memberi nilai HIGH pada LED1, atau lampu LED nyala 72 for (pos = 180; pos >= 90; pos -= 1) { //fungsi perulangan untuk posisi servo dari 180 derajat sampai 90 derajat dengan setiap penurunan 1 73 myservo1.write(pos); //memberitahu servo untuk pergi ke posisi 'pos' 74 delay(50); //jeda waktu 50ms 75 Serial.print("off"); //menampilkan karakter "off" pada serial monitor 76 Serial.println(""); 77 } 78 } 79 } 80}
Downloadable files
The Schematic of our project
made using fritzing
The Schematic of our project

The Schematic of our project
made using fritzing
The Schematic of our project

Comments
Only logged in users can leave comments