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

Morpion sur matrice LED MAX7219 avec boîtier en carton

Composants nécessaires

Outils nécessaires

Applications

À propos du projet

Bonjour la communauté Hackster ! Je m'appelle Simone Adobs et c'est mon troisième projet publié ici. C'est mon premier projet où je construis une structure en carton, papier et colle chaude qui intègre l'Arduino et les composants.

Morpion sur matrice LED MAX7219 avec boîtier en carton
Projet terminé vu de face

Comment fonctionne le Morpion ?

Le principe est simple : lorsque vous appuyez sur un chiffre du clavier, l'Arduino allume la case correspondante sur la matrice.

Reconnaissance des joueurs

Bien que la matrice ne soit que rouge, chaque joueur a un motif distinct formé par 2×2 LED :

N'hésitez pas à commenter pour toute question, suggestion ou explication de code. Si vous aimez ce projet, laissez un like et regardez mes autres projets ! Essayez de créer votre propre structure ou de personnaliser la mienne et envoyez-moi une photo.

Bonne journée !
Simone d'Italie <3

Code

#include 
#include 
#include 
#include 

#define Reset_AVR() wdt_enable(WDTO_30MS); while(1) {}

LedControl lc = LedControl(12, 10, 11, 1);

bool player1 = true;
bool 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 plays[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();
  painting(customKey);
  win(result);

  if (winner == 1) {
    lc.clearDisplay(0);
    while (winner == 1) {
      char customKey = customKeypad.getKey();
      if (customKey == '0') Reset_AVR();
      // Affichage du "1" pour joueur 1
      lc.setLed(0,1,4,true); lc.setLed(0,2,5,true); lc.setLed(0,3,6,true);
      lc.setLed(0,4,7,true); lc.setLed(0,4,6,true); lc.setLed(0,4,5,true);
      lc.setLed(0,4,4,true); lc.setLed(0,4,3,true); lc.setLed(0,4,2,true);
      lc.setLed(0,4,1,true); lc.setLed(0,4,0,true); lc.setLed(0,5,0,true);
      lc.setLed(0,6,0,true); lc.setLed(0,3,0,true); lc.setLed(0,2,0,true);
    }
  } else if (winner == 2) {
    lc.clearDisplay(0);
    while (winner == 2) {
      char customKey = customKeypad.getKey();
      if (customKey == '0') Reset_AVR();
      // Affichage du "2" pour joueur 2
      lc.setLed(0,2,0,true); lc.setLed(0,3,0,true); lc.setLed(0,4,0,true);
      lc.setLed(0,5,0,true); lc.setLed(0,2,1,true); lc.setLed(0,2,2,true);
      lc.setLed(0,2,3,true); lc.setLed(0,2,4,true); lc.setLed(0,3,4,true);
      lc.setLed(0,4,4,true); lc.setLed(0,5,4,true); lc.setLed(0,5,5,true);
      lc.setLed(0,5,6,true); lc.setLed(0,5,7,true); lc.setLed(0,4,7,true);
      lc.setLed(0,3,7,true); lc.setLed(0,2,7,true);
    }
  }
}

int round_player() {
  if (player1) { player1 = false; result = 1; }
  else { player1 = true; result = 2; }
  return result;
}

void win(int player) {
  if (plays[0][0]==player && plays[0][1]==player && plays[0][2]==player) winner=player;
  else if (plays[1][0]==player && plays[1][1]==player && plays[1][2]==player) winner=player;
  else if (plays[2][0]==player && plays[2][1]==player && plays[2][2]==player) winner=player;
  else if (plays[0][0]==player && plays[1][0]==player && plays[2][0]==player) winner=player;
  else if (plays[0][1]==player && plays[1][1]==player && plays[2][1]==player) winner=player;
  else if (plays[0][2]==player && plays[1][2]==player && plays[2][2]==player) winner=player;
  else if (plays[0][0]==player && plays[1][1]==player && plays[2][2]==player) winner=player;
  else if (plays[0][2]==player && plays[1][1]==player && plays[2][0]==player) winner=player;
}

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, row-1, true);
  } else {
    lc.setLed(0, col, row-1, true);
    lc.setLed(0, col+1, row, true);
  }
  plays[rowPlays][colPlays] = round_player();
}

void painting(int bottone) {
  switch (bottone) {
    case 49: if (!q1) { switch_on_led(0,7,0,0); q1=true; } break;
    case 50: if (!q2) { switch_on_led(3,7,0,1); q2=true; } break;
    case 51: if (!q3) { switch_on_led(6,7,0,2); q3=true; } break;
    case 52: if (!q4) { switch_on_led(0,4,1,0); q4=true; } break;
    case 53: if (!q5) { switch_on_led(3,4,1,1); q5=true; } break;
    case 54: if (!q6) { switch_on_led(6,4,1,2); q6=true; } break;
    case 55: if (!q7) { switch_on_led(0,1,2,0); q7=true; } break;
    case 56: if (!q8) { switch_on_led(3,1,2,1); q8=true; } break;
    case 57: if (!q9) { switch_on_led(6,1,2,2); q9=true; } break;
    case 48: Reset_AVR(); break;
  }
}

Schéma de câblage

Morpion sur matrice LED MAX7219 avec boîtier en carton
Schéma de câblage (fichier .fzz disponible)

Processus de fabrication

  1. Créer un système Ambilight spectaculaire pour moniteur avec Arduino
  2. Créer un jeu Pong classique sur Arduino UNO avec écran OLED – Tutoriel étape par étape
  3. Construire un jeu « Opération » géant animé type Lego Minifigure avec Arduino
  4. Détecteur de fréquence audio Arduino — Mesurer le pic sonore avec module haute sensibilité
  5. Construisez votre propre Tamagotchi Arduino : Un animal de compagnie numérique DIY
  6. Interrupteur lumineux sans fil intelligent : Manipulateur d'interrupteur piloté par Arduino
  7. Pistolet à eau intelligent à détection de mouvement avec Arduino Nano
  8. Construire un minuteur à rebours Arduino fiable avec afficheur 7 segments SparkFun
  9. Appareils électroménagers à commande vocale : contrôle Bluetooth avec Google Assistant