In verschiedenen Instagram Storys / Beiträge konnte ich ein kleines, niedliches Projekt mit einem Arduino und dem „Google Dino Jump“ Spiel erblicken und genau dieses möchte ich dir hier in einem Weekend Projekt zeigen. Daher zunächst der Hinweis, dass die Idee dieses Mal nicht von mir stammt, sondern kopiert wurde. (Aber ich werde meine Lösung zu diesem Spiel anbieten, ich habe nur das Video gesehen.)
Für den Nachbau in diesem Beitrag benötigst du den kostenfreien Browser Chrome von Google.
Wo und wann sehe ich das Spiel „Google Dino Jump“?
Das Spiel wird dir im Browser Google Chrome angezeigt, wenn du keine Internetverbindung hast. D.h. eigentlich solltest du dich bisher wohl glücklich schätzen, wenn du es noch nicht gesehen hast.
Wenn du also keine Internetverbindung hast, dann wird dir folgende Fehlerseite angezeigt.
Wenn du nun die Leertaste auf deiner Tastatur betätigst, dann wird das Spiel gestartet.
Du kannst dieses auch provozieren, in dem du zbsp. unter Microsoft Windows unter „Systemsteuerung\Netzwerk und Internet\Netzwerkverbindungen“
Du könntest natürlich auch das Kabel aus dem Router ziehen, jedoch würdest du damit ggf. dein Telefon und vor allem andere Familienmitglieder / angeschlossene Geräte abklemmen, welches wohl für „Spannungen“ sorgen kann.
Wenn du mehr über die Entstehung und den Background zu diesem Browsergame erfahren möchtest, dann empfehle ich dir die Seite https://dino-chrome.com/de.
Aufbau und Ablauf des Spieles
Das Spiel ist im Aufbau relativ simple, du bist ein Dinosaurier, genauer gesagt ein T-Rex. Dieser T-Rex läuft von links nach rechts und muss über Kakteen springen. Zum Springen musst du die Leertaste betätigen. Die Leertaste ist aber auch die einzige Taste, welche du für dieses Spiel betätigen kannst / musst.
Wann endet das Spiel?
Das Spiel endet mit dem Tod des Dinos, dieses passiert, wenn der Dino mit einem Kaktus zusammen stößt. Das kann passieren, wenn zu langsam oder aber zu schnell bist.
automatisieren des Spieles
Das Spiel lässt sich mit einigen wenigen Bauteilen super einfach automatisieren. Und wie du dieses machst, erfährst du nun nach der kurzen Einleitung in diesem Abschnitt des Beitrages.
Benötigte Bauteile / Materialien & Kosten
- einen Arduino UNO*, (7 €)
- einen Fotowiderstand*, (2 € (10 Stck.)),
- einen 10 kOhm Widerstand*, (2 € (10 Stck.)),
- ein Servomotor SG90*, (1,5 €),
- ein paar Breadboardkabel, sowie
- etwas Klebeband* **
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
** Das Klebeband wird später genutzt, um den Fotowiderstand auf einem Monitor zu „montieren“ hier bietet es sich an, mal nicht so tief in die Tasche zu greifen, denn das günstige Klebeband klebt nicht so gut und lässt sich dadurch besser wieder entfernen. (Alternativ kann man aber auch Malerkreppband verwenden. Dieses lässt sich sehr leicht entfernen, jedoch hat nicht jeder dieses zu Hause.)
Die Kosten für das Material für dieses kleine Projekt betragen 13,5 €. Wer jedoch schon etwas mehr mit dem Arduino gebastelt hat, der sollte dieses Material sowieso schon zu Hause haben.
Aufbau des Projektes – Weekend Projekt: Google Dino Jump
Wie du einen Servomotor am Arduino betreibst und steuerst, habe ich bereits im Beitrag Arduino, Lektion 16: Servo ansteuern und wie du die Werte eines Fotowiderstandes ausließt im Beitrag Arduino Lektion 4: LED mit Fotowiderstand.




