Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Game Arduino Pong pada Matrix 24x16 dengan MAX7219

Komponen dan persediaan

Arduino Nano R3
× 1
Modul martrix LED 8x8 dengan MAX7219
× 6
Potensiometer putar (generik)
× 2
Buzzer
× 1

Alat dan mesin yang diperlukan

Besi solder (generik)

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Saya membangun konsol pong kecil ini pada susunan 6pcs. Matriks LED 8x8 sesuai petunjuk dan kode dari:https://www.instructables.com/id/Pong/

Alih-alih papan matriks yang dibuat khusus, saya membeli modul 8x8 siap pakai yang murah dengan MAX7219 dari Aliexpress.

Pin "jam" dan "muat" dari setiap papan terhubung bersama. Pin "Din" dari matriks pertama masuk ke Arduino, dan "Dout" ke "Din" dari matriks berikutnya, dll. Dayung pengontrol adalah dua potensiometer 10k yang terhubung ke pin analog A0 dan A1 Arduino dan buzzer terhubung ke pin D9.

Pada akhirnya saya memasukkan perangkat ke dalam kotak plastik dan pengontrol dalam kotak untuk instalasi listrik.

Anda dapat mengunduh pustaka LedControl dari:

https://github.com/wayoda/LedControl

Kode

  • kode
