
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.

Die Hardware
Schließe das LCD an:


⇒LCD
Normalerweise wäre eine komplexe Verkabelung zum Betrieb eines LCDs nötig. Der ⇒I2C-Bus regelt über einen eigenen Mikroprozessor die Kommunikation der Datenleitungen untereinander. Es werden deshalb nur vier Anschlüsse benötigt.

Die Helligkeit kann mit einem Potentiometer auf der Rückseite des LCDs eingestellt werden.
Benötigte Bauteile
- Servomotor
- LCD
- Leitungsdrähte
Der Schaltplan
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)
Benötigte Bibliotheken
![]() | ![]() |
![]() |
oder: Sketch -> Bibliothek einbinden -> Bibliotheken verwalten
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
- Grafische Temperaturanzeige mit der Bibliothek TFT_eSPI
- Countdown mit einer einstelligen 7-Segment-Anzeige
- Countdown mit einem OLED-Display
- DHT11/DHT22 – Durchschnittstemperatur berechnen und auf einem OLED-Display anzeigen
- ESP – DHT Messdaten auf Waveshare 1,54 Zoll E-Ink anzeigen
- Wetterdaten von Openweather mit der API 3.0 auf einem TFT anzeigen
- Farbenspiele mit einer RGB-Matrix
- Fotoschau mit ESP32, TFT und SD-Kartenleser
- Fotoschau mit TFT-Shield
- GFXcansas einsetzen
Letzte Aktualisierung:









