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.
So sieht es aus:
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
Baue die Schaltung auf:
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)
Benötigte Bibliotheken:
oder: Sketch -> Bibliothek einbinden -> Bibliotheken verwalten
Binde die benötigten Bibliotheken ein und definiere die Variablen. Beachte die Kommentare.
// 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. Beachte die Kommentare.
void setup()
{
// Motor an Pin 9 angeschlossen (attach)
Serial.begin(9600);
// Motor an Pin 9
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: Beachte die Kommentare.
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);
}
}
}
Verwandte Anleitungen:
- Ampel
- Ampel mit dem Beschleunigungssensor ADXL335 schalten
- Ampel mit Bluetooth schalten
- Ampel mit einem Ethernet-Shield schalten
- Ampel mit Fußgängerampel
- Ampel mit Fußgängerampel und Taster
- Ampel mit UNO R4 WiFi schalten
- Ampelanlage an einem Fußgängerüberweg
- Ampelschaltung mit einem LED-Stick
- Ampel mit Ultraschallsensor schalten
- MQTT mit ESP32
- Zwei Ampeln
Letzte Aktualisierung: