INHOUDSOPGAWE:

Pongtennis met LED Matrix, Arduino en joysticks: 5 stappe (met foto's)
Pongtennis met LED Matrix, Arduino en joysticks: 5 stappe (met foto's)

Video: Pongtennis met LED Matrix, Arduino en joysticks: 5 stappe (met foto's)

Video: Pongtennis met LED Matrix, Arduino en joysticks: 5 stappe (met foto's)
Video: 1. Q light controller plus Getting started with QLC+. Fixtures and functions 2024, November
Anonim
Pongtennis met LED Matrix, Arduino en joysticks
Pongtennis met LED Matrix, Arduino en joysticks

Hierdie projek is bedoel vir beginners sowel as ervare tinkerers. Op 'n basiese vlak kan dit gedoen word met 'n broodbord, draaddrade en vasgemaak aan 'n stuk afvalmateriaal (ek het hout gebruik) met Blu-Tack en sonder soldeer. Op 'n meer gevorderde vlak kan dit egter op perfekbord of 'n pasgemaakte PCB gesoldeer word.

Aangesien dit 'n afsluitingsprojek was, het ek nie toegang tot baie gereedskap of materiaal nie, en daarom het ek vasgehou aan 'n stuk hout wat effens te klein is met Blu-Tack, maar dit is 'n prettige projek wat bymekaar kom vinnig en bestaan uit onderdele wat algemeen beskikbaar is en wat goedkoop aanlyn gevind kan word.

Stap 1: Onderdele

Om die Pong -spel te maak, benodig jy;

  • 1x 'n Arduino (enige tipe werk)
  • 4x MAX7219 8x8 LED -matrikse
  • 2x joysticks
  • 1x Piezo -zoemer (opsioneel)
  • 15x vroulike-vroulike springdrade (3x groepe van 5)
  • 15x manlike-vroulike draaddrade (3x groepe van 5)
  • 18x man-manlike draaddrade
  • 1x broodbord
  • 1x 220Ω weerstand

In plaas van 'n Arduino Uno- of Nano -bord, kan u 'n broodbord -gebaseerde Arduino gebruik met;

  • 1x ATmega328p 28pin IC
  • 1x 16kHz kristal ossillator
  • 2x 22pF keramiek kondensators
  • 1x USB FTDI UART -omskakelaar
  • 1x 100uF elektrolitiese kondensator
  • 1x Micro USB -uitbreek (opsioneel)

Gereedskap;

  • Rekenaar met Arduino IDE (en LedControl Library)
  • Relevante USB -kabel vir u Arduino
  • Power Bank om die spel van u rekenaar af weg te sit

Stap 2: Bedrading

Bedrading
Bedrading
Bedrading
Bedrading

Die bedrading is baie eenvoudig, want al wat u benodig, is draaddrade om die koppe van die matrieke en joysticks aan die Arduino te koppel. Die enigste komplikasie is krag, aangesien die Arduino Uno slegs 3 GND -verbindings en een 5v -verbinding het. Dit is waar die broodbord inkom en dien as 'n kragverspreidingsrail vir al die komponente. As u 'n NANO gebruik, dien die broodbord dieselfde doel en kan u alles inprop.

Volg hierdie aansluitings vir bedrading.

  • Joystick links - GND en 5v na hul onderskeie kragrails. SW - pen 9, VRx - A0, VRy - A1.
  • Regter joystick - GND en 5v na hul onderskeie kragrails. SW - pen 8, VRx - A2, VRy - A3.
  • Regs LED Matrix - GND en 5v na hul onderskeie kragrails. DIN - 13, CS - 11, CLK - 12. (Volgens reël 25)
  • Al die ander LED -matrikse kan madeliefies aan die uitset van die eerste een vasgemaak word, van regs na links, sodat die kode behoorlik werk.
  • Opsionele zoemer - Anode (+) deur 220Ω stroombeperkende weerstand na pen 10, katode (-) - GND.

Stap 3: Alternatiewe bedrading

Alternatiewe bedrading
Alternatiewe bedrading
Alternatiewe bedrading
Alternatiewe bedrading
Alternatiewe bedrading
Alternatiewe bedrading

Nadat ek dit met 'n Arduino UNO bedraad het om ruimte te bespaar, het ek besluit om die Arduino IC van die UNO op die broodbord te plaas met 'n 16Mhz Crystal Oscillator en 'n paar 22pF -kondensators van elke kant na die grond. Ek voel dat dit 'n waardevolle aanpassing was, aangesien dit die projek netjieser en afgerond laat lyk, maar u moet 'n USB FTDI -programmeerder gebruik om die program op te dateer.

Stap 4: Kode + verduideliking

Laai die LedControl -biblioteek van GitHub hier af om die kode na die Arduino op te laai, github.com/wayoda/LedControl en voeg die zip -lêer by of voeg dit by deur die biblioteekbestuurder binne die IDE. Nadat u die aangehegte skets oopgemaak het, kies u Arduino in die bord en poortinstellings onder gereedskap en laai dit op na die arduino.

Verduideliking

Reël 1: Voeg die biblioteek by

Reël 5-23: Stel al die veranderlikes, konstantes en speldnommers op.

Reël 25: Stel die LED Martix op en stel die bedieningspenne en hoeveel skerms in.

Reël 27: Stel die herstelfunksie op.

Reël 30-35: Afsluitingsfunksie om al die skerms saam aan/uit te skakel.

Reël 38-43: SetIntensity-funksie om die helderheid van al die skerms saam te stel.

Reël 46-51: ClearAll-funksie om al die skerms saam te vee.

Reël 53-64: joystick Funksie om die posisie van die joysticks te kry, hulle in kaart te bring na die 7 moontlike kolfposisies om die bal te slaan en dan die kolf na die nuwe posisie te skuif.

Reël 67-435: Funksie wat die bal na die linker speler skuif op die gespesifiseerde hoogte en spoed, kyk of die speler dit tref en óf voortgaan en die ongelukstatus in werklikheid stel of die bal terugstamp, voeg 1 by die telling en verhoog die spoed.

Reël 438-811: Funksie wat die bal op die gespesifiseerde hoogte en spoed na die regte speler skuif, kontroleer of die speler dit tref en óf voortgaan en die ongelukstatus in werklikheid stel of die bal terugstamp, voeg 1 by die telling en verhoog die spoed.

Reël 813-823: Funksie vir die vertoon van 'n smiley-gesig, bosluis, kruisie of vraagteken op die gespesifiseerde skerm (0 aan die regterkant na 3 aan die linkerkant).

Reël 861-979: Funksie om die getalle 0-9 op die gespesifiseerde skerm te vertoon.

Reël 981-1047: Funksie om die telling aan elke kant van die skerm aan die spelers te vertoon.

Reël 1049-1064: Funksie om te kyk of die speler gereed is.

Reël 1066-1076: Instellingsgedeelte van die kode vir die kode wat een keer uitgevoer word wanneer die program begin.

Reël 1078-1136: Hooflus-afdeling vir spellogika, waar al die funksies gebruik word en waar besluit word, en dan begin dit weer na 5 sekondes nadat die telling vertoon is.

Stap 5: Dankie dat u gelees het

Dankie vir die lees
Dankie vir die lees

Dankie dat u hierdie Instructable gelees het, dit was 'n prettige afsluitingsprojek wat oor 'n paar dae bymekaargekom het toe ek meer geleer het oor Arduino -programmering. As u dit geniet het, stem gerus daarvoor in die Arduino -wedstryd.

Aanbeveel: