Laporan Praktikum Mikrokontroler2
Laporan Praktikum Mikrokontroler2
Disusun oleh :
Restiana Aulia Supendi
12306141003
Ipta Apipah
12306141015
A. Tujuan
Dapat membuat berbagai macam pola menyalanya LED pada bentuk kubik 3x3x3
dengan menggunakan saklar push button tanpa efek bouncing.
27 buah LED
Skema rangkaian
C. Analisis program
Mulai
YA
Semua layer aktif
TIDAK
Selesai
D. Program Arduino
int x=2;
int y=11;
int tombol1=1;
void setup(){
for(x;x<=13;x++){
pinMode(x,OUTPUT);
}
pinMode(1,INPUT);
}
int tombol_lama=0;
int status_led=0;
void loop(){
int tombol1=digitalRead(1);
if(tombol1==1&&tombol1!=tombol_lama)
if(status_led==0){
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
for(int x=2;x<=10;x++){//pola berputar
digitalWrite(x,HIGH);
delay(1000);
digitalWrite(x,LOW);
delay(250);
}
for(int y=11;y<=13;y++){// meng-OFFkan semua LED
digitalWrite(y,LOW);
delay(100);
}
digitalWrite(13,HIGH);//pola menyala layer bawah
for(int x=2;x<=10;x++){
digitalWrite(x,HIGH);
delay(250);
}
digitalWrite(12,HIGH);
for(int x=2;x<=10;x++){//pola menyala layer tengah
digitalWrite(x,HIGH);
delay(250);
}
digitalWrite(11,HIGH);
for(int x=2;x<=10;x++){//pola menyala layer atas
digitalWrite(x,HIGH);
delay(250);
}
for(int y=11;y<=13;y++){// meng-OFFkan semua LED
digitalWrite(y,LOW);
delay(100);
}
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
for(int x=2;x<=10;x++){//pola berputar
digitalWrite(x,HIGH);
delay(1000);
digitalWrite(x,LOW);
delay(250);
}
//pola kincir
digitalWrite(10,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
delay(250);
digitalWrite(10,LOW);
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
digitalWrite(2,HIGH);
digitalWrite(7,HIGH);
delay(250);
digitalWrite(2,LOW);
digitalWrite(7,LOW);
digitalWrite(6,HIGH);
digitalWrite(3,HIGH);
digitalWrite(8,HIGH);
delay(250);
digitalWrite(3,LOW);
digitalWrite(8,LOW);
digitalWrite(6,HIGH);
digitalWrite(4,HIGH);
digitalWrite(9,HIGH);
delay(250);
digitalWrite(4,LOW);
digitalWrite(9,LOW);
digitalWrite(6,HIGH);
digitalWrite(5,HIGH);
digitalWrite(10,HIGH);
delay(250);
digitalWrite(6,LOW);
digitalWrite(5,LOW);
digitalWrite(10,LOW);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
delay(250);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(10,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
delay(250);
digitalWrite(10,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(250);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(10,HIGH);
delay(250);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(10,LOW);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
delay(250);
digitalWrite(2,LOW);// pola keatas dan bawah
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(2,HIGH);
delay(250);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(2,LOW);
digitalWrite(8,HIGH);
digitalWrite(6,HIGH);
digitalWrite(3,HIGH);
delay(250);
digitalWrite(8,LOW);
digitalWrite(6,LOW);
digitalWrite(3,LOW);
digitalWrite(7,HIGH);
digitalWrite(5,HIGH);
digitalWrite(4,HIGH);
delay(250);
digitalWrite(7,LOW);
digitalWrite(5,LOW);
digitalWrite(4,LOW);
digitalWrite(8,HIGH);
digitalWrite(6,HIGH);
digitalWrite(3,HIGH);
delay(250);
digitalWrite(8,LOW);
digitalWrite(6,LOW);
digitalWrite(3,LOW);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(2,HIGH);
delay(250);
digitalWrite(9,LOW); // POLA MIRING
digitalWrite(10,LOW);
digitalWrite(2,LOW);
delay(100);
digitalWrite(2,HIGH);
delay(250);
digitalWrite(2,LOW);
digitalWrite(10,HIGH);
digitalWrite(3,HIGH);
delay(250);
digitalWrite(3,LOW);
digitalWrite(10,LOW);
digitalWrite(4,HIGH);
digitalWrite(6,HIGH);
digitalWrite(9,HIGH);
delay(250);
digitalWrite(4,LOW);
digitalWrite(6,LOW);
digitalWrite(9,LOW);
digitalWrite(5,HIGH);
digitalWrite(8,HIGH);
delay(250);
digitalWrite(5,LOW);
digitalWrite(8,LOW);
digitalWrite(7,HIGH);
delay(250);
digitalWrite(7,LOW);
delay(250);
digitalWrite(6,HIGH);// pola tengah pinggir dan sebaliknya
digitalWrite(5,HIGH);
digitalWrite(10,HIGH);
delay(250);
digitalWrite(6,LOW);
digitalWrite(5,LOW);
digitalWrite(10,LOW);
digitalWrite(3,HIGH);
digitalWrite(2,HIGH);
digitalWrite(4,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
delay(250);
digitalWrite(6,HIGH);
digitalWrite(5,HIGH);
digitalWrite(10,HIGH);
digitalWrite(3,LOW);
digitalWrite(2,LOW);
digitalWrite(4,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
delay(250);
for(int y=11;y<=13;y++){// off kan semua LED
digitalWrite(y,LOW);
delay(250);
}
status_led=1;
}
else if(status_led==1){
for(int y=11;y<=13;y++){// off kan semua LED
digitalWrite(y,LOW);
delay(250);
}
status_led=0;
}tombol_lama=tombol1;
}
Sebelum membuat program kita harus memahami terlebih dahulu rangkaian dari led
yang berbentuk kubik dengan ukuran 3x3x3 ini. Berikut adalah gambarannya:
2
6
Layer bawah
Gambar(a)
Gambar (b)
secara berurutan. Selanjutnya masuk pada proses loop dimana program yang telah
dibuat dapat dijalankan, untuk proses yang pertama adalah pin 11, 12 dan 13 on/high
yang berarti arus akan dialirkan pada semua layer sehingga untuk satu led yang nomor
pin arduinonya di nyalakan maka led akan menyala ketiga-tiganya lalu ke pola yang
pertama yaitu pola berputar dengan program :
for(int x=2;x<=10;x++){//pola berputar
digitalWrite(x,HIGH);
delay(1000);
digitalWrite(x,LOW);
delay(250);}
disini led akan menyala secara bergantian atau berurutan yang dimulai dari pin no. 2
sampai dengan pin10 dengan proses ketika dia sudah menyala saat itu juga langsung
mati yang waktunya kita atur dalam program dengan menuliskan delay(x) x ini
menunjukan waktunya, kemudian dilanjutkan dengan meng-offkan semua led secara
berurutan, disini kita tidak menggunakan pin 2 sampai 10 lagi untuk mengoffkan led
tetapi langsung dengan tidak menglirkan arus pada layer dan disini secara langsung
didapatkan pola led mati secara berurutan.
for(int y=11;y<=13;y++){// meng-OFFkan semua LED
digitalWrite(y,LOW);
delay(100);}
selanjutnya pola menyalakan hanya layer bawah saja dengan program berikut ini
digitalWrite(13,HIGH);
for(int x=2;x<=10;x++){
digitalWrite(x,HIGH);
delay(250); }
perlu di perhatikan bahwa untuk menyalakan led secara berurutan yang dibawah saja,
maka layer bawah saja yang di aliri arus sehingga pin 13 itu high sedangkan pin 11
dan pin 12 layernya tidak dialiri arus atau boleh dituliskan low. Disini led yang sudah
menyala secara berurutan tadi ketika dia sudah menyala tidak langsung di offkan.
Pola menyala layer tengah dengan program tidak jauh berbeda dengan yang hanya
menyala di layer bawah saja disini pin 12 yang awalnya low sekarang high sehingga
layer tengahpun bisa aktif dan led menyala secara berurutan berikut adalah
programnya:
digitalWrite(12,HIGH);
for(int x=2;x<=10;x++){//pola menyala layer tengah
digitalWrite(x,HIGH);
delay(250);}
selanjutnya yaitu pola menyala layer atas yang tidak jauh berbeda dengan layer bawah
dan tengah, disini pin 11 keadaan high dan led akan menyala secara berurutan berikut
programnya
digitalWrite(11,HIGH);
for(int x=2;x<=10;x++){//pola menyala layer atas
digitalWrite(x,HIGH);
delay(250);}
sebenarnya dapat dilihat dari ketiga pola yang terbentuk sebelumnya yaitu dari pola
layer bawah saja yang menyala secara berurutan sampai dengan pola layer atas yang
menyala secara berurutan dan dikarenakan led yang menyala tidak langsung di offkan
maka seperti membentuk pola yang baru jadi seperti led itu menyala bergantian dari
bawah sampai ke atas mengelilingi bentuk kubik setelah itu semua LED di offkan.
Untuk program pola yang lainnya di sini pin 11,12,dan 13 selalu high yang
berarti bahwa ketika satu pin high maka led dengan nomor pin yang sama, ketigatiganya akan menyala.
Pola berputar seperti baling-baling dapat di gambarkan sebagai berikut :
7
1
0
3
0
2
0
9
keterangan
(a)
(b)
pin
keadaan
5,6,10
HIGH
2,6,7
HIGH
6,3,8
HIGH
4,6,9
HIGH
5,6,10
HIGH
(c)
(d)
(e)
no
Ke kanan Ke kiri
keadaan
2,3,4
7,8,9
HIGH
5,6,10
5,6,10
HIGH
7,8,9
2,3,4
HIGH
Program di mulai dari pola ke kanan terlebih dahulu dimana ketika pin 2,3,4 sudah
menyala dan jika akan dilanjutkan ke keadaan selanjutnya yaitu pin 5,6,10
menyala ,maka pin pada keadaan sebelumnya harus dalam keadaan low begitu juga
untuk pola ke kiri. Dapat dilihat pada table diatas, ketika akan masuk pola ke kiri, pin
7,8,9 yang masih dalam keadaan menyala di off kan terlebih dahulu sebentar saja lalu
di on kan kembali.
Kemudian pola berjalan ke atas dan kebawah di gambarkan sebagai berikut:
no
1
2
3
Ke bawah
2,9,10
3,6,8
4,5,7
Ke atas
4,5,7
3,6,8
2,9,10
keadaan
HIGH
HIGH
HIGH
Sama seperti pola ke samping kanan dan kiri, untuk pola ke atas dan bawah
juga untuk memulai pola ke bawah, semua pin harus dalam keadaan low, dan
untuk pola ke bawah yang dilanjutkan dengan pola ke atas pin 4,5,7
yangtadinya keadaan high lalu di low kan dahulu sebentar kemudian dalam
keadaan high lagi untuk memulai pola keatas.
Pola berjalan menyamping atau miring seolah-olah seperti melingkupi kubik
di gambarkan seperti berikut:
no
pin
keadaan
HIGH
2,3,10
HIGH
4,6,9
HIGH
5,8
HIGH
HIGH
Progam dimulai dengan pin 2 keadaan high kemudian pin 2,3,10 keadaan high
sedangkan pin 2 low begitu juga seterusnya sampai pin 7 keadaan high dan pin 7 dilow kan kembali. Pola ini apabila dijalankan akan membentuk seperti led yang
bergerak melingkupi kubik.
Selanjutnya yaitu pola menyala dari tengah ke samping dan sebaliknya yang di
gambarkan seperti berikut :
no
1
pin
keadaan
5,6,10
HIGH
2,3,4,7,8,9
LOW
5,6,10
LOW
2,3,4,7,8,9
HIGH
Pola yang terakhir yaitu semua led akan off secara berurutan dengan
menggunakan program yang dapat disingkat program seperti berikut
for(int y=11;y<=13;y++){
digitalWrite(y,LOW);
delay(250); }
setelah semua program selesai dijalankan maka arduino akan kembali
menjalankan program awal yang biasa disebut dengan kembali ke proses looping dan
akan terus melooping sampai tidak ada sumber untuk menyala.
Dalam percobaan ini, tidak semua program yang di buat secara ringkas
misalnya saja pada pola berputar seperti baling-baling yang begitu panjang sehingga
ukuran file yang dihasilkan besar. Selain itu, led pada layer bawah menyala sangat
redup yang di karenakan led di pasang dengan cara di seri sehingga arus yang
mencapai layer atas kecil.
F. Kesimpulan
Dengan menggunakan program arduino kita dapat memvariasi berbagai
macam pola nyalanya led yang bentuk kubik 3x3x3 dan dengan menggunakan
pushbutton tanpa efek bouncing dapat meminimalisir efek bouncing yang sering
terjadi pada pushbutton
Dokomentasi