Mit Künstlicher Intelligenz (KI) PGLU-Projekte programmieren
Das Programmieren deiner PGLU-Projekte mit Künstlicher Intelligenz ist einfach, denn C++ ist eine weit verbreitete Programmiersprache. Zudem gehört der Arduino zu den bekanntesten Mikrocontrollern, weshalb im Web unzählige Daten dazu vorhanden sind.
Es geht also weniger darum, programmieren zu lernen, sondern darum, die Dinge zu verstehen und beschreiben zu können!
Erklär der Künstlichen Intelligenz deine Hardware!
Damit das Coding mit Künstlicher Intelligenz gelingt, musst du ihr zuerst erklären, wie die Hardware beschaffen ist, mit der du arbeitest. Wenn du dazu unsere PROMPTS ZUM GRUNDVERSTÄNDNIS verwendest, ist das schnell erledigt! Dabei empfehlen wir, in der KI die GEDÄCHTNIS-FUNKTION einzuschalten.
Lade den C++ Code auf den PGLU Controller
Um den generierten Code auf den PGLU-Controller zu laden, verwende die Arduino IDE indem du diese zuerst auf deinem Computer installierst. Wie das geht, steht hier in den Kapitel 1.2 und 1.3.
1. Prompt zum Grundverständnis > PGLU-Mikrocontroller
Programmiere den PGLU Mikrocontroller, der folgende elektronische sowie logische Eigenschaften besitzt und auf dem Arduino Nano basiert:
1. Die Namen der Pins des PGLU-Controllers entsprechen diesen Arduino-Pins:
S1 = A0
S2 = A1
S3 = A2
S4 = A3
L1 = 9
L2 = 10
L3 = 3
L4 = 11
M1 = 5
M2 = 6
Diese Pinbelegung findest du auf der Webseite PGLU.CH > ANLEITUNG > ARDUINO PINOUT
2. Die Stromkreise sind nach dem Prinzip "current sinking" geschaltet. Das heisst, dass du bei den Sensoren und Aktoren HIGH und LOW immer vertauschen musst! Das gleiche gilt für alle PWM-Signale, deren Wirkweise ebenfalls stets zu invertrieren ist.
3. Auf dem Controller gibt es einen Motorentreiber, der auf einer Doppel H-Brücke beruht. Die Logik der Drehrichtungen den Motoren folgt diesem Beispiel:
0 = Rückwärts drehen
127 oder 128 = Stopp
255 = Vorwärts drehen
Verwende für die Steuerung der Motoren immer analogWrite() statt digitalWrite(), damit eine Geschwindigkeitsregelung möglich ist.
4. Falls Neopixel programmiert werden, sind diese immer am Ausgang L1 (also Pin 9) angeschlossen. Verwende immer die Library FastLED.
5. Die Pixel Indizes starten bei 1, nicht bei 0
Reichen dir diese Informationen, um den PGLU-Controller richtig zu programmieren?
2. Prompt zum Grundverständnis > Neopixel STICK
Es soll ein Neopixel STICK mit 8 Pixeln in einer Reihe programmiert werden.
Verstehst du diese Logik?
3. Prompt zum Grundverständnis > Neopixel MATRIX
Es soll eine Neopixel MATRIX mit 4x4 Pixeln programmiert werden.
Die Pixel in der Matrix sind wie folgt angeordnet:
Aus Sicht der Reihen:
Erste Reihe: 04 05 12 13
Zweite Reihe: 03 06 11 14
Dritte Reihe: 02 07 10 15
Vierte Reihe: 01 08 09 16
Aus Sicht der Spalten
Erste Spalte: 04 03 02 01
Zweite Spalte: 05 06 07 08
Dritte Spalte: 12 11 10 09
Vierte Spalte: 13 14 15 16
oder als 2D-Array Variable:
int pixel_order[4][4] = {
{4, 5, 12, 13},
{3, 6, 11, 14},
{2, 7, 10, 15},
{1, 8, 9, 16}
};
Verstehst du diese Logik?
4. Prompt zum Grundverständnis > Ultraschall-Sensor
Ein Ultraschallsensor ist so angeschlossen:
Trigger = L3
Echo: = S3
Verstehst du diese Logik?
5. Prompt zum Grundverständnis > Soundsensor (Mikrofon)
Ein Soundsensor (Mikrofon) ist so angeschlossen:
OUT = S3
Der Soundsensor erkennt das überschreiten der Lautstärke-Schwelle einer Klangquelle. Die Höhe dieser Schwelle, oder besser gesagt die Empfindlichkeit des Sensors, wird am Sensor selber mit dem blauen Trimmer eingestellt. Ein kleiner Schraubenzieher oder ein Küchenmesser eignet sich gut dazu.
Sobald die Lautstärke-Schwelle überschritten ist, schaltet OUT auf HIGH
Verstehst du diese Logik?
6. Prompt zum Grundverständnis > Analoges Servo
Ein analoges Servo ist so angeschlossen:
PWM = L2
Verstehst du diese Logik?
Beispiel 1 > Lauflicht mit Neopixel STICK
Programmiere ein Lauflicht, bei dem ein Pixel auf dem STICK hin und her läuft. Ändere bei jedem Durchgang die Farbe, entlang dem Farbkreis um 10°.
Beispiel 2 > X mit Neopixel MATRIX
Programmiere die MATRIX so, dass ein Kreuz (ein X) in orange leuchtet.
Beispiel 3 > Fahrroboter mit Tast-Sensor
Programmiere einen Fahrroboter, der folgende Eigenschaften hat:
An den Ausgängen M1 und M2 ist je ein Gleichstrommotor angeschlossen.
An den Sensoreingängen S1 und S2 ist je ein digitaler Schalter angeschlossen, der als Tastsensor funktioniert. Sobald das Fahrzeug ein Hindernis berührt schaltet der Sensor auf LOW (Die Sensoren wirken umgekehrt wegen der Current Sinking Elektronik)
S1 und M1 sind in Fahrtrichtung links
S2 und M2 sind in Fahrtrichtung rechts
Schreibe einen Code für eine einfache Hinderniserkennung. Wenn die Tastsensoren ein Hindernis berühren, soll der Roboter kurz rückwärts fahren und dann auf die Gegenseite abdrehen.
Beispiel 4 > Wetterstation mit Sensor BME280
Am I2C Anschluss des Arduinos ist ein BME280 Wettersensor angeschlossen, der die Luftfeuchtigkeit messen kann. Schreibe ein Programm, das einen Neopixel Stick mit 8 Pixeln folgendermassen steuert:
Die Feuchte wird mit einem Farbverlauf, entlang dem Farbkreis angezeigt: 10%= rot, 30%=orange, 50%= grün, 70%=blau, 90%= purpur
Schreibe, welche Libraries ich in der Arduino IDE installieren soll.
Schreibe, wie ich erkennen kann, ob ich einen BME280 oder einen BMP280 Sensor verwende, denn dies ist auf dem Sensor selber nicht ersichtlich.