Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Arduino Boter-Kaas-Eieren met MAX7219 LED Matrix en Kartonnen Behuizing

Onderdelen en benodigdheden

Arduino UNO 1
MAX7219 LED Dot Matrix 1
Membraanschakelaar Toetsenbord 1

Benodigde tools en machines

  • Lijmpistool (hot glue gun)

Apps en online diensten

  • Arduino IDE

Over dit project

Hallo Hackster Community. Ik ben Simone Adobs en dit is mijn derde project op Hackster. Dit is mijn eerste project waar ik een structuur maak van karton, papier en een lijmpistool, die de Arduino en andere componenten bevat.

Hier is een korte video die laat zien hoe het Boter-Kaas-Eieren spel werkt:

Arduino Boter-Kaas-Eieren met MAX7219 LED Matrix en Kartonnen Behuizing
Arduino Boter-Kaas-Eieren met MAX7219 LED Matrix en Kartonnen Behuizing
Arduino Boter-Kaas-Eieren met MAX7219 LED Matrix en Kartonnen Behuizing

Ik hoop dat jullie het leuk vinden, want ik heb er uren aan besteed! Laten we beginnen.

Hoe werkt het Boter-Kaas-Eieren spel?

Het antwoord is simpel: wanneer je op een cijfer op het toetsenbord drukt, zal de Arduino het bijbehorende vakje aanzetten.

  • Kan ik spelers wisselen? Ja, zodra je een vakje aanzet, wisselt de Arduino direct naar de volgende speler.
  • Herken de Arduino wanneer ik win? Ja! Wanneer een speler wint, schrijft de Arduino op de LED Dot Matrix:
    • "1" als speler 1 wint
    • "2" als speler 2 wint
  • Kan ik opnieuw beginnen na afloop? Ja, druk op de "0" toets op het toetsenbord - de Arduino herstart zichzelf.

Hoe herken ik een speler?

Hoewel de LED Dot Matrix alleen rood is, heeft elke speler een specifiek patroon van 2x2 LED's:

  • Speler 1: patroon "\" (backslash)
  • Speler 2: patroon "/" (slash)

Voor vragen, suggesties, kritiek of code uitleg, laat gerust een reactie achter. Als je dit project leuk vindt, geef een like en bekijk mijn andere projecten!

Probeer een andere structuur te maken of personaliseer de mijn en stuur me een foto!

Een PRETTIGE DAG!

Simone uit Italië <3

Code

Tech-Tris (C/C++)

#include <Keypad.h>
#include <LedControl.h>
#include <avr/io.h>
#include <avr/wdt.h>

#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();
      // Toon "1" op display
      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();
      // Toon "2" op display
      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) {
  // Controleer rijen
  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;
  // Controleer kolommen
  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;
  // Controleer diagonalen
  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;  // '1'
    case 50: if (!q2) { switch_on_led(3,7,0,1); q2=true; } break;  // '2'
    case 51: if (!q3) { switch_on_led(6,7,0,2); q3=true; } break;  // '3'
    case 52: if (!q4) { switch_on_led(0,4,1,0); q4=true; } break;  // '4'
    case 53: if (!q5) { switch_on_led(3,4,1,1); q5=true; } break;  // '5'
    case 54: if (!q6) { switch_on_led(6,4,1,2); q6=true; } break;  // '6'
    case 55: if (!q7) { switch_on_led(0,1,2,0); q7=true; } break;  // '7'
    case 56: if (!q8) { switch_on_led(3,1,2,1); q8=true; } break;  // '8'
    case 57: if (!q9) { switch_on_led(6,1,2,2); q9=true; } break;  // '9'
    case 48: Reset_AVR(); break;  // '0'
  }
}

Schema's

Arduino Boter-Kaas-Eieren met MAX7219 LED Matrix en Kartonnen Behuizing

Bestand: tris_1Nd6QnEjNE.fzz

Productieproces

  1. Bouw een indrukwekkend monitor Ambilight-systeem met Arduino
  2. Bouw een Klassiek Pong-spel op Arduino UNO met OLED-display – Stap-voor-stap Tutorial
  3. Een reusachtige Lego-minifiguur animatronics Operation-spel bouwen met Arduino
  4. Arduino Audio Frequentie Detector – Meet de luidste geluidspieken met hoge gevoeligheid
  5. Bouw Je Eigen Arduino Tamagotchi: Een Digitale Huisdier DIY Project
  6. Slimme Draadloze Lichtschakelaar Controller: Arduino-gebaseerde Remote Switch Manipulator
  7. Slimme beweegactiverde waterpistool gebouwd met Arduino Nano
  8. Bouw een Betrouwbare Arduino Afteltimer met SparkFun 7‑Segment Display
  9. Spraakgestuurde huishoudapparaten: Bluetooth-besturing met Google Assistant
  10. Arduino Zonnebloem: Bouw een elektronische zon-volgende zonnebloem
  11. Bouw je eigen RC Porsche-auto met Arduino: Stap-voor-stap handleiding