NeoPixel Matrix Pong op Arduino Nano: Bouw je eigen neon Pong-spel
Onderdelen en benodigdheden
| NeoPixel LED-strip (individueel adresseerbaar, WS2812B o.a.) | 1 (5m, 30 LED/m) |
| Arduino Nano R3 | 1 |
| Analoge joystick (of potentiometer) | 1 |
| Rotary potentiometer (voor paddle-besturing) | 1 |
| Perma-Proto printplaat (half formaat) | 1 |
| Vrouwelijke header 8-polig | 1 |
| Jumper-draden | 1 set |
Benodigde gereedschappen
- Solderbout en soldeer
- Multimeter (voor kortsluitingstest)
Software
- Arduino IDE
- Adafruit NeoMatrix bibliotheek
- Adafruit GFX bibliotheek
Over dit project
De Matrix
Geen film, maar een NeoPixel-matrix! Koop één strip individueel adresseerbare NeoPixel LEDs. Let op de pijltjes op de strip: je kunt ze maar in ÉÉN richting aansluiten (verkeerd = defect).
Ik gebruikte een 30 LED/m, 5m strip, geknipt in stukjes van 10 LEDs. Deze legt je op karton, afwisselend in oriëntatie (zigzag). Solder draden tussen de segmenten. Na 14 keer solderen is de matrix klaar. Test met een multimeter op kortsluiting! Een kortsluiting verbrandt de Nano, de matrix en mogelijk je USB-poort (ervaren spreken).
Upload de neomatrix testsketch met parameters: NEO_MATRIX_BOTTOM + NEO_MATRIX_LEFT + NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG. Scrollt "howdy" over het scherm? Dan werkt het!
De logica (Pong)
Een Pong-spel heeft: paddle, muren, bal. De code bijhouden:
- Balpositie (
ballX,ballY) en richting (ballDirectionX,ballDirectionY= ±1) - Paddle: rechthoek (breedte 4px), Y vast op 8, X bestuurd via potentiometer (gemapt 0-12)
- Start: bal op (1,1), speler moet een keer laten botsen om te beginnen
- Fysica: rekening houden met botspositie op de paddle
Speeltijd!
Aansluiten:
- NeoPixel matrix data → Arduino pin 6
- Joystick +5V → 5V, GND → GND, X-as → A0
- Potentiometer voor paddle → A1 (of gebruik joystick Y-as)
Upload de code en speel! Uitdaging: voeg een tweede speler toe, verbeter de fysica, implementeer highscores.
Code
De sketch gebruikt Adafruit_GFX, Adafruit_NeoMatrix, Adafruit_NeoPixel. Belangrijke functies:
moveBall(): berekent nieuwe balpositie, detecteert botsingen met randen en paddleinPaddle(): checkt of bal de paddle raakt- Score-telling na 10 seconden spelen, reset na 4 seconden
- Snelheid instelbaar via
ballSpeed(lager = sneller)
Twee identieke codeversies zijn bijgeleverd (waarschijnlijk een duplicaat in de bron).
Schema
Fritzing-schema: schematics.png (bijgevoegd).
Productieproces
- TinyML Taaldetector met Edge Impulse op Arduino Nano 33 BLE Sense
- Bouw een real-time gyroscoop-spel met Arduino Nano & MPU-6050 sensor
- Arduino Digitale Dobbelsteen: Bouw Je Eigen LCD-willekeurige Getalgenerator
- Een Arduino Iron Man bouwen: onderdelen, sensoren en stapsgewijze handleiding
- Find Me: Slimme Item Locator met Arduino en Bluetooth
- DIY Arduino Luchtbevochtiger Controller met Relais – Veilige Hoogspanningsopstelling
- Realtime afstandsmeting met Arduino Sonar & Processing visualisatie
- MobBob: Bouw Je Eigen Arduino Robot, Naadloos Bestuurd via Android Smartphone
- Een audio-reactieve bureaulamp bouwen met Arduino Nano
- Bouw een Aangepaste Arduino Joystick Stuurwiel voor Gaming
- Arduino 101: Bouw een teller met DHT11 sensor & LCD display