Inhoudsopgave:
- Stap 1: Onderdelen
- Stap 2: Bedrading
- Stap 3: Alternatieve bedrading
- Stap 4: Code + Uitleg
- Stap 5: Bedankt voor het lezen
Video: Pongtennis met LED-matrix, Arduino en joysticks - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
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
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
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 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:
Digitale klok met netwerktijd met behulp van de ESP8266: 4 stappen (met afbeeldingen)
Digitale netwerkklok met de ESP8266: we leren hoe we een schattige kleine digitale klok kunnen bouwen die communiceert met NTP-servers en de netwerk- of internettijd weergeeft. We gebruiken de WeMos D1 mini om verbinding te maken met een wifi-netwerk, de NTP-tijd te verkrijgen en deze weer te geven op een OLED-module. De video hierboven
DIY slimme weegschaal met wekker (met wifi, ESP8266, Arduino IDE en Adafruit.io): 10 stappen (met afbeeldingen)
DIY Slimme Weegschaal Met Wekker (met Wi-Fi, ESP8266, Arduino IDE en Adafruit.io): In mijn vorige project ontwikkelde ik een slimme weegschaal met Wi-Fi. Het kan het gewicht van de gebruiker meten, het lokaal weergeven en naar de cloud sturen. U kunt hier meer informatie over krijgen op onderstaande link: https://www.instructables.com/id/Wi-Fi-Smart-Scale-wi
Pratende Arduino - Een MP3 afspelen met Arduino zonder enige module - Mp3-bestand afspelen vanaf Arduino met PCM: 6 stappen
Pratende Arduino | Een MP3 afspelen met Arduino zonder enige module | Mp3-bestand van Arduino afspelen met PCM: in deze instructie leren we hoe we een mp3-bestand met arduino kunnen spelen zonder een audiomodule te gebruiken, hier gaan we de PCM-bibliotheek voor Arduino gebruiken die 16 bit PCM van 8 kHz-frequentie speelt, dus laten we dit doen
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino - Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter - RC Helikopter - RC-vliegtuig met Arduino: 5 stappen (met afbeeldingen)
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino | Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter | RC Helikopter | Rc-vliegtuig met Arduino: een Rc-auto besturen | Quadcopter | Drone | RC vliegtuig | RC-boot, we hebben altijd een ontvanger en zender nodig, stel dat we voor RC QUADCOPTER een 6-kanaals zender en ontvanger nodig hebben en dat type TX en RX is te duur, dus we gaan er een maken op onze
Start uw diavoorstelling met vakantiefoto's met een vleugje magie! 9 stappen (met afbeeldingen)
Lanceer uw diavoorstelling met vakantiefoto's met een vleugje magie!: In de loop der jaren heb ik de gewoonte ontwikkeld om een klein beeldje mee te nemen op reis: ik koop vaak een kleine, lege artoy (zoals die op de foto) en verf het past bij de vlag en het thema van het land dat ik bezoek (in dit geval Sicilië). T