Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Ninja Dollar - LCD-Spiel

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
Adafruit Standard LCD - 16x2 Weiß auf Blau
× 1
Breadboard (generisch)
Ich habe zwei für mehr Platz verwendet, du kannst nur ein Steckbrett verwenden.
× 2
Single Turn Potentiometer - 10k Ohm
× 1
LED (generisch)
× 2
Widerstand 1k Ohm
× 4
SparkFun Drucktastenschalter 12 mm
× 2
RobotGeek Summer
× 1
Jumper (generisch)
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)
Zum Löten von LCD

Über dieses Projekt

Dies ist ein einfaches LCD-Spiel. Meine Inspiration war das Dinosaurier-Spiel von Google Chrome, aber ich habe noch ein paar weitere Änderungen vorgenommen. Der Dollarkrieger bewegt sich ständig und kann springen, um den Hindernissen auszuweichen und die "Star"-Punkte zu sammeln. Springt er über das Hindernis, erhält er einen Punkt, fängt er den Stern, erhält er fünf Punkte. Er kann auch schießen und die Hindernisse vor ihm beseitigen. Es gibt auch LED-Dioden, die anzeigen, ob er springt oder schießt. Wenn er 10, 20 oder 30 Punkte sammelt, bewegt er sich schneller als zuvor. Wenn er 50 Punkte sammelt, gewinnen Sie. Wenn du auf das Hindernis triffst, verlierst du. Natürlich können Sie diese Grenzen einfach im Code ändern. Ich habe auch einen passiven Summer hinzugefügt, der Geräusche macht, wenn der Krieger springt oder schießt, und eine spezielle Melodie, wenn Sie verlieren oder gewinnen. Dies ist mein erstes Projekt hier und ich hoffe es gefällt euch. Geben Sie mir Ihre Kommentare und Bewertungen.

Das Video

Verbindungen

Das LCD-Modul (Liquid Crystal Display) besitzt an der Unterseite einen 16-poligen Stiftleisten. Stecken Sie dieses in das Steckbrett, wie im Bild gezeigt. Alle elektronischen Signale, die das LCD mit Strom versorgen und steuern, gehen durch diesen Header.

Diese Pins sind (von links nach rechts):

  • GND - Massesignal
  • VCC - positives Stromsignal
  • V0 - Kontrastanpassung
  • RS - Registerauswahl
  • R/W - Lese-/Schreibauswahl
  • E - Freigabesignal
  • D0 - Datenbit 0 (hier nicht verwendet)
  • D1 - Datenbit 1 (hier nicht verwendet)
  • D2 - Datenbit 2 (hier nicht verwendet)
  • D3 - Datenbit 3 (hier nicht verwendet)
  • D4 - Datenbit 4
  • D5 - Datenbit 5
  • D6 - Datenbit 6
  • D7 - Datenbit 7
  • A - Hintergrundbeleuchtung LED positiv
  • K - Hintergrundbeleuchtung LED negativ

Verwenden Sie ein Überbrückungskabel, um das 5V-Signal auf dem Arduino mit der roten Reihe oben auf dem Steckbrett zu verbinden.

Verwenden Sie ein Überbrückungskabel, um das GND-Signal auf dem Arduino mit der blauen Reihe oben auf dem Steckbrett zu verbinden.

  • VSS-Pin mit Masse verbinden
  • VDD-Pin mit dem 5V-Signal verbinden
  • V0-Pin zum Potentiometer-Ausgangspin
  • RS-Pin an Arduino-Pin 12
  • RW-Pin auf Masse
  • E-Pin an Arduino-Pin 11
  • D4 zu Arudino Pin 5
  • D5 zu Arduino-Pin 4
  • D6 an Arduino-Pin 3
  • D7 an Arduino-Pin 2
  • Ein Pin für das 5V-Signal
  • K-Pin zum GND-Signal

Verbinden Sie die restlichen Potentiometer-Pins mit dem 5V-Signal und dem GND-Signal.

Wenn Sie einen 3-Pin-Piezo-Summer haben, verbinden Sie den S-Pin mit dem Arduino 7-Pin, den '-'-Pin mit GND und den restlichen Pin mit dem 5V-Signal. Wenn Sie einen Piezo-Summer mit 2 Pins haben, verbinden Sie einen Pin mit dem GND-Signal und den anderen mit dem Arduino 7-Pin.

Schließen Sie die Schalterknöpfe gemäß den Schaltplänen an. Die erste Taste (Sprungtaste) ist mit dem Arduino-Pin 1 verbunden und die zweite (Shoot-Taste) ist mit dem Arduino-Pin 6 verbunden. Die LEDs werden nur von den Tasten und nicht von Arduino gesteuert. Die Anode ist mit dem Knopfstift verbunden, der mit dem Arduino verbunden ist, und die Kathode ist mit Masse verbunden.

