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

Weiche den Defs aus!

Komponenten und Verbrauchsmaterialien

Widerstand 10k Ohm
Eine für den Kontrast des LCD-Bildschirms, eine andere für die Taste.Wichtig:Verwenden Sie den Widerstand in Pull -Down-Konfiguration, im Gegensatz zu der im Handbuch gezeigten Pull-Up-Konfiguration.
× 2
Widerstand 1k Ohm
Für den Kontrast des LCD-Bildschirms.
× 1
SparkFun Drucktastenschalter 12 mm
× 1
Adafruit Standard LCD - 16x2 Weiß auf Blau
× 1
Arduino UNO
× 1
Jumper (generisch)
× 1

Über dieses Projekt

Hintergrund

Ich war Teil eines größeren Projekts, aber es gab eine Verzögerung. Also beschloss ich, etwas mit meinem alten Arduino-Kit zu machen. Ich habe den LCD-Bildschirm noch nie benutzt. Also habe ich die Pins in den Bildschirm gelötet (ich habe zum ersten Mal Löten gelernt).

Zuerst habe ich den Code aus einem Online-Handbuch kopiert und hochgeladen. Es wurde nur Text angezeigt, der sich nach rechts und links bewegte. Dies war, als ich in die LiquidCrystal-Bibliothek eingeführt wurde. Ich habe einen Code geschrieben, der die Zahl "0" über den Bildschirm hüpfen ließ, es hat ziemlich Spaß gemacht. Da dachte ich daran, etwas komplexer zu machen, ein Spiel. Ich habe auf Arduino nach LCD-Spielen gegoogelt und nur 3 Spiele gefunden, von denen 2 für mich funktionierten. Der Code für diese Spiele war viel zu komplex, um ihn zu verstehen, also habe ich mich entschieden, ein einfaches Spiel zu entwickeln.

Einrichten

Verbinden Sie die LCD-Pins mit Drähten mit dem Arduino, wie im folgenden Schema gezeigt.

Ich habe ein 10k-Potentiometer verwendet, um den Kontrast einzustellen, und ihn auf den gewünschten Kontrast eingestellt. Ich habe den Widerstand zwischen den Pins mit einem Multimeter gemessen und geeignete Widerstände (1k und 10k Ohm in Reihe) für den VO-Pin des LCD verwendet.

Platzieren Sie einen Druckknopf auf dem Steckbrett und verbinden Sie das Eingangskabel mit Pin 8 des Arduino. Laden Sie den Code auf Ihr Arduino hoch und Sie können loslegen.

Hinweis:Verwenden Sie den Tastenwiderstand im Pull-Down-Modus, wie im Schaltplan gezeigt.

Das Spiel spielen

In diesem Spiel bist du ein Fußballspieler mit dem Ball an deinen Beinen. Verteidiger kommen auf dich zu und du solltest ihnen einfach ausweichen.

Klicken Sie nach dem Intro auf die Schaltfläche, wenn Sie dazu aufgefordert werden. Wenn der Verteidiger nah genug ist, drücke den Knopf, um zu springen. Der nächste Verteidiger nähert sich mit einer höheren Geschwindigkeit und dies wird für 10 Verteidiger fortgesetzt.

PS:Ich habe zunächst "0" als Kontrolle und "1" als Hindernis verwendet. Da die FIFA Fussball-Weltmeisterschaft 2018 im Gange ist und ich selbst Messi-Fan bin, habe ich beschlossen, das Thema zu ändern.

Ich habe die Glyphen für den Spieler und den Verteidiger mit einem Online-Generator erstellt, den Link hier:https://omerk.github.io/lcdchargen/

Code

  • lcd_1.ino
