Web-fähiges Arduino Auto-Rennspiel (Brick Game) mit PHPoC Shield
Komponenten und Materialien
- 1× Arduino UNO
- 1× PHPoC Shield (oder PHPoC WiFi Shield)
- 1× USB-WLAN-Dongle (Chipsatz Ralink RT3070/RT5370) – alternativ Ethernet-Kabel am Shield
- 1× Drehwinkelsensor (Potentiometer)
Über das Projekt
Klassisches Brick-Game-Autorennen: 5 Spuren, 15 Geschwindigkeitsstufen. Gegnerwagen werden schneller, je höher der Level. Steuerung per Potentiometer (Spurwahl).
Verkabelung
- PHPoC Shield auf Arduino stecken
- Potentiometer: GND → GND, VCC → 5 V, SIG → A0

Datenfluss
Arduino → PHPoC Shield → Webbrowser (WebSocket)
- Arduino liest Potentiometer (ADC), teilt Werte in 5 Stufen (Spuren)
- Bei Stufenwechsel sendet Arduino neue Spur an PHPoC Shield
- PHPoC Shield leitet per WebSocket an Browser weiter
- JavaScript aktualisiert Spieler-Auto, bewegt Gegner, erhöht Level/Geschwindigkeit
Einrichtung
- WLAN am PHPoC Shield konfigurieren (SSID/Passwort)
- Web-UI (
remote_racing_game.php) auf Shield hochladen (PHPoC Debugger) - Arduino-Code hochladen (PHPoC Library für Arduino nötig)
Starten
- Seriellen Monitor öffnen → IP-Adresse notieren
- Browser:
https://<IP>/remote_racing_game.php - „CONNECT“ klicken → spielen
Code
Arduino-Code
#include "SPI.h"
#include "Phpoc.h"
PhpocServer server(80);
int adcPin = A0;
float adcVal = 0;
int lastPos = -1;
float adcMin = 512 - 2.5 * 100;
void setup() {
Serial.begin(9600);
while(!Serial);
Phpoc.begin(PF_LOG_SPI | PF_LOG_NET);
server.beginWebSocket("game");
Serial.print("WebSocket server address: ");
Serial.println(Phpoc.localIP());
}
void loop() {
PhpocClient client = server.available();
if (client) {
adcVal = 0;
for(int i = 0; i < 50; i++) adcVal += analogRead(adcPin);
adcVal /= 50;
int pos = (int)((adcVal - adcMin) / 100);
if (pos < 0) pos = 0;
else if (pos > 4) pos = 4;
if (lastPos != pos) {
String txtMsg = String(pos) + "\r\n";
char buf[txtMsg.length()];
txtMsg.toCharArray(buf, txtMsg.length());
server.write(buf, txtMsg.length());
Serial.println(txtMsg);
lastPos = pos;
delayMicroseconds(50);
}
}
}
PHPoC Shield Code (remote_racing_game.php)
Enthält komplette Spiel-Logik in JavaScript (Canvas-Rendering, Gegnerbewegung, Kollisionserkennung, Level-System, WebSocket-Handling). Zu lang für hier – siehe Repository.
Funktionsreferenz (Arduino)
pinMode(),analogRead(),digitalWrite()Serial.begin(),Serial.println()- Schleifen (
for,while), Bedingungen (if else) setup(),loop()
Herstellungsprozess
- Web-gesteuertes DMX-Lichtsystem – Arduino Master Controller
- Klassisches Pong-Spiel auf Arduino UNO mit OLED-Display bauen – Schritt-für-Schritt-Tutorial
- Bluetooth-gesteuerter Arduino-Spybot bauen – Überwachungsroboter mit IP-Kamera
- DIY Arduino USB Gaming Controller – Bauen Sie Ihren eigenen High-Performance Gamepad
- Arduino Touch Breakout-Spiel: Klassisches Arcade auf 2,4″ TFT LCD
- Altes RC-Auto per Xbox-Controller & Arduino zum Joystick-Fahrzeug umbauen
- Arduino Web-MP3-Player: Browsergesteuerte Audio-Wiedergabe
- Pixel Chaser: Interaktives One-Tap-LED-Spiel mit Arduino Nano
- Arduino per Web-Pattern-Entsperrung sichern – Einfache Einrichtung & Fernsteuerung
- Arduino-gesteuertes automatisiertes Chrome Dino-Spiel bauen