Bermain dengan papan permainan seperti ular tangga, monopoli dan berbagai permainan yang lain memang sangat menyenangkan. Semua permainan ini memerlukan dadu sebagai syarat utama permainan. Akan tetapi, karena ukurannya yang kecil, dadu ini sering kali hilang. Padahal tanpa dadu permainan tidak bisa berjalan.
Jilka hal tersebut terjadi kita bisa membuat dadu digital dengan menggunakan beberapa buah lampu led dan arduino uno. Bahkan hasilkan labih bagus daripada dadu biasa karena saat mengacak nomor, lampu-lampu led pada dadu elektronik tersebut akan berkerlap-kerlip, sangat menarik.
Atau bagi yang hanya iseng dan ingin belajar arduino dapat megikuti totorial kali ini karena tutorial kali ini sedikit lebih rumit daripada tutorial arduino sebelumnya.
Rangkaiannya adalah sebagai berikut:
Resistor yang berhubungan dengan lampu led bernilai 330 ohm sedangkan resistor yang berhubungan dengan saklar tekan bernilai 1k ohm.
Kode program arduino:
int ledPins[7] = {2, 3, 4, 5, 6, 7, 8};
int dicePatterns[7][7] = {
{0, 0, 0, 0, 0, 0, 1}, // 1
{0, 0, 1, 1, 0, 0, 0}, // 2
{0, 0, 1, 1, 0, 0, 1}, // 3
{1, 0, 1, 1, 0, 1, 0}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 1, 1, 1, 1, 1, 0}, // 6
{0, 0, 0, 0, 0, 0, 0} // BLANK
};
int switchPin = 9;
int blank = 6;
void setup()
{
for (int i = 0; i < 7; i++)
{
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW);
}
randomSeed(analogRead(0));
}
void loop()
{if (digitalRead(switchPin))
{
rollTheDice();
}
delay(100);
}
void rollTheDice()
{
int result = 0;
int lengthOfRoll = random(15, 25);
for (int i = 0; i < lengthOfRoll; i++)
{
result = random(0, 6); // result will be 0 to 5 not 1 to 6
show(result);
delay(50 + i * 10);
}
for (int j = 0; j < 3; j++)
{
show(blank);
delay(500);
show(result);
delay(500);
}
}
void show(int result)
{
for (int i = 0; i < 7; i++)
{
digitalWrite(ledPins[i], dicePatterns[result][i]);
}
}
Contoh video dadu digital jika sudah jadi
source: 30 arduino projects for the evil genius
Tidak ada komentar:
Posting Komentar