Untuk source code (sketch), dituliskan dan upload ke Arduino Uno dengan menggunakan Arduino IDE.
Berikut ini adalah source code (sketch) untuk belajar operasi bitwise AND dengan indikator LED animation.
/*
Program LED bitwise operation
AND
Loki Lang*/
void setup()
{
DDRD = 255;
}
void loop()
{
byte dataLed1 = B00001111;
PORTD = dataLed1;
delay(1000);
byte dataLed2 = B01010101;
PORTD = dataLed2;
delay(1000);
byte dataLed3 = dataLed1 & dataLed2;
PORTD = dataLed3;
delay(1000);
}
Program LED bitwise operation
AND
Loki Lang*/
void setup()
{
DDRD = 255;
}
void loop()
{
byte dataLed1 = B00001111;
PORTD = dataLed1;
delay(1000);
byte dataLed2 = B01010101;
PORTD = dataLed2;
delay(1000);
byte dataLed3 = dataLed1 & dataLed2;
PORTD = dataLed3;
delay(1000);
}
Penjelasan program sebagai berikut.
- DDRD digunakan untuk mendifinisikan PORTD apakah sebagai input atau output. Disini DDRD diberikan nilai 255 atau sama seperti B11111111, yang mana delapan buah pin diberi nilai 1, artinya PORTD tersebut didefinisikan sebagai port output, sementara itu jika diberikan nilai 0, maka pin atau port tersebut didefinisikan sebagai input
- Untuk variable dataLed1 dalam byte (8 bit), dengan nilai awal adalah B00001111, atau 15
- Untuk variable dataLed2 dalam byte (8 bit), dengan nilai awal adalah B01010101, atau 85
- Untuk variable dataLed3 dalam byte (8 bit), dengan nilai hasil operasi logika AND antara datal=Led1 dengan dataLed2, adalah B00000101, atau 5
- Masing-masing nilai variable tersebut akan ditampilkan dalam tampilan LED indikator
- Untuk delay, digunakan untuk memberikan jeda eksekusi dari satu line ke line selanjutnya dalam program, selain itu juga agar hardware dapat menjalankan program dengan lebih stabil
- Durasi delay dalam ms, dengan kata lain 1000 ms sama dengan 1 detik
/*
Program LED bitwise operation
OR, << Left Shift, dan >> Right Shift
Loki Lang
*/
void setup()
{
DDRD = 255;
}
void loop()
{
byte operand1 = B00000001;
byte operand2 = B10000000;
byte result = operand1 | operand2;
PORTD = result;
delay(1000);
for(int i = 0; i < 8; i++)
{
operand1 = operand1 << i;
operand2 = operand2 >> i;
result = operand1 | operand2;
PORTD = result;
delay(1000);
}
}
Program LED bitwise operation
OR, << Left Shift, dan >> Right Shift
Loki Lang
*/
void setup()
{
DDRD = 255;
}
void loop()
{
byte operand1 = B00000001;
byte operand2 = B10000000;
byte result = operand1 | operand2;
PORTD = result;
delay(1000);
for(int i = 0; i < 8; i++)
{
operand1 = operand1 << i;
operand2 = operand2 >> i;
result = operand1 | operand2;
PORTD = result;
delay(1000);
}
}
Penjelasan program:
- DDRD digunakan untuk mendifinisikan PORTD apakah sebagai input atau output. Disini DDRD diberikan nilai 255 atau sama seperti B11111111, yang mana delapan buah pin diberi nilai 1, artinya PORTD tersebut didefinisikan sebagai port output, sementara itu bila diberikan nilai 0, maka pin atau port tersebut didefinisikan sebagai input
- Untuk variable operand1 dalam byte (8 bit), dengan nilai awal adalah 1, atau B00000001, yang nilai bit akan digeser ke kiri
- Untuk variable operand2 dalam byte (8 bit), dengan nilai awal adalah 128, atau B10000000, yang nilai bit akan digeser ke kanan sebanyak i
- Untuk variable result dalam byte (8 bit), dengan merupakan hasil operasi logika OR antara operand1 dengan operand2
- Fungsi variable result ini ialah menampung operasi OR, yang akan ditampilkan ke tampilan LED indikator
- Dengan perulangan menggunakan variable i, dari 1 hingga 7, untuk pergeseran nilai bit ke kanan maupun ke kiri
- Setelah itu nilai dataLed akan digeser ke kanan atau ke kiri sesuai dengan nilai i, yang akan diberikan ke PORTD sebagai nyala LED
- Untuk delay, digunakan untuk memberikan jeda eksekusi dari satu line ke line selanjutnya dalam program, selain itu juga agar hardware dapat menjalankan program dengan lebih stabil
- Durasi delay dalam ms, dengan kata lain 1000 ms sama dengan 1 detik
- Sebagai catatan informasi tambahan, bahwa pergeseran nilai bit satu kali ke kanan sama saja seperti membagi nilai bit dengan pembagi dua
0 Response to "Arduino Tutorial LED Bitwise Operation"
Post a Comment