Pong

In dit project gaan we een spelletje maken: pong. Het doel is om de bal met je paddle (balkje) te blijven raken. Als je mist, verlies je. Nadat je de bal raakt, botst hij op de muur en komt hij terug.  Het speelveld wordt getoond op een 8×8 LED dot matrix. Om je paddle te bewegen gebruiken we een joystick. We maken ook een startknop. Laten we beginnen!

Stap 1: het circuit bouwen

Benodigdheden:

Voor dit project heb je de volgende onderdelen nodig:

  • 1x Arduino Uno
  • 1x 8×8 LED dot matrix
  • 1x joystick
  • 1x breadboard
  • 12x man-man jumper wires

Volg de onderstaande stappen om je circuit op te zetten:

  1. LED matrix aansluiten:
    • Verbind de VCC-pin met de rode rij op je breadboard.
    • Verbind de GND-pin met een GND van je Arduino.
    • DIN verbind je met pin 12.
    • CS verbind je met pin 11.
    • CLK verbind je met pin 10.
  2. Joystick aansluiten:
    • Verbind de GND-pin een GND van je Arduino.
    • Verbind de +5V-pin met de rode rij op je breadboard.
    • Verbind de VrY met pin A0.
    • De VrX en SW mag je open laten.
  3. Knop aansluiten
    • Verbind 1 kant van de LED met pin 2.
    • Verbind de andere kant met een GND van je Arduino. 
  4. Rode rij  Verbinden
    • Verbind de rode rij op je breadboard met de 5V pin.

Stap 2: De code schrijven

Nu je het circuit hebt opgebouwd, is het tijd om de code te schrijven waarmee je de RGB-LED kunt aansturen met de roterende encoder. Open de Arduino IDE en volg deze stappen:

pong.ino
#include <LedControl.h>
// Joystick pins
const int START_BUTTON_PIN = 2;  

// LED Matrix pins
const int DIN_PIN = 12;
const int CS_PIN = 11;
const int CLK_PIN = 10;
LedControl matrix = LedControl(DIN_PIN, CLK_PIN, CS_PIN, 1);

//Variabelen voor het spel
int player_X = 3;
int bal_X = 3, bal_Y = 4;
int bal_richting_X = -1, bal_richting_Y = -1;
bool verloren = false, begonnen = false;

void setup() {
  matrix.shutdown(0, false);      // Matrix aanzetten (uit standby)
  matrix.setIntensity(0, 8);      // Helderheid instellen (0-15)
  matrix.clearDisplay(0);         // Display leegmaken
  pinMode(2, INPUT_PULLUP);       // Knop op pin 2
}

void teken_bord(){
  matrix.clearDisplay(0); // Maak het scherm leeg
  matrix.setLed(0, player_X, 7, true); // Toon de player
  matrix.setLed(0, player_X+1, 7, true);
  matrix.setLed(0, bal_Y, bal_X, true); // Toon de bal
}

void beweeg_player() {
  int joystick = analogRead(A0);
  if (joystick > 612 && player_X < 6) {         // Als de joystick naar rechts is:
    player_X++;                               // Beweeg de speler naar rechts
  } else if (joystick < 412 && player_X > 0) {  // Als de joystick naar links is:
    player_X--;                                 // Beweeg de speler naar links
  }
}

bool laat_bal_bewegen(){
  if(bal_X+bal_richting_X==7&&player_X!=bal_Y&&player_X+1!=bal_Y){ // Als de bal op de bovenste rij is en de speler er niet is...
    verloren=true;  // ben je verloren
    return false;
  }
  if(bal_X+bal_richting_X==7){
    if(bal_richting_X==1) bal_richting_X = -1;
    else bal_richting_X = 1;
  }
  if(bal_X+bal_richting_X==-1){
    if(bal_richting_X==1) bal_richting_X = -1;
    else bal_richting_X = 1;
  }
  if(bal_Y+bal_richting_Y==-1||bal_Y+bal_richting_Y==8){
    if(bal_richting_Y==1) bal_richting_Y=-1;
    else bal_richting_Y = 1;
  }
  bal_X +=bal_richting_X;
  bal_Y +=bal_richting_Y;
  return true;
}

void loop() {
  teken_bord();
  while(true){
    if(!verloren&&begonnen){
      if(laat_bal_bewegen()){
        beweeg_player();
        teken_bord();
      }
      delay(200);
    } else if(begonnen){
      matrix.clearDisplay(0);
      for (int row = 0; row < 8; row++) {
        for (int col = 0; col < 8; col++) {
          matrix.setLed(0, row, col, true); // Zorgt ervoor dat het hele veld gevuld is
        }
      }
      begonnen = false;
    }
    if(digitalRead(2)==LOW){ // Als je de herstart knop indrukt
      begonnen = true; verloren=false;
      player_X = 4;
      bal_X = 3, bal_Y = 4;
      bal_richting_X = -1, bal_richting_Y = -1;
      teken_bord();
      delay(500);
    }
  }
}

Stap 3: De code uploaden

  1. Sluit je Arduino aan op je computer met de USB-kabel.
  2. (Klik op select board en dan op Arduino Uno.)
  3. Klik op de uploadknop (pijltje) in de Arduino IDE om de code naar je Arduino te sturen.

Proficiat! Je maakte zojuist een werkend spelletje! Speel het en probeer zo lang mogelijk in leven te blijven! Je leerde ook met een LED dot matrix te werken!

qoute symbool

"Programmeren is zoals Pong spelen: hoe meer je oefent, hoe beter je wordt in het voorspellen waar de bal naartoe gaat."

Ontdek praktische projecten. Ben je een beginner, geen probleem! Er zijn projecten voor zowel beginners als gevorderden.

Hier vindt je hoe de componenten die je in de projecten gebruikt werken.

Wil je de functie van een commando weten? Wil je meer Arduinocommando’s bijleren? Ga dan naar de codedatabank. Daar vind je uitleg over de Acommando’s

logo

Copyright © 2025 Arduinolessen.org | Gebouwd door Arduinolessen.org