Pinfunktionen im Überblick

Jeder GPIO-Pin ("General Purpose Input Output") des Calliope kann grundsätzlich zwei Rollen einnehmen: Er kann als Ausgang ein angeschlossenes Bauteil (einen Aktor) ansteuern oder als Eingang ein angeschlossenes Bauteil (einen Sensor) auslesen. Dabei wird jeweils zwischen einer digitalen Variante mit nur zwei Zuständen (an/aus bzw. 0/1) und einer analogen Variante mit vielen Zwischenwerten (z. B. eine Zahl zwischen 0 und 1023) unterschieden. Insgesamt ergeben sich daraus vier Funktionen, die auf dieser Seite nacheinander vorgestellt werden.

Für die folgenden Beispiele wird dabei stets der Pin P0 gewählt. Aber auch die weiteren Pins verfügen in der Regel über die gleichen Funktionen. Zu beachten ist, dass einige Pins doppelt genutzt werden und daher vielleicht schon an anderer Stelle belegt sind. Eine Übersicht über alle Pins und deren Funktionen findet sich in der Dokumentation zu den Pins des Calliope v3.

Digitaler Aktor: LED ein- und ausschalten

Im folgenden Schaltplan ist eine LED über einen Vorwiderstand mit dem GPIO-Pin P0 verbunden. Der Pin wird als digitaler Aktor genutzt: Er gibt entweder die Spannung 3,3V oder die Spannung 0V aus.

Schaltplan LED
Schaltplan: Die LED ist über einen Vorwiderstand mit dem Pin P0 verbunden.

Zunächst muss der Pin in der Konfiguration als digitaler Ausgang festgelegt werden:

pinfunktionen-digital-write-orl-konf
Konfiguration: Der Pin P0 wird als digitaler Ausgang eingestellt.

Anschließend kann der Pin im Programm geschaltet werden:

pinfunktionen-digital-write-orl
Im Open Roberta Lab schaltet der Block <schreibe digital auf pin> die LED ein und aus.

# Imports go at the top
from calliopemini import *

# Code in a 'while True:' loop repeats forever
while True:
    pin0.write_digital(1)  # schalte Spannung 3,3V ein
    sleep(1000)            # warte 1000 Millisekunden
    pin0.write_digital(0)  # schalte Spannung aus (-&gt; 0V)
    sleep(1000)            # warte 1000 Millisekunden

LED als digitaler Aktor

  1. Beschreibe, was in dem Video zu beobachten ist, und erkläre dies anhand des Programms.
  2. Begründe, warum der GPIO-Pin in diesem Fall als digitaler Aktor genutzt wurde.

Analoger Aktor: LED dimmen

Im folgenden Schaltplan ist eine LED über einen Vorwiderstand mit dem GPIO-Pin P0 verbunden. Der Pin wird hier als analoger Aktor genutzt: Dabei wird sehr schnell zwischen 3,3V und 0V hin und her geschaltet. Der angegebene analoge Wert gibt an, wie lang die Phase mit 3,3V sein soll: Je größer die Zahl ist, desto länger ist die Phase mit 3,3V gegenüber 0V.

  • Der Analogwert 0 bedeutet, dass die ganze Zeit 0V geschaltet wird.
  • Der Analogwert 512 bedeutet, dass der Pin in der Hälfte der Zeit auf 3,3V und der anderen Hälfte auf 0V ist.
  • Der Analogwert 1023 bedeutet, dass die ganze Zeit 3,3V geschaltet wird.

Schaltplan LED dimmen
Schaltplan: Die LED ist über einen Vorwiderstand mit dem Pin P0 verbunden.

Zunächst muss der Pin in der Konfiguration als analoger Ausgang festgelegt werden:

pinfunktionen-analog-write-orl-konf
Konfiguration: Der Pin P1 wird als analoger Ausgang eingestellt.

Anschließend kann der Pin im Programm mit analogen Werten angesteuert werden:

pinfunktionen-analog-write-orl
Im Open Roberta Lab schreibt der Block <schreibe analog auf pin> einen analogen Wert auf den Pin.

# Imports go at the top
from calliopemini import *

# Code in a 'while True:' loop repeats forever
while True:
    pin0.write_analog(1023)  # schalte Spannung 3,3V dauerhaft ein
    sleep(1000)              # warte 1000 Millisekunden
    pin0.write_analog(768)   # schalte Spannung zu 3/4 ein
    sleep(1000)
    pin0.write_analog(512)   # schalte Spannung zur Hälfte ein
    sleep(1000)
    pin0.write_analog(256)   # schalte Spannung zu 1/4 ein
    sleep(1000)
    pin0.write_analog(0)     # schalte Spannung aus
    sleep(1000)

Analoger Aktor: LED dimmen

  1. Beschreibe, was in dem Video zu beobachten ist, und erkläre dies anhand des Programms.
  2. Begründe, warum der GPIO-Pin in diesem Fall als analoger Aktor genutzt wurde.

Digitaler Sensor: Taster auslesen

Im folgenden Schaltplan ist ein Taster mit dem GPIO-Pin P0 verbunden. Der Pin wird als digitaler Sensor genutzt.