Code

  • dollar_warrior
dollar_warriorArduino
#include const int rs =12, en =11, d4 =5, d5 =4, d6 =3, d7 =2;const int buttonPin1=1;const int buttonPin2=6;const int Summer=7;unsigned long pts=0;//set buttonstatesbool buttonState1=0;bool buttonState2=0;//Zufallszahl für die Position von Hindernissenint randomNums[6];//zufällige Zahl für die Anzahl von Hindernissenint randomNum=0;// Zufallszahl für die Position von ptsint randomNums1[3]; // Zufallszahl für die Anzahl von ptsint randomNum1 =0; // Startverzögerungszeit, die allmählich abnimmtunsigned int myDelay =500; // diesen Booleschen Wert gemacht, um zu überprüfen, ob button2 gedrückt wird, weil wenn es wird einmal in der ersten for-Schleife gedrückt. Ich möchte, dass Hindernisse erst am Ende von itbool temp=0 geschrieben werden; // diese Variable speichert die Positionen des Kriegers, während er schießt. es kann 16 Positionen geben, weil der Krieger 16 Positionen hat.int tempI[16];//i benutze diesen booleschen Wert, um zu prüfen, ob der Punkt gefangen istbool temp1=0;//benutze diese Variable, um die Position des gefangenen Punktes zu speichern. es muss ein Array sein, um die Position aller Punkte in einer Iteration der ersten for-Schleife zu speichern. wenn nur eine Position gespeichert wurde, würde der "alte" Punkt in der neuen Iterationint tempI1[3] zurückkommen; // Verwenden Sie diese Variable, um eine Anzahl von Aufnahmen des Kriegers zu erhalten, die auch die Länge eines Arrays hat tempIint button2IsPressed=0;LiquidCrystal lcd(rs, en, d4, d5, d6, d7);void setup () { / / Anzahl der Spalten und Zeilen des LCD einstellen:lcd.begin(16, 2); // Buttonpin-Modus einstellen PinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (Summer, AUSGANG); lcd.setCursor(4,0); lcd.print("DAS SPIEL"); lcd.setCursor(2,1); lcd.print("BEGINNT IN"); lcd.print("5"); Verzögerung (1000); lcd.setCursor(12,1); lcd.print("4"); Verzögerung (1000); lcd.setCursor(12,1); lcd.print("3"); Verzögerung (1000); lcd.setCursor(12,1); lcd.print("2"); Verzögerung (1000); lcd.setCursor(12,1); lcd.print("1"); Verzögerung (1000); lcd.clear();}void loop() { hier:randomNum=random(5); for(int i=0; i9 &&pts<20) {lcd.setCursor(14,0); myDelay=400; aufrechtzuerhalten. Sonst if(pts>19 &&pts<30) {lcd.setCursor(14,0); myDelay=300; aufrechtzuerhalten. Sonst if(pts>29 &&pts<50) { myDelay=200; lcd.setCursor(14,0); aufrechtzuerhalten. Sonst if (pts>=50) {pts=0; myDelay=500; lcd.clear(); lcd.setCursor(5,0); lcd.print("Sieg"); Ton (Summer, 262); Verzögerung (200); Ton (Summer, 330); Verzögerung (200); Ton (Summer, 392); Verzögerung (100); Ton (Summer, 330); Verzögerung (100); Ton (Summer, 392); Verzögerung (100); Ton (Summer, 523); Verzögerung (200); kein Ton (Summer); Verzögerung (3000); lcd.clear(); gehe hierher; } else lcd.setCursor(15,0); lcd.print (pts); buttonState1=digitalRead(buttonPin1); buttonState2=digitalRead(buttonPin2); // Hindernisse setzen, wenn der Krieger nicht geschossen hat oder geschossen hat, aber er ist auch gesprungen if(!temp){ for(int j=0; jrandomNums[j]){ lcd.setCursor(randomNums[j],1); lcd.print("#"); aufrechtzuerhalten. lcd.print("*"); }} else{ for(int j=0; j 

Schaltpläne

game_aUIjA6VZxX.fzz

Herstellungsprozess

  1. Schach
  2. Flipper
  3. Fußball
  4. Arduino-Gyroskop-Spiel mit MPU-6050
  5. DIY 37 LED-Roulette-Spiel
  6. 3D RGB Arduclock
  7. MyRiver
  8. Joystick-Spiel
  9. Finde mich
  10. DIY 10Hz-50kHz Oszilloskop auf 128x64 LCD-Display