Anda di halaman 1dari 21

LAPORAN PRAKTIKUM MIKROKONTROLER

VARIASI POLA MENYALANYA LED CUBE 3X3X3


DENGAN PUSH BUTTON

Disusun oleh :
Restiana Aulia Supendi

12306141003

Ipta Apipah

12306141015

JURUSAN PENDIDIKAN FISIKA


FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS NEGERI YOGYAKARTA
YOGYAKARTA
2015

A. Tujuan
Dapat membuat berbagai macam pola menyalanya LED pada bentuk kubik 3x3x3
dengan menggunakan saklar push button tanpa efek bouncing.

B. Alat dan Bahan


1. 9 buah resistor 220
2. 1 buah pushbutton
3. 3 buah resistor 22 k
4. 6 buah resistor 100
5.

27 buah LED

6. 6 buah push button


7. PCB
8. Transistor 2N22, 2N3904,BC547
9. Kabel penghubung
10. Arduino

Skema rangkaian

Gambar1.1 skema rangkaian

C. Analisis program
Mulai

Pin 2 sampai dengan pin 13


sebagai OUTPUT dan pin 1
sebagai INPUT

Semua led mati

Keadaan led mati


semua ?

YA
Semua layer aktif

led menyala secara berurutan


menbentuk pola berputar

Meng-OFFkan semua led

Arus di layer bawah aktif dan led 2


sampai led 10 menyala secara berurutan

Arus di layer tengah aktif dan led 2


sampai led 10 menyala secara berurutan

TIDAK

Arus di layer atas aktif dan led 2 sampai


led 10 menyala secara berurutan

Meng-OFFkan semua LED dengan pola


off satu per-satu

Meng-aktifkan semua layer

Pola berputar seperti baling-baling

Pola ke samping kanan dan kiri

Pola ke atas dan ke bawah

Pola berjalan menyamping atau miring


seolah-olah seperti melingkupi kubik

Pola berjalan dari tengak ke pinggir dan


sebaliknya

Pola led off satu-persatu

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

// pola jalan ke samping

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

E. Analisis dan Pembahasan


Pada percobaan ini, sama seperti percobaan yang sama dengan percobaan
sebelumnya yaitu kami membuat sembilan macam variasi pola menyalanya LED
yang di bentuk kubik berukuran 3x3x3 dengan cara menanamkan program yang kami
buat pada Arduino, bedanya adalah pada rangkaian ditambahkan pushbutton yang
akan mengontrol jalannnya rangkaia dengan ditambahkan tanpa efek bouncing.
Ketika push button ditekan maka, pola menyalanya led akan berjalan dimana pada
keadaan awal, semua led diatur dalam keadaan tidak menyala. Untuk menghindari
efek bouncing yang sering terjadi pada program Arduino diberikan fungsi if, karena
sekali menekan tombol pushbutton maka akan memberikan 1 perintah, sedangkan
yang terbaca pada rangkaian akan memberikan lebih dari 1 perintah.
Dalam program awal semua led diatur dalam keadaan mati, fungsi if akan
memberikan logika bahwa led berada dalam keadaan mati atau tidak, apabila semua
led berada dalam keadaan mati maka program pola menyalanya led akan berjalan.
Namun, apabila tidak maka semua led akan dimatikan kemudian pola led akan
berjalan.

Sebelum membuat program kita harus memahami terlebih dahulu rangkaian dari led
yang berbentuk kubik dengan ukuran 3x3x3 ini. Berikut adalah gambarannya:
2

LED yang dihubungkan


dengan pin nomor 6
Layer atas
Layer tengah

6
Layer bawah

Gambar(a)

Gambar (b)

Gambar(a) menunjukan susunan LED yang di hubungkan dengan nomor pin


pada arduino sedangkan gambar (b) menunjukan bahwa layer atau boleh dibilang
tinggkat ini di hubungkan dengan transistor dan tentunya pin arduino dimana masingmasing pin 11, 12 dan 13 dipasangkan secara berurutan pada layer atas, tengah dan
bawah. Pin 11,12 dan 13 ini nantinya akan mengatur arus yang menuju layer atau
tingkatan pada led kubik itu akan akan tetap di alirkan atau tidak dialirkan arus.
Dalam percobaan ini kami menggunakan pin 2 sampai dengan pin 13 dan
dalam void setup pada program arduino pin 2 sampai 13 sebagai output, karena pin
2 sampai pin 13 semuanya output maka kita dapat merangkum programnya dengan
menggunakan for. Berikut adalah programnya :
void setup(){
for(int x=2 ;x<=13;x++){
pinMode(x,OUTPUT); }
}
dengan program diatas,dapat diartikan bahwa untuk x yang dimulai dari 2 dimana x
menunjukan nomor pin arduino akan diatur sebagai output sampai x sama dengan 13

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)

Berdasarkan keadaan diatas, untuk masing-masing pin yang tidak dalam


keadaan high, harus dalam keadaan low. Untuk ke pola yang berikutnya maka pin
yang dalam kadaan high pada pola sebelumnya harus di low kan terlebih dahulu.
Selanjutnya yaitu pola ke samping kanan dan kiri, dapat di ilustrasikan sebagai
berikut :

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++){

// off kan semua LED

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

Proses pembuatan rangkaian

Setelah program dijalankan

Anda mungkin juga menyukai