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

LCD-Animationen & Spiele mit Arduino UNO erstellen

Komponenten und Zubehör

Apps und Onlinedienste

Projektbeschreibung

Dieses Tutorial vermittelt die Grundlagen von Animationen auf einem 16×2-LCD mit Arduino. Es beginnt bei der Verdrahtung, über einfaches Textausgeben bis hin zu scrollendem Text, benutzerdefinierten Zeichen und schließlich einem kleinen Spiel.

LCD-Verdrahtung (4-Bit-Modus)

LCD-PinFunktionAnschluss
1VSS (GND)Masse-Schiene (Arduino GND)
2VDD (+5 V)Plus-Schiene (Arduino 5 V)
3VO (Kontrast)Schleifer des Potis (Enden an +5 V/GND)
4RSArduino Pin 12
5R/WMasse (Schreibmodus)
6E (Enable)Arduino Pin 11
11D4Arduino Pin 4
12D5Arduino Pin 5
13D6Arduino Pin 6
14D7Arduino Pin 7
15A (Anode LED+)+5 V über 220 Ω
16K (Kathode LED-)Masse

Test: Nach Einschalten muss die untere Zeile dunkel leuchten. Falls nicht: Lötstellen, Verdrahtung, Kontrast prüfen.

Erste Testausgabe

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 4, 5, 6, 7); // rs, e, d4, d5, d6, d7
void setup() {
  lcd.begin(16, 2);
  lcd.setCursor(0, 1);
  lcd.print("Working");
}
void loop() {}

Erscheint „Working“, ist die Verdrahtung korrekt.

Code-Erklärung

Scrollender Text

Ein Text wandert von rechts nach links über das Display. Kernidee: In einer Schleife den Cursor positionieren, Text ausgeben, lcd.clear() für jedes Frame, Verzögerung für Lesbarkeit.

void loop() {
  int n = 15;
  char message[] = "scrolling text!";
  char *ptr = message;
  while (n != -14) {
    lcd.clear();
    lcd.setCursor(n, 1);
    if (n < 0) ptr++;
    lcd.print(ptr);
    n--;
    delay(250);
  }
}

Der Pointer ptr wird inkrementiert, sobald der Text links aus dem sichtbaren Bereich ragt, damit der sichtbare Teil korrekt angezeigt wird.

Benutzerdefinierte Zeichen (Custom Characters)

Das HD44780-Controller erlaubt 8 benutzerdefinierte Zeichen (5×8 Pixel). Jedes Zeichen wird als Array von 8 Bytes definiert (1 = Pixel an, 0 = aus). Erstellung z. B. mit LCD Character Creator.

byte dino[8] = {
  B01110, B01110, B01100, B01111,
  B11101, B01010, B01010, B01010
};
void setup() {
  lcd.createChar(0, dino);
  lcd.begin(16,2);
  lcd.setCursor(0,1);
  lcd.write(byte(0));
}

Animation: Pfeil schießen

Drei Custom Characters (Pfeilspitze, Schaft, Ende) werden nacheinander an wechselnden Positionen ausgegeben, was einen fliegenden Pfeil simuliert.

byte arrowhead[8] = { B00001, B00011, B00111, B01111, B00111, B00011, B00001, B00000 };
byte arrowbody[8] = { B00000, B00000, B00000, B11111, B11111, B00000, B00000, B00000 };
byte arrowtail[8] = { B00011, B00111, B01111, B11111, B11111, B00111, B00011, B00000 };

void setup() {
  lcd.createChar(0, arrowhead);
  lcd.createChar(1, arrowbody);
  lcd.createChar(2, arrowtail);
  lcd.begin(16,2);
}
void loop() {
  int n = 15;
  while (n != -1) {
    lcd.clear();
    lcd.setCursor(0,1);
    lcd.write(byte(0));
    lcd.write(byte(1));
    lcd.write(byte(2));
    n--;
    delay(50);
  }
}

Spiel: Ausweichen (Dodge Game)

Ein „Held“ (Custom Character) steht in Zeile 1. Pfeile fliegen von rechts nach links. Per Taster (Interrupt an Pin 2) springt der Held in Zeile 0. Wird er getroffen, ist das Spiel vorbei. Score wird oben rechts angezeigt.

Wichtige Konzepte:

Der vollständige, kommentierte Spielcode ist im Originalartikel enthalten.

Code

Zwei Sketches stehen bereit: einer für die Pfeil-Animation, einer für das komplette Spiel. Beide nutzen die LiquidCrystal-Bibliothek und Custom Characters.

Schaltplan

Der Schaltplan zeigt die 4-Bit-Verdrahtung des LCD, Kontrast-Poti, Hintergrundbeleuchtung und Taster an Pin 2 (Interrupt 0).

Herstellungsprozess

  1. Arduino-Sensoren: Typen, Anwendungen und reale Projekte
  2. Handheld-Konsole selbst bauen: Arduboy-Clone (Arduino Micro, OLED, PCB-Design)
  3. Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt
  4. Arduino Temperatur- & Feuchtelogger mit DHT11 & Ethernet Shield
  5. Python 3 zu Arduino UNO: Einfache Steuerung & LED-Demo
  6. Echtzeit-Zelluläre Automaten auf Arduino mit 128x64 OLED-Display
  7. Kompaktes FM-Radio mit Arduino Nano und RDA5807M selbst bauen
  8. Zuverlässige Arduino-Wetterstation mit DHT-Sensoren bauen
  9. Klassisches Arduino-LCD-Arcade-Spiel mit Summer und Joystick bauen
  10. MKR1000 mit DHT22: Temperatur & Luftfeuchte in Echtzeit an Azure senden