Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Jeu Arduino Pong sur matrice 24x16 avec MAX7219

Composants et fournitures

Arduino Nano R3
× 1
Module de matrice Led 8x8 avec MAX7219
× 6
Potentiomètre rotatif (générique)
× 2
Sonnerie
× 1

Outils et machines nécessaires

Fer à souder (générique)

Applications et services en ligne

Arduino IDE

À 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

  1. Jeu de gyroscope Arduino avec MPU-6050
  2. Jeu Arduino Pong - Écran OLED
  3. Contrôleur de jeu Arduino
  4. Contrôler l'accepteur de pièces avec Arduino
  5. Jeu Arduino Pong sur matrice 24x16 avec MAX7219
  6. Jeu Arduino Nano Tetris sur matrice 16x8 maison
  7. Arduino avec Bluetooth pour contrôler une LED !
  8. Jeu Pixel Chaser
  9. Contrôler une matrice LED avec Arduino Uno