Percobaan kali ini adalah membuat RUNNING LED, yakni sebuah rangkaian LED yang disusun sebanyak lima buah dimana LED akan menyala bergantian dari kiri ke kanan dan dari kanan ke kiri. Kontrol gerakan LED dilakukan dengan menggunakan dua push button.
Perlu diperhatikan bahwa push button dirangkai menggunakan resistor pull down. Jadi ketika tombol ditekan, maka akan menghasilkan logika HIGH, dan ketika dilepas akan menghasilkan logika LOW.
Script Program
Perlu diperhatikan bahwa push button dirangkai menggunakan resistor pull down. Jadi ketika tombol ditekan, maka akan menghasilkan logika HIGH, dan ketika dilepas akan menghasilkan logika LOW.
Script Program
/* Program Running LED
Percobaan 3 Mikrokontroler
*/
// Pengaturan output menggunakan Array
int ledpins[]={2,3,4,5,6}; // Port Output yang digunakan hanya lima dari port 2 ke 5
int i=0;
int val=0; // Variabel untuk menyimpan data
int state=0;
int val1=0;
int state1=0;
int old_val=0;
int old_val1=0;
void setup()
{ // inisialisasi output
for(int i=0; i<5; i++) // jika i kurang dari lima maka nilai i ditambah 1
pinMode(ledpins[i], OUTPUT);
pinMode(9, INPUT); // Tombol Kiri ke kanan
pinMode(10,INPUT); // Tombol Kanan ke kiri
Serial.begin(9600);
}
void loop()
{
val=digitalRead(9); // Membaca tombol dan memasukkannya ke variabel agar bisa di interlock
val1=digitalRead(10);
if((val==HIGH) && (old_val==LOW)){ // Jika tombol kiri ke kanan ditekan maka
state=1-state; // state akan bernilai satu, dan jika state bernilai satu dan tombol ditekan maka state bernilai 0
delay(10); // delay digunakan untuk mencegah bouncing
}
old_val=val; // old val digunakan untuk mencegah bouncing juga
if((val1==HIGH) && (old_val1==LOW)){
state1=1-state1;
delay(10);
}
old_val1=val1;
if (state==1)
//(digitalRead(9)==HIGH)
{
i++; // tambah i satu per satu
while(i==5){i=0;}
Serial.println(i);
digitalWrite(ledpins[i],HIGH);
delay(200);
digitalWrite(ledpins[i],LOW);
}
if (state1==1)
//(digitalRead(10)==HIGH)
{
while(i==0){i=5;}
Serial.println(i);
i--;
digitalWrite(ledpins[i],HIGH);
delay(200);
digitalWrite(ledpins[i],LOW);
}
}
Percobaan 3 Mikrokontroler
*/
// Pengaturan output menggunakan Array
int ledpins[]={2,3,4,5,6}; // Port Output yang digunakan hanya lima dari port 2 ke 5
int i=0;
int val=0; // Variabel untuk menyimpan data
int state=0;
int val1=0;
int state1=0;
int old_val=0;
int old_val1=0;
void setup()
{ // inisialisasi output
for(int i=0; i<5; i++) // jika i kurang dari lima maka nilai i ditambah 1
pinMode(ledpins[i], OUTPUT);
pinMode(9, INPUT); // Tombol Kiri ke kanan
pinMode(10,INPUT); // Tombol Kanan ke kiri
Serial.begin(9600);
}
void loop()
{
val=digitalRead(9); // Membaca tombol dan memasukkannya ke variabel agar bisa di interlock
val1=digitalRead(10);
if((val==HIGH) && (old_val==LOW)){ // Jika tombol kiri ke kanan ditekan maka
state=1-state; // state akan bernilai satu, dan jika state bernilai satu dan tombol ditekan maka state bernilai 0
delay(10); // delay digunakan untuk mencegah bouncing
}
old_val=val; // old val digunakan untuk mencegah bouncing juga
if((val1==HIGH) && (old_val1==LOW)){
state1=1-state1;
delay(10);
}
old_val1=val1;
if (state==1)
//(digitalRead(9)==HIGH)
{
i++; // tambah i satu per satu
while(i==5){i=0;}
Serial.println(i);
digitalWrite(ledpins[i],HIGH);
delay(200);
digitalWrite(ledpins[i],LOW);
}
if (state1==1)
//(digitalRead(10)==HIGH)
{
while(i==0){i=5;}
Serial.println(i);
i--;
digitalWrite(ledpins[i],HIGH);
delay(200);
digitalWrite(ledpins[i],LOW);
}
}