Hai Komunitas Peretas.
Saya Simone Adobs dan ini adalah proyek ketiga saya yang saya rilis di Hackster. Ini adalah proyek pertama saya di mana saya membuat struktur dengan karton, kertas, dan lem panas, yang berisi Arduino dan komponen lainnya.
Saya harap Anda akan menyukainya, karena saya menghabiskan beberapa jam untuk itu! Sekarang mari kita mulai dengan proyeknya.
Jawabannya sangat sederhana:ketika Anda mengklik angka pada Keypad, Arduino akan mengaktifkan kotak yang sesuai.
Saat Anda menyalakan kotak, Arduino secara instan akan beralih ke giliran pemain berikutnya.
Anda dapat memulai ulang game jika mengklik tombol "0" pada keypad - Arduino memulai ulang sendiri.
Anda dapat dengan mudah mengenali pemain karena meskipun LED Dot Matrix hanya berwarna merah, setiap pemain memiliki pola tertentu yang dibentuk oleh LED 2x2:
Untuk pertanyaan, saran, kritik atau penjelasan kode, jangan ragu untuk berkomentar di bawah. Jika Anda menyukai proyek ini, tinggalkan suka dan lihat proyek saya yang lain!
Kode
Tech-TrisC/C++
#include #include #include #include #define Reset_AVR() wdt_enable(WDTO_30MS); while(1) {} LedControl lc=LedControl(12,10,11,1);bool player1=true,q1=false,q2=false,q3=false,q4=false,q5=false,q6=false,q7 =false,q8=false,q9=false;int row,col,rowPlays,colPlays,result,player,winner;char hexaKeys[4][3] ={ {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'}};int drama[3][3 ] ={ {0,0,0}, {0,0,0}, {0,0,0}};byte rowPins[4] ={8, 7, 6, 5};byte colPins[3] ={4, 3, 2};Keypad customKeypad =Keypad( makeKeymap(hexaKeys), rowPins, colPins, 4, 3); void setup() { lc.shutdown(0,false); lc.setIntensity(0,0); lc.clearDisplay(0);}void loop() { int customKey =customKeypad.getKey(); lukisan (customKey); menang (hasil); if (pemenang==1) { lc.clearDisplay(0); while (pemenang==1) { char customKey =customKeypad.getKey(); if (customKey=='0') { Reset_AVR(); } lc.setLed(0,1,4,true); lc.setLed(0,2,5,benar); lc.setLed(0,3,6,benar); lc.setLed(0,4,7,benar); lc.setLed(0,4,6,benar); lc.setLed(0,4,5,benar); lc.setLed(0,4,4,true); lc.setLed(0,4,3,benar); lc.setLed(0,4,2,benar); lc.setLed(0,4,1,true); lc.setLed(0,4,0,true); lc.setLed(0,5,0,benar); lc.setLed(0,6,0,benar); lc.setLed(0,3,0,benar); lc.setLed(0,2,0,benar); } } else if (pemenang==2) { lc.clearDisplay(0); while (pemenang==2) { char customKey =customKeypad.getKey(); if (customKey=='0') { Reset_AVR(); } lc.setLed(0,2,0,benar); lc.setLed(0,3,0,benar); lc.setLed(0,4,0,true); lc.setLed(0,5,0,benar); lc.setLed(0,2,1,benar); lc.setLed(0,2,2,benar); lc.setLed(0,2,3,benar); lc.setLed(0,2,4,true); lc.setLed(0,3,4,benar); lc.setLed(0,4,4,true); lc.setLed(0,5,4,true); lc.setLed(0,5,5,benar); lc.setLed(0,5,6,benar); lc.setLed(0,5,7,benar); lc.setLed(0,4,7,benar); lc.setLed(0,3,7,benar); lc.setLed(0,2,7,benar); } }}int round_player() { if (player1) { player1=false; hasil=1; } else { pemain1=benar; hasil=2; } kembalikan hasil;}void win(int player) { if (plays[0][0]==player &&play[0][1]==player &&play[0][2]==player) { winner=pemain; } else if (memainkan[1][0]==pemain &&memainkan[1][1]==pemain &&memainkan[1][2]==pemain) { winner=pemain; } else if (memainkan[2][0]==pemain &&memainkan[2][1]==pemain &&memainkan[2][2]==pemain) { winner=pemain; } else if (memainkan[0][0]==pemain &&memainkan[1][0]==pemain &&memainkan[2][0]==pemain) { winner=pemain; } else if (memainkan[0][1]==pemain &&memainkan[1][1]==pemain &&memainkan[2][1]==pemain) { winner=player; } else if (memainkan[0][2]==pemain &&memainkan[1][2]==pemain &&memainkan[2][2]==pemain) { winner=pemain; } else if (memainkan[0][0]==pemain &&memainkan[1][1]==pemain &&memainkan[2][2]==pemain) { winner=pemain; } else if (memainkan[0][2]==pemain &&memainkan[1][1]==pemain &&memainkan[2][0]==pemain) { winner=pemain; }}void switch_on_led(int col, int row, int colPlays, int rowPlays) { if (player1) { lc.setLed(0,col,row,true); lc.setLed(0,col+1,baris-1,true); } else { lc.setLed(0,kol,baris-1,benar); lc.setLed(0,col+1,baris,benar); } play[rowPlays][colPlays]=round_player();}lukisan kosong(int bottone) { switch (bottone) { case 49:if (!q1){ switch_on_led(0,7,0,0); q1=benar; } merusak; kasus 50:if (!q2) { switch_on_led(3,7,0,1); q2=benar; } merusak; kasus 51:if (!q3) { switch_on_led(6,7,0,2); q3=benar; } merusak; kasus 52:if (!q4) { switch_on_led(0,4,1,0); q4=benar; } merusak; kasus 53:if (!q5) { switch_on_led(3,4,1,1); q5=benar; } merusak; kasus 54:if (!q6) { switch_on_led(6,4,1,2); q6=benar; } merusak; kasus 55:if (!q7) { switch_on_led(0,1,2,0); q7=benar; } merusak; kasus 56:if (!q8) { switch_on_led(3,1,2,1); q8=benar; } merusak; kasus 57:if (!q9) { switch_on_led(6,1,2,2); q9=benar; } merusak; kasus 48:Reset_AVR(); merusak; }}
Skema
tris_1Nd6QnEjNE.fzz