KI Jungle

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

Kopiere diesen Prompt in den KI-Textgenerator
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

Kopiere diesen Prompt in den KI-Textgenerator
Es soll ein Neopixel STICK mit 8 Pixeln in einer Reihe programmiert werden.

Verstehst du diese Logik?

3. Prompt zum Grundverständnis > Neopixel MATRIX

Kopiere diesen Prompt in den KI-Textgenerator
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

Kopiere diesen Prompt in den KI-Textgenerator
Ein Ultraschallsensor ist so angeschlossen:
Trigger = L3
Echo: = S3

Verstehst du diese Logik?

5. Prompt zum Grundverständnis > Soundsensor (Mikrofon)

Kopiere diesen Prompt in den KI-Textgenerator
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

Kopiere diesen Prompt in den KI-Textgenerator
Ein analoges Servo ist so angeschlossen:
PWM = L2

Verstehst du diese Logik?

Beispiel 1 > Lauflicht mit Neopixel STICK

Kopiere diesen Prompt in den KI-Textgenerator
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

Kopiere diesen Prompt in den KI-Textgenerator
Programmiere die MATRIX so, dass ein Kreuz (ein X) in orange leuchtet.
Kopiere diesen Prompt in den KI-Textgenerator
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.
Kopiere diesen Prompt in den KI-Textgenerator
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.