Kategorie: Anzeigemodule

Ziel des Projekts
Auf verschiedene Fragen soll der Arduino zufällig mit “ja”, “nein” oder “vielleicht” antworten. Die Frage wird auf einem LCD dargestellt, ein Servomotor zeigt die “Antwort” als Piktogramm an.

Benötigte Bauteile
- ⇒Servomotor
- ⇒4-zeiliges LCD mit I²C-Schnittstelle
- Leitungsdrähte
Der Schaltplan
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)
Benötigte Bibliotheken
![]() | ![]() |
![]() |
Das Programm
Bibliotheken und Variablen
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
// eingebaute Bibliothek servo.h verwenden #include "Servo.h" #include "LiquidCrystal_I2C.h" #include "Bounce2.h" LiquidCrystal_I2C lcd(0x27, 20, 4); // Bezeichnung des Motors Servo Motor; int TASTER = 7; /* das LCD ist auf 20 Zeichen begrenzt um einen unerwünschten Zeilenumbruch zu verhindern, müssen für die Fragen zwei Arrays erstellt werden */ // 1. Zeile der Frage String FragenErstezeile[10] = { // mit Leerzeichen bis 20 auffüllen { "Wird der BVB " }, { "Scheint morgen " }, { "Wird Deutschland " }, { "Habe ich 6 Richtige " }, { "Gibt es den " }, { "Gibt es UFOs und " }, { "Sollte ich mal " }, { "Bekomme ich bald " }, { "K\357nnen Schweine " }, { "Wird es morgen " }, }; // 2. Zeile der Frage String FragenZweiteZeile[10] = { { "Deutscher Meister? " }, { "die Sonne? " }, { "Fu\342ball-Weltmeister?" }, { "im Lotto? " }, { "Weihnachtsmann? " }, { "Au\342erirdische? " }, { "Lotto spielen? " }, { "mehr Gehalt? " }, { "fliegen? " }, { "regnen? " }, }; // Bibliothek Bounce2 // "Prellverhinderer" für den Taster starten Bounce Start = Bounce(); |
Der setup-Teil
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
void setup() { // Motor an Pin 9 angeschlossen (attach) Motor.attach(9); Serial.begin(9600); // Motor in die Mittelposition fahren Motor.write(90); // Zufallsgenerator starten randomSeed(analogRead(A0)); // LCD starten lcd.init(); lcd.backlight(); pinMode(TASTER, INPUT_PULLUP); // Instanz des Objekts Bounce für den Taster zuordnen // Zeitintervall einstellen Start.attach(TASTER); Start.interval(20); } |
Der loop-Teil
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
void loop() { // Taster abfragen if (Start.update()) { if (Start.read() == LOW) { // Zufallszahl zwischen 0 und der Länge des Arrays int Zahl = random(0, sizeof(FragenErstezeile) / sizeof(FragenErstezeile[0])); Serial.println(Zahl); lcd.setCursor(0, 0); lcd.print(FragenErstezeile[Zahl]); lcd.setCursor(0, 1); lcd.print(FragenZweiteZeile[Zahl]); delay(1000); // Bewegung des Motors zur Simulation der "Entscheidung" Motor.write(180); delay(500); Motor.write(0); delay(500); // 0 = ja/1 = vielleicht/2 = nein Zahl = random(0, 3); if (Zahl == 0) Motor.write(180); if (Zahl == 1) Motor.write(90); if (Zahl == 2) Motor.write(0); } } } |
Ähnliche Projekte
- Analoge Uhr mit BME280 auf ESP32 mit 3,5 Zoll/4 Zoll TFT
- Analoge Uhr mit TFT 240×240 Pixeln und RTC-Modul
- Analoge Uhr mit TFT-Shield und BME280
- Grafische Temperaturanzeige mit der Bibliothek TFT_eSPI
- BME280 – Messdaten anzeigen
- Countdown mit einer einstelligen 7-Segment-Anzeige
- Countdown mit einem OLED-Display
- Datum und Zeit mit ESP und time.h anzeigen
- Datum und Zeit mit dem NTP-Protokoll und einem Arduino WiFi anzeigen
- DHT11/DHT22 – Durchschnittstemperatur berechnen und auf einem OLED-Display anzeigen
Letzte Aktualisierung:




