Jeu Arduino Pong sur matrice 24x16 avec MAX7219
Composants et fournitures
| × | 1 | ||||
| × | 6 | ||||
| × | 2 | ||||
| × | 1 |
Outils et machines nécessaires
|
Applications et services en ligne
|
À propos de ce projet
J'ai construit cette petite console de pong sur un ensemble de 6 pièces. Matrices LED 8x8 selon instructions et code de :https://www.instructables.com/id/Pong/
Au lieu de cartes matricielles sur mesure, j'ai acheté des modules 8x8 prêts à l'emploi bon marché avec MAX7219 d'Aliexpress.
Les broches « horloge » et « charge » de chaque carte sont toutes connectées ensemble. La broche "Din" de la première matrice va à Arduino, et "Dout" à "Din" de la matrice suivante, etc. Les palettes de contrôle sont deux potentiomètres 10k connectés aux broches analogiques A0 et A1 d'Arduino et le buzzer est connecté à la broche D9.
Au final, j'ai mis l'appareil dans une boîte en plastique et les contrôleurs dans des boîtes pour l'installation électrique.
Vous pouvez télécharger la bibliothèque LedControl à partir de :
https://github.com/wayoda/LedControl
Code
- code
codeArduino
//Nous devons toujours inclure la bibliothèque #include "LedControl.h" byte rightscore ; octet leftscore ; int boucle de tonalité=1000 ; octet pongdisplay[]={ // Utilisé au démarrage pour afficher "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, B110010000, B00000000, B10001001, B00001000 , B11111111, B00000000, B00000000, B00000000, B00000000, B00000000, } ; octet zéro[]={ // Utilisé pour afficher un '0' lors de l'affichage du score B00000000, B00000000, B00111100, B01000010, B01000010, B01000010, B00111100, B00000000 } ; byte one[]={ // Utilisé pour afficher un '1' pour l'affichage du score B00000000, B00000000, B10001000, B10000100, B11111110, B10000000, B10000000, B00000000 } ; byte two[]={ // Permet d'afficher un '2' lors de l'affichage du score B00000000, B01100010, B01010001, B01010001, B01001001, B01000110, B00000000, B00000000};byte trois[]={ // Permet d'afficher un ' 3' pour l'affichage du score B00000000, B00100110, B01000001, B01001001, B00110110, B00000000, B00000000, B00000000};byte quatre[]={ // Utilisé pour afficher un '4' pour l'affichage du score B00000000, B00000000, B00001111, B00001000, B00001000, B11111111, B00000000, B00000000};byte cinq[]={ // Permet d'afficher un '5' lors de l'affichage du score 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;/* Nous avons maintenant besoin d'un LedControl avec lequel travailler. la broche 12 est connectée au DataIn. La broche 11 est connectée au CLK. La broche 10 est connectée à LOAD. Nous avons 6 MAX72XX. */mode d'octet ; déviation d'octet ; report d'octet ; ligne d'intit diry;int pass;byte limit;#define leftpaddle 0 //le bouton pong gauche est connecté à l'entrée analogique 0#define rightpaddle 1 // le bouton pong droit est connecté à l'entrée analogique 1int directionpong;int rightpongval;int leftpongval;byte blinkx;byte pong[]={ // Stocke la position de la balle et des raquettes 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, B00000000 , B00000000, B00000000, B00000000, B00000000, B00000000} ; void setup(){ pinMode(leftpaddle, INPUT); //la palette est une entrée. pinMode(rightpaddle, INPUT); // la palette est une entrée. Serial.begin(9600); // communication série pour le débogage. Défini à 9600 bauds // Ces états ci-dessous passent en revue et configurent les matrices aux paramètres donnés lc.shutdown(0,false); lc.setIntensity(0,1) ; lc.clearDisplay(0) ; lc.shutdown(1,false); lc.setIntensity(1,1) ; lc.clearDisplay(1); lc.shutdown(2,false); lc.setIntensity(2,1) ; lc.clearDisplay(2) ; lc.shutdown(3,false); lc.setIntensity(3,1) ; lc.clearDisplay(3) ; lc.shutdown(4,faux); lc.setIntensity(4,1) ; lc.clearDisplay(4) ; lc.shutdown(5,false); lc.setIntensity(5,1) ; lc.clearDisplay(5) ; while(displayevens<5){ while(displayrow<=7){ lc.setRow(displayevens, displayrow, pongdisplay[displayindex]); displayrow++; indice d'affichage+=2 ; } displayrow=0; afficherevens+=2 ; } displayrow=0; indice d'affichage=1 ; randomSeed(analogRead(4)); début=1; heure=millis(); heure actuelle=millis(); while(currenttime-time<3000){ leftpongval=analogRead(leftpaddle); leftpongval=map(leftpongval,1023,20,2,0) ; if(leftpongval==0){ lc.setLed(3,2,7,true); lc.setLed(3,3,7,false); lc.setLed(3,4,7,false); mode=1 ; limite=2 ; } if(leftpongval==1){ lc.setLed(3,2,7,true); lc.setLed(3,3,7,true); lc.setLed(3,4,7,false); mode=2 ; limite=1 ; } if(leftpongval==2){ lc.setLed(3,2,7,true); lc.setLed(3,3,7,true); lc.setLed(3,4,7,true); mode=3 ; limite=2 ; } retard (50); lc.clearDisplay(3) ; heure actuelle=millis(); } } boucle vide(){ palettes(); pongsim(); écran d'affichage(); } void paddles(){ // lit les données des palettes et les affiche dans le tableau int searchbit; int retenue=0 ; // Serial.print("LeftPaddle:"); // Serial.println(analogRead(leftpaddle)); leftpongval=analogRead(leftpaddle); leftpongval=map(leftpongval,0,1010,0,13); rightpongval=analogRead(rightpaddle); rightpongval=map(rightpongval,1023,20,0,13); // Serial.print("RightPaddle:"); // Serial.println(rightpongval); //efface la palette précédente pour afficher la suivante pong[0]=B00000000; pong[1]=B00000000; pong[46]=B00000000; pong[47]=B00000000; //-------------------------------- pagaie droite if(mode!=3){ if(rightpongval<=7) { rightpongval=map(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) ; porter=1 ; } } if(mode!=2){ if(carry==0){ if(rightpongval-2>=0){ bitSet(pong[46], rightpongval-2); } else{ bitSet(pong[47], 7); porter=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]); } //------------------------------------------------ palette gauche 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) ; porter=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( ((ligne==2 || ligne==3) &&diry ==0) || ((ligne==44 || ligne==45) &&diry==1) ){ ball_meets_paddle(); } if(start==1){ // Commencer une nouvelle partie randnumber=random(1,7); // Trouver un bit de départ aléatoire dir=random(2); // Créer un mouvement aléatoire commençant de gauche à droite ou de droite à gauche diry=random(2); // Proposer une direction de mouvement y de départ aléatoire if(diry==0){ // Si la direction y est 0. Mouvement de bas en haut line=random(30,34); // Proposez une ligne de départ aléatoire entre 30 et 34 bitsSet(pong[line],randnumber); // Définit le bit sur la ligne aléatoire et le bit aléatoire égal à 1 dans le tableau pong } if(diry==1){ // Si la direction y est 1. Mouvement de la ligne du haut vers le bas=random(12,16); // Proposez une ligne de départ aléatoire entre 12 et 16 bitsSet(pong[line],randnumber); // Définit le bit sur la ligne aléatoire et le bit aléatoire égal à 1 dans le tableau pong } start=0; // Remet la variable de départ égale à 0 } if(diry==0){ // Si la balle se déplace de bas en haut if(dir==0){ // Si la balle se déplace de droite à gauche si (deflect==0 &&carry==0){ // Si la balle ne dévie pas ou ne se déplace pas vers une autre matrice line-=2; // Faire avancer la balle vers l'autre côté en soustrayant 2 de la ligne pong[line]=pong[line+2] <<1;// Décaler la balle vers la gauche et la mettre égale à la nouvelle ligne pong[line+2] =B00000000; // Efface l'ancienne ligne de la balle } if(carry==1){ // Si la balle doit être transférée dans une nouvelle matrice line-=3; // Faire avancer la balle vers l'autre côté en soustrayant 3 de la ligne pong[line]=B00000001; // Définit la nouvelle ligne pong[line+3]=B00000000; // Efface l'ancienne ligne de la balle carry=0; // Remettez la variable de report à 0 return; // Nous avons terminé ici } if(deflect==1){ // Si la balle doit dévier de la ligne du mur-=2; // Faire avancer la balle vers l'autre côté en soustrayant 2 de la ligne pong[line]=B01000000; // Définit la nouvelle ligne pong[line+2]=B00000000; // Efface l'ancienne ligne de la balle deflect=0; // Remettez la variable deflect à 0 dir=1; // Bascule la direction de gauche à droite return ; // Nous avons terminé ici } if(bitRead(pong[line],7)==1){ // Si la balle est sur le 7ème bit de la ligne if(line==3|| line==5 || line==7 || line==9 || line==11 || line==13 || line==15 || // Si la ligne est une ligne impaire line==17 || line==19 | | ligne==21 || ligne==23 || ligne==25 || ligne==27 || ligne==29 || ligne==31 || ligne==33 || ligne==35 || ligne ==37 || ligne==39 || ligne==41 ||ligne==43 || ligne==45){ carry=1; // La balle doit être transférée vers une autre matrice return ; // Nous avons terminé ici } else{ // Sinon la balle est sur une ligne paire if(line!=2){ // La ligne ne peut pas être 2 car la balle rencontre la raquette à 2 deflect=1; // La balle doit dévier du retour du mur ; // Nous avons terminé ici } } } } // Les commentaires ci-dessus devraient expliquer tout ce qui suit. Quelques trucs, différents paramètres. if(dir==1){ if(deflect==0 &&carry==0){ line-=2; pong[ligne]=pong[ligne+2]>> 1; pong[ligne+2]=B00000000; } if(carry==1){ ligne--; pong[line]=B10000000; pong[line+1]=B00000000; porter=0; retourner; } if(deflect==1){ line-=2; pong[line]=B0000010; pong[ligne+2]=B0000000; déviation=0 ; dir=0; retourner; } if(bitRead(pong[line],0)==1){ if( line==2 || line==4 || line==6 || line==8 || line==10 || line ==12 || ligne==14 || ligne==16 || ligne==18 || ligne==20 || ligne==22 || ligne==24 || ligne==26 || ligne==28 || ligne==30 || ligne==32 || ligne==34 || ligne==36|| ligne==38 || ligne==40 ||ligne==42 || ligne==44 ) { porter=1; retourner; } else{ if(line!=3){ deflect=1; retourner; } } } } }//--------------------------------------------- -diry =1 ci-dessous if(diry==1){ if(dir==0){ if(deflect==0 &&carry==0){ line+=2; pong[ligne]=pong[ligne-2] <<1; pong[line-2]=B00000000; } if(carry==1){ line+=1; pong[line]=B00000001; pong[line-1]=B00000000; porter=0; retourner; } if(déviation==1){ ligne+=2; pong[line]=B01000000; pong[line-2]=B00000000; déviation=0 ; dir=1; retourner; } if(bitRead(pong[ligne],7)==1){ if( ligne==5 || ligne==7 || ligne==9 || ligne==11 || ligne==13 || ligne ==15 || ligne==17 || ligne==19 || ligne==21 || ligne==23 || ligne==25 || ligne==27 || ligne==29 || ligne==31 || ligne==33 || ligne==35 || ligne==37 || ligne==39|| ligne==41 ||ligne==43 || ligne==45){ carry=1; retourner; } else{ if(line!=44){ deflect=1; retourner; } } } } if(dir==1){ if(deflect==0 &&carry==0){ line+=2; pong[ligne]=pong[ligne-2]>> 1; pong[line-2]=B00000000; } if(carry==1){ line+=3; pong[line]=B10000000; pong[line-3]=B00000000; porter=0; retourner; } if(déviation==1){ ligne+=2; pong[line]=B0000010; pong[ligne-2]=B0000000; déviation=0 ; dir=0; retourner; } if(bitRead(pong[line],0)==1){ if(line==2|| line==4 || line==6 || line==8 || line==10 || line ==12 || ligne==14 || ligne==16 || ligne==18 || ligne==20 || ligne==22 || ligne==24 || ligne==26 || ligne==28 || ligne==30 || ligne==32 || ligne==34 || ligne==36|| ligne==38 || ligne==40 ||ligne==42 || ligne==44 ) { porter=1; retourner; } else{ if(line!=45){ deflect=1; retourner; } } } } }}void displayscreen(){ displayevens=0; displayrow=0; indice d'affichage=0 ; cotes d'affichage=1 ; while(displayevens<5){ while(displayrow<=7){ lc.setRow(displayevens, displayrow,pong[displayindex]); displayrow++; indice d'affichage+=2 ; } displayrow=0; afficherevens+=2 ; } displayrow=0; indice d'affichage=1 ; while(displayodds<6){ while(displayrow<8){ lc.setRow(displayodds,displayrow,pong[displayindex]); displayrow++; indice d'affichage+=2 ; } displayrow=0; cotes d'affichage+=2 ; }} void clearscreen(){ int clearing=0; while(clearing<49){ pong[clearing]=B00000000; compensation++; }}void ball_meets_paddle(){ byte search1=0; if(diry==0){ // balle qui monte if(dir==0){ //balle qui se déplace de droite à gauche while(search1<8){ //trouve le bit sur lequel se trouve la balle if(bitRead(pong [line],search1)==1){ // trouvé le bit sur lequel se trouve la balle if(line==2){ if( search1!=6 &&search1!=7){ //si c'est sur la ligne 2, make sûr que ce n'est pas sur ces bits spéciaux if( bitRead(pong[0], search1)==1){ // vérifier qu'il y a une palette là diry=1; //changer la direction y pour qu'il se dirige vers une autre tonalité de palette (9,500,100); } else if( bitRead(pong[0], search1+1)==1){ diry=1; dir=1; ton (9 500 100); if(search1==0){ carry=1; } } else { // pas de pagaie, j'ai raté le ton de la balle (9 500 300); écran propre(); début=1; retard(1000); scoregauche(); } } if(search1==6){ //bit spécial, doit dévier le même chemin qu'il vient if(bitRead(pong[0],7)==1){ //il y a une pagaie là pong[2] =B01000000; dir=1; diry=1; ton (9 500 100); } else{//manqué, pas de pagaie. ton (9 500 300); écran propre(); début=1; retard(1000); scoregauche(); } } if(search1==7){//bit spécial, doit d'abord rebondir sur le mur if(bitRead(pong[0],6)==1){// a trouvé le paddle pong[2]=B00100000; diry=1; dir=1; ligne=2 ; ton (9 500 100); écran d'affichage(); } else{//manqué, pas de pagaie. ton (9 500 300); écran propre(); début=1; retard(1000); scoregauche(); } } } if(line==3){ if( search1!=7){ //si c'est sur la ligne 3, assurez-vous qu'il n'est pas sur ces bits spéciaux if( bitRead(pong[1], search1)==1) { // vérifie qu'il y a une pagaie là-bas diry=1; //changer la direction y pour qu'il se dirige vers une autre tonalité de palette (9,500,100); } else if( bitRead(pong[1], search1+1)==1){ diry=1; dir=1; ton (9 500 100); } else { // pas de pagaie, j'ai raté le ton de la balle (9 500 300); écran propre(); début=1; retard(1000); scoregauche(); } } if(search1==7){//bit spécial, doit être transféré à la matrice suivante if(bitRead(pong[1],7)==1){ //trouvé une pagaie là //pong[2] =B10000000; //efface la ligne sur laquelle il se trouvait dir=0 ; //la direction est la même dir=1; // la direction y change de ton (9 500 100); } else if(bitRead(pong[0],0)==1){ dir=1; diry=1; ton (9 500 100); porter=0; } else{// pas de pagaie, j'ai raté le ton de la balle (9 500 300); écran propre(); début=1; retard(1000); scoregauche(); } } } } recherche1++ ; } } if(dir==1){//la balle se déplace de gauche à droite tandis que(search1<8){ //trouver le bit sur lequel se trouve la balle if(bitRead(pong[line],search1)==1) { // a trouvé le bit sur lequel se trouve la balle if(line==3){ if( search1!=1 &&search1!=0){ //si elle est sur la ligne 3, assurez-vous qu'elle n'est pas sur un bit spécial if( bitRead(pong[1], search1)==1){ //vérifie s'il y a une palette diry=1; // change la direction y pour que la balle se dirige vers l'autre son de palette (9,500,100); } else if(bitRead(pong[1], search1-1)==1){ diry=1; dir=0; ton (9 500 100); if(search1==7){ carry=1; } } else{ // pas de pagaie, j'ai raté le ton de la balle (9 500 300); écran propre(); début=1; retard(1000); scoregauche(); } } if(search1==1){ if(bitRead(pong[1],0)==1){ pong[3]=B0000010; dir=0; diry=1; ton (9 500 100); } else{ ton(9,500,300); écran propre(); début=1; retard(1000); scoregauche(); } } if(search1==0){ if(bitRead(pong[1],0)==1){ pong[3]=B00000100; diry=1; dir=0; ligne=3; ton (9 500 100); écran d'affichage(); } else{ ton(9,500,300); écran propre(); début=1; retard(1000); scoregauche(); } } } if(line==2){ if( search1!=0){ if(bitRead(pong[0], search1)==1){ //vérifier s'il y a une palette diry=1; // change la direction y pour que la balle se dirige vers l'autre son de palette (9,500,100); } else if(bitRead(pong[0], search1-1)==1){ diry=1; dir=0; ton (9 500 100); } else{ // pas de pagaie, j'ai raté le ton de la balle (9 500 300); écran propre(); début=1; retard(1000); scoregauche(); } } if(search1==0){ if(bitRead(pong[0],0)==1){ // pong[2]=B00000001; ligne=2 ; dir=1; diry=1; ton (9 500 100); retourner; } else if(bitRead(pong[1],7)==1){ diry=1; dir=0; ton (9 500 100); porter=0; } else{ ton(9,500,300); écran propre(); début=1; retard(1000); scoregauche(); } } } } recherche1++ ; } } }//----------------------------------------------- ------------------------- if(diry==1){ // boule en mouvement if(dir==0){ // boule en mouvement de droite à gauche while(search1<8){ //trouve le bit sur lequel se trouve la balle if(bitRead(pong[line],search1)==1){ // trouve le bit sur lequel se trouve la balle if(line==44){ if( search1!=6 &&search1!=7){ //si c'est sur la ligne 2, assurez-vous qu'il n'est pas sur ces bits spéciaux if( bitRead(pong[46], search1)==1){ // vérifiez qu'il y a une pagaie là-bas diry=0; //changer la direction y pour qu'il se dirige vers une autre tonalité de palette (9,500,100); } else if( bitRead(pong[46], search1+1)==1){ diry=0; dir=1; ton (9 500 100); if(search1==0){ carry=1; } } else { // pas de pagaie, j'ai raté le ton de la balle (9 500 300); écran propre(); début=1; retard(1000); scoreright(); } } if(search1==6){ //bit spécial, doit dévier le même chemin qu'il vient if(bitRead(pong[46],7)==1){ //il y a une pagaie là dir=1; diry=0; ton (9 500 100); } else{//manqué, pas de pagaie. ton (9 500 300); écran propre(); début=1; retard(1000); scoreright(); } } if(search1==7){//bit spécial, doit d'abord rebondir sur le mur if(bitRead(pong[46],6)==1){// a trouvé le paddle pong[44]=B00100000 ; diry=0; dir=1; ton (9 500 100); écran d'affichage(); ligne=44 ; retourner; } } } if(line==45){ if( search1!=7){ //si c'est sur la ligne 3, assurez-vous qu'il n'est pas sur ces bits spéciaux if( bitRead(pong[47], search1)==1) { // vérifie qu'il y a une pagaie là-bas diry=0; //changer la direction y pour qu'il se dirige vers une autre tonalité de palette (9,500,100); } else if( bitRead(pong[47], search1+1)==1){ diry=0; dir=1; ton (9 500 100); } else { // pas de pagaie, j'ai raté le ton de la balle (9 500 300); écran propre(); début=1; retard(1000); scoreright(); } } if(search1==7){//bit spécial, doit être transféré à la matrice suivante if(bitRead(pong[47],7)==1){ //trouvé une pagaie là // pong[45] =B10000000; //efface la ligne sur laquelle il se trouvait ligne=45 ; dir=0; //la direction est la même dir=0; // la direction y change de ton (9 500 100); } else if(bitRead(pong[46],0)==1){ dir=1; diry=0; ton (9 500 100); porter=0; } else{// pas de pagaie, j'ai raté le ton de la balle (9 500 300); écran propre(); début=1; retard(1000); scoreright(); } } } } recherche1++ ; } } if(dir==1){//la balle se déplace de gauche à droite tandis que(search1<8){ //trouver le bit sur lequel se trouve la balle if(bitRead(pong[line],search1)==1) { // a trouvé le bit sur lequel se trouve la balle if(line==45){ if( search1!=1 &&search1!=0){ //si c'est sur la ligne 3, assurez-vous qu'il n'est pas sur un bit spécial if( bitRead(pong[47], search1)==1){ //vérifie s'il y a une palette diry=0; // change la direction y pour que la balle se dirige vers l'autre son de palette (9,500,100); } else if(bitRead(pong[47], search1-1)==1){ diry=0; dir=0; ton (9 500 100); if(search1==7){ carry=1; } } else{ // pas de pagaie, j'ai raté le ton de la balle (9 500 300); écran propre(); début=1; retard(1000); scoreright(); } } if(search1==1){ if(bitRead(pong[47],0)==1){ pong[43]=B0000010; dir=0; diry=0; ton (9 500 100); } else{ ton(9,500,300); écran propre(); début=1; retard(1000); scoreright(); } } if(search1==0){ if(bitRead(pong[47],1)==1){ pong[45]=B00000100; diry=0; dir=0; ligne=45 ; ton (9 500 100); écran d'affichage(); } else{ ton(9,500,300); écran propre(); début=1; retard(1000); scoreright(); } } } if(line==44){ if( search1!=0){ if(bitRead(pong[46], search1)==1){ //vérifier s'il y a une palette diry=0; // change la direction y pour que la balle se dirige vers l'autre son de palette (9,500,100); } else if(bitRead(pong[46], search1-1)==1){ diry=0; dir=0; ton (9 500 100); } else{ // pas de pagaie, j'ai raté le ton de la balle (9 500 300); écran propre(); début=1; retard(1000); scoreright(); } } if(search1==0){ if(bitRead(pong[46],0)==1){ pong[44]=B00000001; ligne=44 ; dir=1; diry=0; ton (9 500 100); } else if(bitRead(pong[47],7)==1){ dir=0; diry=0; ton (9 500 100); porter=0; } else{ ton(9,500,300); écran propre(); début=1; retard(1000); scoreright(); } } } } recherche1++ ; } } } pass=1 ; search1=0;}void scoreleft(){ clearscreen(); droitscore++ ; ensemblescore(); écran d'affichage(); if(rightscore==5){ while(blinkx++<4){ clearscreen(); écran d'affichage(); retard (500); ensemblescore(); écran d'affichage(); retard (500); } blinkx=0; score de droits=0 ; score de gauche=0 ; } else{ retard(2000); } clearscreen();}void scoreright(){ clearscreen(); score de gauche++ ; ensemblescore(); écran d'affichage(); if(leftscore==5){ while(blinkx++<4){ clearscreen(); écran d'affichage(); retard (500); ensemblescore(); écran d'affichage(); retard (500); } blinkx=0; score de droits=0 ; score de gauche=0 ; } else{ retard(2000); } clearscreen();}void setscore(){ octet setScoreLoop=0; while(setScoreLoop<=7){ if(leftscore==0){ pong[setScoreLoop*2]=zero[setScoreLoop] ; } if(leftscore==1){ pong[setScoreLoop*2]=one[setScoreLoop]; } if(leftscore==2){ pong[setScoreLoop*2]=two[setScoreLoop]; } if(leftscore==3){ pong[setScoreLoop*2]=trois[setScoreLoop]; } if(leftscore==4){ pong[setScoreLoop*2]=four[setScoreLoop]; } if(leftscore==5){ pong[setScoreLoop*2]=five[setScoreLoop]; } if(rightscore==0){ pong[32+(setScoreLoop*2)]=zero[setScoreLoop]; } if(rightscore==1){ pong[32+(setScoreLoop*2)]=one[setScoreLoop] ; } if(rightscore==2){ pong[32+(setScoreLoop*2)]=two[setScoreLoop]; } if(rightscore==3){ pong[32+(setScoreLoop*2)]=trois[setScoreLoop] ; } if(rightscore==4){ pong[32+(setScoreLoop*2)]=four[setScoreLoop]; } if(rightscore==5){ pong[32+(setScoreLoop*2)]=five[setScoreLoop]; } setScoreLoop++; } pong[20]=B00011000; pong[22]=B00011000; pong[24]=B00011000; }
Schémas
Processus de fabrication
- Jeu de gyroscope Arduino avec MPU-6050
- Jeu Arduino Pong - Écran OLED
- Contrôleur de jeu Arduino
- Contrôler l'accepteur de pièces avec Arduino
- Jeu Arduino Pong sur matrice 24x16 avec MAX7219
- Jeu Arduino Nano Tetris sur matrice 16x8 maison
- Arduino avec Bluetooth pour contrôler une LED !
- Jeu Pixel Chaser
- Contrôler une matrice LED avec Arduino Uno