Auch wenn du die verlinkten Beiträge noch nicht kennst, ich zeige dir Schritt für Schritt, wie du die Schaltung aufbaust und das Sketch / Programm erstellst.
Anschließen des Servomotors
Der Servomotor muss an einen PWM Pin angeschlossen werden.
Der Arduino UNO und Nano verfügt an den digitalen Pins 3, 5, 6, 9,10, 11 über die Möglichkeit, PWM Signale zu übertragen.
Die PWM Pins erkennst du auch an der Tilde „~“.
Der Servomotor verfügt über einen einfachen 3-Pin-Stecker, welcher meist die Farben braun, rot und orange hat.
Servomotor SG90 | Arduino UNO |
---|---|
braun | GND |
rot | 5V |
orange | digitaler Pin D9 |
Hinweise zum Umgang mit Servomotoren
In diesem Beitrag verwende ich bewusst den kleinen Servomotor SG90, dieser hat eine sehr geringe Stromaufnahme. Diese liegt in der Ruheposition beim max. 10mA und bei der Bewegung bei maximal 200mA. Der Arduino kann auf dem 5V Pin maximal 400mA vertragen. Dieses Maximum wird schon fast erreicht, wenn dieser kleine Servo mal hängt bzw. sich nicht weiter drehen kann (ca. 360mA).
Des Weiteren sollte das Ruderhorn des Servos nicht mit der Hand bewegt werden, da man dann das Getriebe nachhaltig beschädigen kann.
Ansteuern des Servomotors SG90
Den Servomotor haben wir am digitalen Pin D9 angeschlossen. In dem nachfolgenden kleinen Sketch habe ich als untere Position den Winkel von 1° und das Maximum von 60° am Servomotor. Solltest du jedoch eine Tastatur mit größeren Tasten haben, so müssen diese Winkel ggf. angepasst werden.
#include <Servo.h> //Bibliothek zum ansteuern von Servo #define servoPin 9 //Pause zwischen drücken der Taste und loslassen. //In dieser Pause muss der Weg für den Servo mit //eingerechnet werden! const int PAUSE = 150; int posDown = 1; //untere Position des Servos int posUp = 60; //obere Position des Servos Servo servo; //Servo Objekt erstellen (noch nicht initialisiert) void setup() { pinMode(servoPin, OUTPUT); //setzen des digitalen Pins als Ausgang servo.attach(servoPin); //setzen des Servo Objektes auf den digitalen PIN D9 } void loop() { jump(); delay(1000); } /* * Springen bzw. betätigen der Leertaste mit dem Servos */ void jump(){ servo.write(posDown); delay(PAUSE); servo.write(posUp); }
Video vom Zwischenstand
Wenn das oben gezeigte Sketch / Programm auf dem Arduino UNO ausgeführt wird, dann sollte sich bereits die Leertaste betätigen lassen.
Auslesen des Fotowiderstandes am Arduino UNO
Der Fotowiderstand wird zusammen mit einem 10 kOhm Widerstand am analogen Pin A2 angeschlossen.
Für das Auslesen des Fotowiderstandes benötigen wir keine zusätzliche Bibliothek, hier nutzen wir die Funktion „analogRead“. Dieser Funktion übergeben wir den Pin an welchem der Fotowiderstand angeschlossen ist und erhalten einen ganzzahligen Wert zwischen 0 und 1023.
//Fotowiderstand am analogen Pin A2 #define resistorPin A2 void setup() { Serial.begin(9600); } void loop() { //auslesen des Fotowiderstandes int resistorValue = analogRead(resistorPin); Serial.println(resistorValue); }
Mit diesem kleinen Sketch können wir nun ermitteln, wie die Unterschiede zwischen dem Kaktus in dem Spiel und dem Hintergrund ist. Ich habe zusätzlich sämtliche störende Lichtquellen entfernt (Lampen ausgeschaltet und Fenster verhängt) und habe einen Wert von 750 ermitteln können. Jeder
Da der Arduino jedoch „nur“ über einen 5V Pin verfügt, greifen wir diesen ab und schließen über ein Breadboard den Servo und den Fotowiderstand an.
der fertige Sketch
Wenn du diesen Sketch verwendest, musst du ggf. den Schwellwert für das Aufrufen der Funktion „jump“ an deinen Monitor anpassen.
#include <Servo.h> //Bibliothek zum ansteuern von Servo //Servomotor am digitalen Pin D9 #define servoPin 9 //Fotowiderstand am analogen Pin A2 #define resistorPin A2 //Pause zwischen drücken der Taste und loslassen. //In dieser Pause muss der Weg für den Servo mit //eingerechnet werden! const int PAUSE = 150; int posDown = 1; //untere Position des Servos int posUp = 60; //obere Position des Servos Servo servo; //Servo Objekt erstellen (noch nicht initialisiert) void setup() { pinMode(servoPin, OUTPUT); //setzen des digitalen Pins als Ausgang servo.attach(servoPin); //setzen des Servo Objektes auf den digitalen PIN D9 } void loop() { //auslesen des Fotowiderstandes int resistorValue = analogRead(resistorPin); //der Wert des Fotowiderstandes hängt vom Monitor und von dem umgebenen Licht ab //daher muss mit diesem Wert etwas experimentiert werden. if(resistorValue < 750){ jump(); } } /* * Springen bzw. betätigen der Leertaste mit dem Servos */ void jump(){ servo.write(posDown); delay(PAUSE); servo.write(posUp); }
Video
Sorry für die schlechte Qualität des Videos, jedoch musste ich die Fenster verhängen da das einfallende Sonnenlicht den Fotowiderstand sehr stark beeinflusst hat.