lcd_1.inoArduino
/* Weiche den Defs aus!! Erstellt von:Shreyas R P Erstellt am:21-06-2018 E-Mail-ID:[email protected] Ein einfaches Spiel für 16x2 LCD mit einer Taste. Wenn Sie Verbesserungen oder Änderungen am Spiel vornehmen, fügen Sie bitte Ihre Credits unter der Zeile hinzu:Viel Spaß :) Copyright (C) 2018 Shreyas RP Dieses Programm ist freie Software:Sie können es unter den Bedingungen der GNU . weitergeben und/oder modifizieren General Public License, wie von der Free Software Foundation veröffentlicht, entweder Version 3 der Lizenz oder (nach Ihrer Wahl) jede spätere Version. Dieses Programm wird in der Hoffnung verteilt, dass es nützlich ist, jedoch OHNE JEGLICHE GEWÄHRLEISTUNG; auch ohne die stillschweigende Garantie der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Weitere Informationen finden Sie in der GNU General Public License. Zusammen mit diesem Programm sollten Sie eine Kopie der GNU General Public License erhalten haben. Wenn nicht, siehe . -------------------------------------------------- ------------------------------------------------------- */#include const int btn =8; //Button-Eingabe-Pin //Texte zum Displaychar* introText[]={"Dodge the defs!!","Erstellt am:", "Drücke auf den Button..."};//Variablen-Deklarationenint game=0;int buttonPress =0; int buttonState=0;int HindernisPos;int obsDelay;int score=0;unsigned long lastDebounceTime =0; // das letzte Mal, als der Ausgangspin toggledunsigned war long debounceDelay =50; int lastButtonState=LOW;//GRAPHICSbyte runnin1[8] ={ 0b01100, 0b01100, 0b00000, 0b11100, 0b01110, 0b01100, 0b11110, 0b00011};byte runnin2[8]={ 0b00110, 0b00110, 0b00000, 0b00111, 001b01, 0b01110, 0b00101};Byte-Sprung[8]={ 0b00100, 0b01100, 0b11100, 0b01110, 0b01100, 0b11111, 0b00000, 0b00001};Byte def1[8] ={ 0b00100, 0b00110, 0b00111, 0b01110, 0b00110, 010001111, 0 0b00000};Byte def2[8]={ 0b00100, 0b00110, 0b00111, 0b01110, 0b00110, 0b00110, 0b00110, 0b00010};Byte Slide[8]={ 0b00000, 0b00000, 0b00011, 0b00011, 0b00000, 0b01111b 00001111}; LiquidCrystal LCD (4,6,10,11,12,13);void setup () { Serial.begin (9600); pinMode (btn, EINGANG); lcd.begin(16,2); lcd.createChar(0,runnin1); lcd.createChar(1,runnin2); lcd.createChar(2,Sprung); lcd.createChar(3,def1); lcd.createChar(4,def2); lcd.createChar(5, Folie); buttonState=digitalRead(btn);}void loop(){intro(); while(game==1) ballActive(); Endspiel(); aufrechtzuerhalten. Void Intro () { Punktzahl =0; lcd.clear(); lcd.print(introText[0]); //Anstatt introText zu deklarieren, können Sie den Text direkt mit " ... " ausgeben lcd.setCursor(7,1); lcd.print("Von SRP888"); Verzögerung (2000); lcd.clear(); lcd.print (introText[1]); lcd.setCursor(0,1); lcd.print("21-06-2018"); Verzögerung (2000); lcd.clear(); while(button()!=1) //warten, bis der Benutzer auf die Schaltfläche klickt, bis dahin den Text anzeigen. { lcd.setCursor (0,0); lcd.print (introText [2]); Verzögerung (100); } if(button()==1) Spiel=1; aufrechtzuerhalten. Void reset () { if (obstaclePos%2==0) // Ändern der Anzeige des Spielers von einer Pose in eine andere, um zu zeigen, dass er rennt, wobei HindernisPos intelligent verwendet wird. { lcd.clear(); lcd.setCursor(0,1); lcd.write (byte (0)); aufrechtzuerhalten. Sonst {lcd.clear(); lcd.setCursor(0,1); lcd.write(1); }} void ballActive() {obsDelay=200; //Anfangsverzögerung für den Verteidiger HindernisPos=15; // da es ein 16x2 LCD ist und der Index bei 0 beginnt. while(game==1) { reset(); if(button()==1) //wenn die Taste gedrückt wird. { lcd.clear(); lcd.setCursor(0,0); lcd.write(2); // Drucken Sie das springende Hindernis des Spielers (obstaclePos); // die Verteidigerverzögerung drucken (400); // Dies soll verhindern, dass die Anzeige schnell verschwindet und unbemerkt bleibt. lcd.clear(); lcd.setCursor(0,1); lcd.write(1); // den Spieler zurück auf das Bodenhindernis drucken (obstaclePos); //Drucke den Verteidiger} else { if(obstaclePos!=0) //Wenn der Verteidiger sich dem Spieler nicht genähert hat, dann fahre fort. { zurücksetzen(); hindernis(hindernisPos); } else if(obstaclePos==0) ​​// wenn der Verteidiger an Position 0 ist, d.h. er sich dem Spieler am Boden genähert hat, dann das Spiel beenden. { Spiel=0; brechen; } } hindernisPos--; // bringt den Verteidiger näher an den Spieler if(obstaclePos<0) //wenn der Spieler erfolgreich ausgewichen ist, { obsDelay=obsDelay-20; // Verzögerung verringern (Geschwindigkeit erhöhen), HindernisPos =15; //den Verteidiger in die Ausgangsposition bringen, score++; //und erhöhe die Punktzahl um 1. } if(obsDelay==0) //wenn 10 Spielern ausgewichen wurde (weil 200/20=10), dann beende das Spiel game=0; Verzögerung (obsVerzögerung); }}int button() {intread =digitalRead(btn); // Wenn sich der Schalter aufgrund von Rauschen oder Drücken geändert hat:if (reading !=lastButtonState) { // Zurücksetzen des Entprell-Timers lastDebounceTime =millis(); } if ((millis() - lastDebounceTime)> debounceDelay) { buttonState =lesen; if (buttonState ==HIGH) { lastButtonState =lesen; 1 zurückgeben; aufrechtzuerhalten.; lcd.write(3); aufrechtzuerhalten. Sonst if(obstaclePos%2!=0&&HindernisPos>2) {lcd.setCursor(i,1); lcd.write(4); aufrechtzuerhalten. Sonst // wenn er 2 Schritte in der Nähe des Spielers ist, dann zeig ihm das Gleiten { lcd.setCursor(i,1); lcd.write(5); }}void endGame () { if (score ==10) { lcd.clear (); lcd.print("Herzlichen Glückwunsch!"); lcd.setCursor(0,1); lcd.print("Du hast sie alle geschlagen"); Verzögerung (3000); aufrechtzuerhalten. Sonst if (Score <3) {lcd.clear(); lcd.print("Du bist scheiße"); lcd.setCursor(0,1); lcd.print("Ergebnis:"); lcd.print (Score); Verzögerung (3000); aufrechtzuerhalten. Sonst if (Score<6) {lcd.clear(); lcd.print("Nicht schlecht!"); lcd.setCursor(0,1); lcd.print("Ergebnis:"); lcd.print (Score); Verzögerung (3000); aufrechtzuerhalten. Sonst {lcd.clear(); lcd.print("Großartig!"); lcd.setCursor(0,1); lcd.print("Ergebnis:"); lcd.print (Score); Verzögerung (3000); }}

Schaltpläne


Herstellungsprozess

  1. Ode an den Prototyp
  2. Die Herausforderungen des Produktdesigns
  3. Die Tetrode
  4. Temperaturüberwachung auf dem Raspberry Pi
  5. Ausstellung:Die Urausstellung
  6. Der Drohnen-Pi
  7. Archimedes:Die KI-Roboter-Eule
  8. Strategische Datenbeschaffung ist der moderne Weg, um Störungen zu vermeiden
  9. Das Geheimnis der industriellen Touchscreen-Reparatur
  10. Der beste Laubbläser