kodeArduino
//Kami selalu harus menyertakan perpustakaan #include "LedControl.h" byte hak cipta; byte skor kiri; int toneloop=1000; byte pongdisplay[]={ // Digunakan saat start up untuk menampilkan "Pong" B11111111, B00000000, B00001001, B00000000, B00001001, B00000000, B00000110, B00000000, B00000000, B00000000, B00000000, B00000000, B01110000, B00000000, B10001000, B00000000, B10001000 , B00000000, B01110000, B00000000, B00000000, B00000000, B00000000, B00000000, B11110000, B00000000, B00001000, B00000000, B00001000, B00000000, B11110000, B00000000, B00000000, B00000000, B00000000, B00000000, B11001111, B00000000, B10001001, B00000000 , B11111111, B00000000, B00000000, B00000000, B00000000, B00000000, }; byte zero[]={ // Digunakan untuk menampilkan '0' saat menampilkan skor B00000000, B00000000, B00111100, B01000010, B01000010, B01000010, B00111100, B00000000 }; byte one[]={ // Digunakan untuk menampilkan '1' saat menampilkan skor B00000000, B00000000, B10001000, B10000100, B11111110, B10000000, B10000000, B00000000 }; byte two[]={ // Digunakan untuk menampilkan '2' ketika menampilkan skor B00000000, B01100010, B01010001, B0101001, B01001001, B01000110, B00000000, B00000000};byte three[]={ // Digunakan untuk menampilkan ' 3' untuk saat menampilkan skor B00000000, B00100110, B01000001, B01001001, B00110110, B00000000, B00000000, B00000000};byte empat[]={ // Digunakan untuk menampilkan '4' untuk saat menampilkan skor B00000000, B00000000, B00001111 B00001000, B00001000, B11111111, B00000000, B00000000};byte lima[]={ // Digunakan untuk menampilkan '5' ketika menampilkan skor B00000000, B00000000, B10011110, B10010010, B10010010, B11110010, B00000000, B00000000};byte displayevens =0;byte displayrow=0;byte displayindex=0;byte displayodds=1;unsigned long time;unsigned long currenttime;/* Sekarang kita membutuhkan LedControl untuk bekerja. pin 12 terhubung ke DataIn pin 11 terhubung ke CLK pin 10 terhubung ke LOAD Kami memiliki 6 MAX72XX. */ mode byte; byte deflect; byte carry; int line; LedControl lc=LedControl (12,11,10,6); randnumber panjang; byte dir; int startpos; baris byte; kolom byte; randNumber panjang; byte mulai; byte diry;int pass;byte limit;#define leftpaddle 0 //kenop pong kiri terhubung ke input analog 0#define rightpaddle 1 //knop pong kanan terhubung ke input analog 1int directionpong;int rightpongval;int leftpongval;byte blinkx;byte pong[]={ // Menyimpan posisi bola dan dayung B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000 , B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B0000 , B00000000, B00000000, B00000000, B00000000, B00000000}; void setup(){ pinMode(dayung kiri, INPUT); // dayung adalah input. pinMode(dayung kanan, INPUT); // dayung adalah input. Serial.begin(9600); // komunikasi serial untuk debugging. Set ke 9600 baud // Pernyataan di bawah ini melalui dan mengatur matriks ke pengaturan yang diberikan lc.shutdown(0,false); lc.setIntensity(0,1); lc.clearDisplay(0); lc.shutdown(1,salah); lc.setIntensity(1,1); lc.clearDisplay(1); lc.shutdown(2,salah); lc.setIntensity(2,1); lc.clearDisplay(2); lc.shutdown(3,salah); lc.setIntensity(3,1); lc.clearDisplay(3); lc.shutdown(4,salah); lc.setIntensity(4,1); lc.clearDisplay(4); lc.shutdown(5,salah); lc.setIntensity(5,1); lc.clearDisplay(5); while(displayevens<5){ while(displayrow<=7){ lc.setRow(displayevens,displayrow,pongdisplay[displayindex]); baris tampilan++; indeks tampilan+=2; } baris tampilan=0; displayevens+=2; } baris tampilan=0; indeks tampilan=1; randomSeed(analogRead(4)); mulai=1; waktu=milis(); waktu sekarang=milis(); while(waktu-waktu<3000){ leftpongval=analogRead(leftpaddle); leftpongval=peta(leftpongval,1023,20,2,0); if(leftpongval==0){ lc.setLed(3,2,7,benar); lc.setLed(3,3,7,salah); lc.setLed(3,4,7,salah); modus=1; batas=2; } if(leftpongval==1){ lc.setLed(3,2,7,benar); lc.setLed(3,3,7,benar); lc.setLed(3,4,7,salah); modus=2; batas=1; } if(leftpongval==2){ lc.setLed(3,2,7,benar); lc.setLed(3,3,7,benar); lc.setLed(3,4,7,benar); modus=3; batas=2; } penundaan(50); lc.clearDisplay(3); waktu sekarang=milis(); } } void loop(){ dayung(); pongsim(); tampilan layar(); } void paddles(){ //membaca data dari paddles dan menampilkannya dalam array int searchbit; int bawa=0; // Serial.print("LeftPaddle:"); // Serial.println(analogRead(dayung kiri)); leftpongval=analogRead(dayung kiri); leftpongval=peta(leftpongval,0,1010,0,13); rightpongval=analogRead(dayung kanan); rightpongval=peta(rightpongval,1023,20,0,13); // Serial.print("Paddle Kanan:"); // Serial.println(rightpongval); //mengosongkan dayung sebelumnya untuk menampilkan dayung berikutnya pong[0]=B00000000; pong[1]=B00000000; pong[46]=B00000000; pong[47]=B00000000; //-------------------------------- dayung kanan if(mode!=3){ if(rightpongval<=7) { rightpongval=peta(rightpongval,0,7,7,0); bitSet(pong[46], rightpongval); if(rightpongval-1>=0){ bitSet(pong[46],rightpongval-1); } else{ bitSet(pong[47], 7); if(mode!=2){ bitSet(pong[47],6); membawa=1; } } if(mode!=2){ if(carry==0){ if(rightpongval-2>=0){ bitSet(pong[46], rightpongval-2); } else{ bitSet(pong[47], 7); membawa=1; } } } } if(rightpongval>7){ rightpongval=map(rightpongval,8,13,7,limit); bitSet(pong[47],rightpongval); bitSet(pong[47],rightpongval-1); if(mode!=2){ bitSet(pong[47],rightpongval-2); } } } else{ pong[46]=B11111111; pong[47]=B11111111; lc.setRow(4,7,pong[46]); lc.setRow(5,7,pong[47]); } //---------------------------------- kiri dayung carry=0; if(leftpongval<=7){ leftpongval=map(leftpongval,0,7,7,0); bitSet(pong[0], leftpongval); if(leftpongval-1>=0){ bitSet(pong[0],leftpongval-1); } else{ bitSet(pong[1], 7); if(mode!=2){ bitSet(pong[1],6); membawa=1; } } if(mode!=2){ if(carry==0){ if(leftpongval-2>=0){ bitSet(pong[0], leftpongval-2); } else{ bitSet(pong[1], 7); } } } } if(leftpongval>7){ leftpongval=map(leftpongval,8,13,7,limit); bitSet(pong[1],leftpongval); bitSet(pong[1],leftpongval-1); if(mode!=2){ bitSet(pong[1],leftpongval-2); } } }void pongsim(){ if( (((baris==2 || baris==3) &&diry ==0) || ((baris==44 || baris==45) &&diry==1) ){ ball_meets_paddle(); } if(start==1){ // Memulai permainan baru randnumber=random(1,7); // Munculkan bit awal acak dir=random(2); // Munculkan gerakan acak mulai dari kiri ke kanan atau kanan ke kiri diry=random(2); // Munculkan arah gerakan y awal secara acak if(diry==0){ // Jika arah y adalah 0. Gerakan dari bawah ke atas line=random(30,34); // Munculkan garis awal acak antara 30-34 bitSet(pong[line],randnumber); // Atur bit pada garis acak dan bit acak sama dengan 1 pada larik pong } if(diry==1){ // Jika arah y adalah 1. Pergerakan dari atas ke bawah garis=random(12,16); // Munculkan garis awal acak antara 12-16 bitSet(pong[line],randnumber); // Atur bit pada baris acak dan bit acak sama dengan 1 pada array pong } start=0; // Atur variabel awal kembali sama dengan 0 } if(diry==0){ // Jika bola bergerak dari bawah ke atas if(dir==0){ // Jika bola bergerak dari kanan ke kiri if (deflect==0 &&carry==0){ // Jika bola tidak membelok atau terbawa ke garis matriks lain-=2; // Majukan bola ke sisi lain dengan mengurangi 2 dari garis pong[line]=pong[line+2] <<1;// Geser bola ke kiri dan setel sama dengan garis baru pong[line+2] =B00000000; // Hapus garis lama bola } if(carry==1){ // Jika bola harus dipindahkan ke garis matriks baru-=3; // Majukan bola ke sisi lain dengan mengurangkan 3 dari garis pong[line]=B00000001; // Atur baris baru pong[line+3]=B00000000; // Hapus baris lama dari ball carry=0; // Atur variabel carry kembali ke 0 return; // Kita selesai di sini } if(deflect==1){ // Jika bola harus membelok dari garis dinding-=2; // Majukan bola ke sisi lain dengan mengurangi 2 dari garis pong[line]=B01000000; // Atur baris baru pong[line+2]=B00000000; // Hapus garis lama dari defleksi bola=0; // Atur variabel defleksi kembali ke 0 dir=1; // Beralih arah ke kiri ke kanan kembali; // Kita selesai di sini } if(bitRead(pong[line],7)==1){ // Jika bola berada di bit ke-7 dari garis if(line==3|| line==5 || line==7 || line==9 || line==11 || line==13 || line==15 || // Jika garisnya ganjil, line==17 || line==19 | | baris==21 || baris==23 || baris==25 || baris==27 || baris==29 || baris==31 || baris==33 || baris==35 || baris ==37 || baris==39 || baris==41 ||baris==43 || baris==45){ carry=1; // Bola perlu dibawa ke pengembalian matriks lain; // Kita selesai di sini } else{ // Jika tidak, bola berada di garis genap if(line!=2){ // Garis tidak boleh 2 karena bola bertemu dayung pada 2 defleksi=1; // Bola harus dibelokkan kembali ke dinding; // Kita selesai di sini } } } } // Komentar di atas harus menjelaskan semua hal di bawah ini. Beberapa hal, parameter yang berbeda. if(dir==1){ if(deflect==0 &&carry==0){ line-=2; pong[baris]=pong[baris+2]>> 1; pong[baris+2]=B00000000; } if(carry==1){ baris--; pong[baris]=B10000000; pong[baris+1]=B00000000; membawa =0; kembali; } if(defleksi==1){ baris-=2; pong[baris]=B00000010; pong[baris+2]=B0000000; membelokkan =0; dir=0; kembali; } if(bitRead(pong[baris],0)==1){ if( baris==2 || baris==4 || baris==6 || baris==8 || baris==10 || baris ==12 || baris==14 || baris==16 || baris==18 || baris==20 || baris==22 || baris==24 || baris==26 || baris==28 || baris==30 || baris==32 || baris==34 || baris==36|| baris==38 || baris==40 ||baris==42 || baris==44 ) { bawa=1; kembali; } else{ if(baris!=3){ deflect=1; kembali; } } } } }//------------------------------------------------------- -diry =1 di bawah if(diry==1){ if(dir==0){ if(deflect==0 &&carry==0){ line+=2; pong[baris]=pong[baris-2] <<1; pong[baris-2]=B00000000; } if(membawa==1){ baris+=1; pong[baris]=B00000001; pong[baris-1]=B00000000; membawa =0; kembali; } if(defleksi==1){ baris+=2; pong[baris]=B01000000; pong[baris-2]=B00000000; membelokkan =0; dir=1; kembali; } if(bitRead(pong[baris],7)==1){ if( baris==5 || baris==7 || baris==9 || baris==11 || baris==13 || baris ==15 || baris==17 || baris==19 || baris==21 || baris==23 || baris==25 || baris==27 || baris==29 || baris==31 || baris==33 || baris==35 || baris==37 || baris==39|| baris==41 ||baris==43 || baris==45){ carry=1; kembali; } else{ if(baris!=44){ deflect=1; kembali; } } } } if(dir==1){ if(deflect==0 &&carry==0){ line+=2; pong[baris]=pong[baris-2]>> 1; pong[baris-2]=B00000000; } jika(membawa==1){ baris+=3; pong[baris]=B10000000; pong[baris-3]=B00000000; membawa =0; kembali; } if(defleksi==1){ baris+=2; pong[baris]=B00000010; pong[baris-2]=B0000000; membelokkan =0; dir=0; kembali; } if(bitRead(pong[baris],0)==1){ if(baris==2|| baris==4 || baris==6 || baris==8 || baris==10 || baris ==12 || baris==14 || baris==16 || baris==18 || baris==20 || baris==22 || baris==24 || baris==26 || baris==28 || baris==30 || baris==32 || baris==34 || baris==36|| baris==38 || baris==40 ||baris==42 || baris==44 ) { bawa=1; kembali; } else{ if(baris!=45){ deflect=1; kembali; } } } } }}void displayscreen(){ displayevens=0; baris tampilan=0; indeks tampilan=0; displayodds=1; while(displayevens<5){ while(displayrow<=7){ lc.setRow(displayevens,displayrow,pong[displayindex]); baris tampilan++; indeks tampilan+=2; } baris tampilan=0; displayevens+=2; } baris tampilan=0; indeks tampilan=1; while(displayodds<6){ while(displayrow<8){ lc.setRow(displayodds,displayrow,pong[displayindex]); baris tampilan++; indeks tampilan+=2; } baris tampilan=0; displayodds+=2; }} void clearscreen(){ int clearing=0; while(membersihkan<49){ pong[mengosongkan]=B00000000; membersihkan++; }}void ball_meets_paddle(){ byte search1=0; if(diry==0){ // bola bergerak ke atas if(dir==0){ //bola bergerak dari kanan ke kiri while(search1<8){ //cari titik dimana bola berada if(bitRead(pong [line],search1)==1){ //menemukan bit di mana bola berada if(line==2){ if( search1!=6 &&search1!=7){ //jika pada baris 2, buat yakin itu bukan pada bit khusus itu if( bitRead(pong[0], search1)==1){ // periksa untuk melihat apakah ada dayung di sana diry=1; //mengalihkan arah y sehingga mengarah ke nada dayung lainnya (9.500.100); } else if( bitRead(pong[0], search1+1)==1){ diry=1; dir=1; nada (9.500.100); if(cari1==0){ bawa=1; } } else { // tidak ada dayung, nada bola meleset (9.500.300); layar bersih(); mulai=1; penundaan (1000); skor kiri(); } } if(search1==6){ //bit khusus, perlu membelokkan jalur yang sama dengan yang masuk if(bitRead(pong[0],7)==1){ //ada dayung di sana pong[2] =B01000000; dir=1; buku harian=1; nada (9.500.100); } else{//melewatkannya, tidak ada dayung. nada (9.500.300); layar bersih(); mulai=1; penundaan (1000); skor kiri(); } } if(search1==7){//special bit, perlu memantul dari dinding terlebih dahulu if(bitRead(pong[0],6)==1){// menemukan paddle pong[2]=B00100000; buku harian=1; dir=1; baris=2; nada (9.500.100); tampilan layar(); } else{//melewatkannya, tidak ada dayung. nada (9.500.300); layar bersih(); mulai=1; penundaan (1000); skor kiri(); } } } if(line==3){ if( search1!=7){ //jika pada baris 3, pastikan tidak pada bit khusus tersebut if( bitRead(pong[1], search1)==1) { // periksa apakah ada dayung di sana diry=1; //mengalihkan arah y sehingga mengarah ke nada dayung lainnya (9.500.100); } else if( bitRead(pong[1], search1+1)==1){ diry=1; dir=1; nada (9.500.100); } else { // tidak ada dayung, nada bola meleset (9.500.300); layar bersih(); mulai=1; penundaan (1000); skor kiri(); } } if(search1==7){//special bit, perlu dibawa ke matriks berikutnya if(bitRead(pong[1],7)==1){ //menemukan dayung di sana //pong[2] =B10000000; //hapus baris yang ada di dir=0; //arahnya sama dengan diry=1; // arah y mengubah nada (9.500.100); } else if(bitRead(pong[0],0)==1){ dir=1; buku harian=1; nada (9.500.100); membawa =0; } else{// tidak ada dayung, nada bola meleset (9.500.300); layar bersih(); mulai=1; penundaan (1000); skor kiri(); } } } } cari1++; } } if(dir==1){//bola bergerak dari kiri ke kanan while(search1<8){ //cari titik dimana bola berada if(bitRead(pong[line],search1)==1) { //menemukan bit pada bola if(line==3){ if( search1!=1 &&search1!=0){ //jika pada line 3, pastikan tidak pada bit khusus if( bitRead(pong[1], search1)==1){ //periksa apakah ada paddle diry=1; // alihkan arah y sehingga bola mengarah ke nada dayung lainnya (9.500.100); } else if(bitRead(pong[1], search1-1)==1){ diry=1; dir=0; nada (9.500.100); if(search1==7){ carry=1; } } else{ // tidak ada dayung, nada bola meleset (9.500.300); layar bersih(); mulai=1; penundaan (1000); skor kiri(); } } if(search1==1){ if(bitRead(pong[1],0)==1){ pong[3]=B00000010; dir=0; buku harian=1; nada (9.500.100); } lain{ nada (9.500.300); layar bersih(); mulai=1; penundaan (1000); skor kiri(); } } if(search1==0){ if(bitRead(pong[1],0)==1){ pong[3]=B000000100; buku harian=1; dir=0; baris=3; nada (9.500.100); tampilan layar(); } lain{ nada (9.500.300); layar bersih(); mulai=1; penundaan (1000); skor kiri(); } } } if(line==2){ if( search1!=0){ if(bitRead(pong[0], search1)==1){ //periksa apakah ada dayung diry=1; // alihkan arah y sehingga bola mengarah ke nada dayung lainnya (9.500.100); } else if(bitRead(pong[0], search1-1)==1){ diry=1; dir=0; nada (9.500.100); } else{ // tidak ada dayung, nada bola meleset (9.500.300); layar bersih(); mulai=1; penundaan (1000); skor kiri(); } } if(search1==0){ if(bitRead(pong[0],0)==1){ // pong[2]=B0000001; baris=2; dir=1; buku harian=1; nada (9.500.100); kembali; } else if(bitRead(pong[1],7)==1){ diry=1; dir=0; nada (9.500.100); membawa =0; } lain{ nada (9.500.300); layar bersih(); mulai=1; penundaan (1000); skor kiri(); } } } } cari1++; } } }//-------------------------------------------------------- ------------------------- if(diry==1){ // bola bergerak ke atas if(dir==0){ //bola bergerak dari kanan ke kiri while(search1<8){ //cari bagian dimana bola berada if(bitRead(pong[line],search1)==1){ //temukan bagian dimana bola berada if(line==44){ if( search1!=6 &&search1!=7){ //jika pada baris 2, pastikan tidak pada bit khusus tersebut if( bitRead(pong[46], search1)==1){ // periksa apakah ada dayung di sana diry=0; //mengalihkan arah y sehingga mengarah ke nada dayung lainnya (9.500.100); } else if( bitRead(pong[46], search1+1)==1){ diry=0; dir=1; nada (9.500.100); if(cari1==0){ bawa=1; } } else { // tidak ada dayung, nada bola meleset (9.500.300); layar bersih(); mulai=1; penundaan (1000); hak skor(); } } if(search1==6){ //special bit, perlu membelokkan jalur yang sama dengan yang masuk if(bitRead(pong[46],7)==1){ //there is a paddle there dir=1; buku harian=0; nada (9.500.100); } else{//melewatkannya, tidak ada dayung. nada (9.500.300); layar bersih(); mulai=1; penundaan (1000); hak skor(); } } if(search1==7){//special bit, perlu memantul dari dinding terlebih dahulu if(bitRead(pong[46],6)==1){// menemukan paddle pong[44]=B00100000; buku harian=0; dir=1; nada (9.500.100); tampilan layar(); baris=44; kembali; } } } if(line==45){ if( search1!=7){ //jika pada baris 3, pastikan tidak pada bit khusus tersebut if( bitRead(pong[47], search1)==1) { // periksa apakah ada dayung di sana diry=0; //mengalihkan arah y sehingga mengarah ke nada dayung lainnya (9.500.100); } else if( bitRead(pong[47], search1+1)==1){ diry=0; dir=1; nada (9.500.100); } else { // tidak ada dayung, nada bola meleset (9.500.300); layar bersih(); mulai=1; penundaan (1000); hak skor(); } } if(search1==7){//special bit, perlu dibawa ke matriks berikutnya if(bitRead(pong[47],7)==1){ //found a paddle there // pong[45] =B10000000; //hapus baris yang ada di line=45; dir=0; //arahnya sama dengan diry=0; // arah y mengubah nada (9.500.100); } else if(bitRead(pong[46],0)==1){ dir=1; buku harian=0; nada (9.500.100); membawa =0; } else{// tidak ada dayung, nada bola meleset (9.500.300); layar bersih(); mulai=1; penundaan (1000); hak skor(); } } } } cari1++; } } if(dir==1){//bola bergerak dari kiri ke kanan while(search1<8){ //cari titik dimana bola berada if(bitRead(pong[line],search1)==1) { //menemukan bit di mana bola berada if(line==45){ if( search1!=1 &&search1!=0){ //jika pada baris 3, pastikan tidak pada bit khusus if( bitRead(pong[47], search1)==1){ //periksa apakah ada diry dayung=0; // alihkan arah y sehingga bola mengarah ke nada dayung lainnya (9.500.100); } else if(bitRead(pong[47], search1-1)==1){ diry=0; dir=0; nada (9.500.100); if(search1==7){ carry=1; } } else{ // tidak ada dayung, nada bola meleset (9.500.300); layar bersih(); mulai=1; penundaan (1000); hak skor(); } } if(search1==1){ if(bitRead(pong[47],0)==1){ pong[43]=B00000010; dir=0; buku harian=0; nada (9.500.100); } lain{ nada (9.500.300); layar bersih(); mulai=1; penundaan (1000); hak skor(); } } if(search1==0){ if(bitRead(pong[47],1)==1){ pong[45]=B000000100; buku harian=0; dir=0; baris=45; nada (9.500.100); tampilan layar(); } lain{ nada (9.500.300); layar bersih(); mulai=1; penundaan (1000); hak skor(); } } } if(line==44){ if( search1!=0){ if(bitRead(pong[46], search1)==1){ //periksa apakah ada paddle diry=0; // alihkan arah y sehingga bola mengarah ke nada dayung lainnya (9.500.100); } else if(bitRead(pong[46], search1-1)==1){ diry=0; dir=0; nada (9.500.100); } else{ // tidak ada dayung, nada bola meleset (9.500.300); layar bersih(); mulai=1; penundaan (1000); hak skor(); } } if(search1==0){ if(bitRead(pong[46],0)==1){ pong[44]=B00000001; baris=44; dir=1; buku harian=0; nada (9.500.100); } else if(bitRead(pong[47],7)==1){ dir=0; buku harian=0; nada (9.500.100); membawa =0; } lain{ nada (9.500.300); layar bersih(); mulai=1; penundaan (1000); hak skor(); } } } } cari1++; } } } lulus=1; search1=0;}kosongkan skorleft(){ clearscreen(); hak cipta++; setcore(); tampilan layar(); if(rightscore==5){ while(blinkx++<4){ clearscreen(); tampilan layar(); penundaan (500); setcore(); tampilan layar(); penundaan (500); } berkedipx=0; nilai hak=0; skor kiri=0; } lain{ penundaan(2000); } clearscreen();}void scoreright(){ clearscreen(); skor kiri++; setcore(); tampilan layar(); if(skor kiri==5){ while(blinkx++<4){ clearscreen(); tampilan layar(); penundaan (500); setcore(); tampilan layar(); penundaan (500); } berkedipx=0; nilai hak=0; skor kiri=0; } lain{ penundaan(2000); } clearscreen();}kosongkan setscore(){ byte setScoreLoop=0; while(setScoreLoop<=7){ if(leftscore==0){ pong[setScoreLoop*2]=nol[setScoreLoop]; } if(skor kiri==1){ pong[setScoreLoop*2]=satu[setScoreLoop]; } if(skor kiri==2){ pong[setScoreLoop*2]=dua[setScoreLoop]; } if(skor kiri==3){ pong[setScoreLoop*2]=tiga[setScoreLoop]; } if(skor kiri==4){ pong[setScoreLoop*2]=empat[setScoreLoop]; } if(skor kiri==5){ pong[setScoreLoop*2]=lima[setScoreLoop]; } if(rightscore==0){ pong[32+(setScoreLoop*2)]=nol[setScoreLoop]; } if(rightscore==1){ pong[32+(setScoreLoop*2)]=satu[setScoreLoop]; } if(rightscore==2){ pong[32+(setScoreLoop*2)]=dua[setScoreLoop]; } if(rightscore==3){ pong[32+(setScoreLoop*2)]=tiga[setScoreLoop]; } if(rightscore==4){ pong[32+(setScoreLoop*2)]=empat[setScoreLoop]; } if(rightscore==5){ pong[32+(setScoreLoop*2)]=five[setScoreLoop]; } setScoreLoop++; } pong[20]=B00011000; pong[22]=B00011000; pong[24]=B00011000; } 

Skema


Proses manufaktur

  1. Game Arduino Gyroscope dengan MPU-6050
  2. Game Arduino Pong - Tampilan OLED
  3. Pengontrol Game Arduino
  4. Kontrol Penerima Koin dengan Arduino
  5. Game Arduino Pong pada Matrix 24x16 dengan MAX7219
  6. Game Arduino Nano Tetris di Matriks 16x8 Buatan Sendiri
  7. Arduino dengan Bluetooth untuk Mengontrol LED!
  8. Game Pixel Chaser
  9. Mengontrol Matriks LED dengan Arduino Uno
  10. NeoMatrix Arduino Pong