Schaltplan Taster
Schaltplan: Der Taster ist mit dem Pin P0 verbunden.

Zunächst muss der Pin in der Konfiguration als digitaler Eingang festgelegt werden:

pinfunktionen-digital-read-orl-konf
Konfiguration: Der Pin P0 wird als digitaler Eingang eingestellt.

Anschließend kann der Pin im Programm ausgelesen werden:

pinfunktionen-digital-read-orl
Im Open Roberta Lab liest der Block <lese digital von pin> den Zustand des Tasters ein.

# Imports go at the top
from calliopemini import *
import neopixel

np = neopixel.NeoPixel(pin_RGB, 3)

while True:
    if pin0.read_digital() == 1:
        np.fill((255, 255,0))      # grün
        np.show()
    else:
        np.fill((255, 0, 0))       # rot
        np.show()

Digitaler Sensor: Taster auslesen

  1. Beschreibe, was in dem Video zu beobachten ist, und erkläre dies anhand des Programms.
  2. Begründe, warum der GPIO-Pin in diesem Fall als digitaler Sensor genutzt wurde.

Analoger Sensor: Potentiometer auslesen

Im folgenden Schaltplan ist ein Potentiometer mit dem GPIO-Pin P0 verbunden. Der Pin wird als analoger Sensor genutzt: Er liest nicht nur zwei Zustände, sondern viele Zwischenwerte von 0 bis 1023 ein, die die Stellung des Drehreglers widerspiegeln.

Schaltplan Potentiometer
Schaltplan: Das Potentiometer ist mit dem Pin P0 verbunden.

Zunächst muss der Pin in der Konfiguration als analoger Eingang festgelegt werden:

pinfunktionen-analog-read-orl-konf
Konfiguration: Der Pin P1 wird als analoger Eingang eingestellt.

Anschließend kann der Pin im Programm ausgelesen werden:

pinfunktionen-analog-read-orl
Im Open Roberta Lab liest der Block <lese analog von pin> den Wert des Potentiometers ein.

# Imports go at the top
from calliopemini import *
import neopixel

np = neopixel.NeoPixel(pin_RGB, 3)

while True:
    np.fill((255, 0, 0))       # rot
    np.show()
    sleep(pin0.read_analog())  # Leuchtzeit in ms so groß wie der Analogwert von P0
    np.clear()
    sleep(500)

Analoger Sensor: Potentiometer auslesen

  1. Beschreibe, was in dem Video zu beobachten ist, und erkläre dies anhand des Programms.
  2. Begründe, warum der GPIO-Pin in diesem Fall als analoger Sensor genutzt wurde.
Zusammenfassung: Die vier Funktionen eines GPIO-Pins

Die vier Funktionen eines GPIO-Pins

Vier Funktionen am Calliope Sensoren geben ein – Aktoren geben aus. Signale sind digital (Stufen) oder analog (kontinuierlich). Digital (Stufen) Analog (kontinuierlich) Sensor (Eingabe) Aktor (Ausgabe) Calliope Digitaler Sensor Calliope Analoger Sensor Calliope Digitaler Aktor Calliope Analoger Aktor nur zwei Zustände: 1 / 0 jeder Zwischenwert möglich aus – an – aus – an hell bis dunkel z.B. Taste A, Berührungspin z.B. Licht- und Temperatursensor z.B. einzelne LED-Punkte an / aus z.B. Lautsprecher, LED-Helligkeit (PWM)

Ein GPIO-Pin des Calliope kann vier verschiedene Rollen einnehmen:

  1. Digitaler Aktor (Ausgang): Der Pin gibt nur zwei Zustände aus (aus/an bzw. 0/1 bzw. 0V/3,3V). Damit lassen sich Bauteile wie LEDs, Relais oder Summer ein- und ausschalten.
  2. Analoger Aktor (Ausgang): Der Pin gibt Zwischenwerte aus (0 bis 1023). Damit lassen sich Bauteile wie LEDs stufenlos dimmen oder Motoren in ihrer Geschwindigkeit regeln. Im Hintergrund läuft eine sogenannte Pulsweitenmodulation, die den Pin sehr schnell an- und ausschaltet. Das Verhältnis von an/3,3V zu aus/0V wird über den Analogwert eingestellt.
  3. Digitaler Sensor (Eingang): Der Pin liest nur zwei Zustände ein. Damit lassen sich z. B. Taster abfragen, die entweder gedrückt oder nicht gedrückt sind.
  4. Analoger Sensor (Eingang): Der Pin liest Zwischenwerte ein (0 bis 1023). Damit lassen sich Bauteile wie Potentiometer oder Temperatursensoren auslesen, die kontinuierliche Messwerte liefern.

Die Entscheidung, welche Funktion ein Pin einnimmt, hängt vom angeschlossenen Bauteil ab: Ein Bauteil, das Energie benötigt, um etwas zu tun, ist ein Aktor, und wird an einen Ausgang angeschlossen. Ein Bauteil, das Informationen über die Umgebung liefert, ist ein Sensor und wird an einen Eingang angeschlossen. Reicht dabei die Unterscheidung in zwei Zuständen aus, genügt die digitale Variante; werden Zwischenwerte benötigt, muss die analoge Variante verwendet werden.