Inhoudsopgave:

Pongtennis met LED-matrix, Arduino en joysticks - Ajarnpa
Pongtennis met LED-matrix, Arduino en joysticks - Ajarnpa

Video: Pongtennis met LED-matrix, Arduino en joysticks - Ajarnpa

Video: Pongtennis met LED-matrix, Arduino en joysticks - Ajarnpa
Video: Arduino 8x8 led matrix ping pong game 2024, November
Anonim
Pongtennis met LED-matrix, Arduino en joysticks
Pongtennis met LED-matrix, Arduino en joysticks

Dit project is bedoeld voor zowel beginners als ervaren knutselaars. Op een basisniveau kan het worden gedaan met een breadboard, jumperdraden en op een stuk afvalmateriaal (ik gebruikte hout) met Blu-Tack en zonder solderen. Op een meer geavanceerd niveau kan het echter worden gesoldeerd aan een perf-bord of een aangepaste PCB.

Omdat dit een lockdown-project was, had ik geen toegang tot veel gereedschap of materialen, vandaar dat het vastzit aan een stuk sloophout dat iets te klein is met Blu-Tack, maar ondanks dit is het een leuk project dat samenkomt snel en bestaat uit algemeen verkrijgbare onderdelen die goedkoop online te vinden zijn.

Stap 1: Onderdelen

Om de Pong Game te maken heb je nodig;

  • 1x Een Arduino (elk type zal werken)
  • 4x MAX7219 8x8 LED-matrices
  • 2x joysticks
  • 1x piëzo-zoemer (optioneel)
  • 15x vrouw-vrouwelijke verbindingsdraden (3x groepen van 5)
  • 15x mannelijk-vrouwelijke jumperdraden (3x groepen van 5)
  • 18x mannelijk-mannelijk doorverbindingsdraden
  • 1x Broodplank
  • 1x 220Ω Weerstand

In plaats van een Arduino Uno of Nano board kun je een op breadboard gebaseerde Arduino gebruiken met;

  • 1x ATmega328p 28pin IC
  • 1x 16kHz kristaloscillator
  • 2x 22pF keramische condensatoren
  • 1x USB FTDI UART-converter
  • 1x 100uF elektrolytische condensator
  • 1x Micro-USB-uitbraak (optioneel)

Gereedschap;

  • PC met Arduino IDE (en LedControl-bibliotheek)
  • Relevante USB-kabel voor uw Arduino
  • Power Bank om het spel zonder je computer van stroom te voorzien

Stap 2: Bedrading

Bedrading
Bedrading
Bedrading
Bedrading

De bedrading is heel eenvoudig, want je hebt alleen jumperdraden nodig om de headers van de matrices en joysticks op de Arduino aan te sluiten. De enige complicatie is de stroomvoorziening, aangezien de Arduino Uno slechts 3 GND-aansluitingen en één 5v-aansluiting heeft. Dit is waar het breadboard binnenkomt en fungeert als een stroomverdelingsrail voor alle componenten. Als u een NANO gebruikt, heeft het breadboard hetzelfde doel en kunt u alles aansluiten.

Volg deze aansluitingen voor de bedrading.

  • Linker joystick - GND en 5v naar hun respectievelijke stroomrails. SW - pin 9, VRx - A0, VRy - A1.
  • Rechter joystick - GND en 5v naar hun respectievelijke stroomrails. SW - pin 8, VRx - A2, VRy - A3.
  • Meest rechtse LED Matrix - GND en 5v naar hun respectievelijke stroomrails. DIN - 13, CS - 11, CLK - 12. (Volgens regel 25)
  • Alle andere LED-matrices kunnen in serie worden geschakeld van de uitgang van de eerste die van rechts naar links gaat, zodat de code correct werkt.
  • Optionele zoemer - Anode(+) via 220Ω stroombegrenzingsweerstand naar pin 10, kathode(-) - GND.

Stap 3: Alternatieve bedrading

Alternatieve bedrading
Alternatieve bedrading
Alternatieve bedrading
Alternatieve bedrading
Alternatieve bedrading
Alternatieve bedrading

Nadat ik het met een Arduino UNO had bedraad om ruimte te besparen, besloot ik het Arduino-IC van de UNO op het breadboard te plaatsen met een 16Mhz Crystal Oscillator en een paar 22pF-condensatoren van elke kant naar aarde. Ik denk dat dit een waardevolle wijziging was, omdat het project er netter en meer afgewerkt uitziet, maar je moet wel een USB FTDI-programmeur gebruiken om het programma bij te werken.

Stap 4: Code + Uitleg

Om de code naar de Arduino te uploaden, downloadt u hier de LedControl-bibliotheek van GitHub, github.com/wayoda/LedControl en voeg het Zip-bestand toe of voeg het toe via de Library Manager binnen de IDE. Open daarna de bijgevoegde schets, selecteer je Arduino in de bord- en poortinstellingen onder tools en upload deze naar de arduino.

Uitleg

Regel 1: Voegt de bibliotheek toe

Regel 5-23: Stelt alle variabelen, constanten en pinnummers in.

Regel 25: Stelt de LED Martix in en stelt de bedieningspinnen in en hoeveel displays.

Regel 27: Stelt de resetfunctie in.

Regel 30-35: Shutdown-functie om alle displays samen aan/uit te zetten.

Regel 38-43: SetIntensity-functie om de helderheid van alle displays samen in te stellen.

Regel 46-51: ClearAll-functie om alle displays samen te wissen.

Regel 53-64: joystick Functie om de positie van de joysticks te bepalen, deze toe te wijzen aan de 7 mogelijke vleermuisposities om de bal te raken en vervolgens de vleermuis naar de nieuwe positie te verplaatsen.

Regel 67-435: Functie die de bal naar de linkerspeler beweegt met de gespecificeerde hoogte en snelheid, controleert of de speler de bal raakt en ofwel doorgaat en de crashstatus instelt op true of de bal terugkaatst, 1 optelt bij de score en verhoogt de snelheid.

Regel 438-811: Functie die de bal naar de juiste speler beweegt met de gespecificeerde hoogte en snelheid, controleert of de speler de bal raakt en ofwel doorgaat en de crashstatus instelt op true of de bal terugkaatst, 1 optelt bij de score en verhoogt de snelheid.

Regel 813-823: Functie voor het weergeven van een smiley, vinkje, kruis of vraagteken op de opgegeven weergave (0 rechts tot 3 links).

Regel 861-979: Functie voor het weergeven van de cijfers 0-9 op het opgegeven display.

Regel 981-1047: Functie voor het weergeven van de score aan elke spelerszijde van het scherm.

Regel 1049-1064: Functie om te controleren of de speler klaar is.

Regel 1066-1076: Setup Sectie van de code voor de code die één keer wordt uitgevoerd wanneer het programma start.

Regel 1078-1136: Hoofdlussectie voor spellogica waar alle functies worden gebruikt en waar wordt beslist wie er wint, waarna het programma 5 seconden na het tonen van de score opnieuw wordt gestart.

Stap 5: Bedankt voor het lezen

Bedankt voor het lezen
Bedankt voor het lezen

Bedankt voor het lezen van deze Instructable, het was een leuk lockdown-project dat over een paar dagen bij elkaar kwam toen ik meer leerde over Arduino-programmering. Als je het leuk vond, stem er dan op in de Arduino-wedstrijd.

Aanbevolen: