![]()
| Raspberry Pi: GPIOs mit Bash steuern
Die SchaltungFolgend ein kleines Beispiel mit 3 Tastern und zwei Leuchtdioden. Nachdem die Eingänge und Ausgänge getestet wurden, wird ein einfaches Script, an dem die Taster und Leuchtdioden teilnehmen, erstellt. Mit dem ersten Taster wird die erste Leuchtdiode eingeschaltet. Mit dem zweiten Taster die zweite. Beim Betätigen des dritten Tasters wird ein Blinkmodus aktiviert und die beiden Leuchtdioden werden dann abwechselnd ein- und ausgeschaltet. Der SchaltplanZunächst skizzieren wir einen Schaltplan. Es werden insgesamt fünf Pins des Raspberry Pi in Anspruch genommen. Für die Aufgabe kann jeder beliebige Pin gewählt werden. Drei Pins, an die die Taster S1 bis S3 angeschlossen werden, werden dann anschließend als Eingänge definiert. Mit dem vierten und fünften Pin, die als Ausgänge definiert werden, werden die Leuchtdioden angesteuert. Mit drei Pulldown Widerständen R1 bis R3 stellen wir sicher, dass die Eingänge des Raspberry Pi bei geöffneten Tastern den Wert Low haben. ![]() Schaltplan Beispiel für den Aufbau einer Testschaltung: ![]() Testschaltung Bevor man sich dem Script widmet, sollen die einzelnen Verbindungen überprüft werden. Zu beachten ist, dass manche Funktionen
nur dem Root-Nutzer zugänglich sind (Bei Bedarf „sudo“ voranstellen). Mit einigen Kommandos in dem LXTerminal wird die Leuchtdiode LD1
ein- und ausgeschaltet:
Das ScriptNachdem alle Anschlüsse geprüft wurden, kann ein Script geschrieben werden. Bash ist eine eigenständige
Programmierungssprache, hat viele Anhänger und wird oft eingesetzt. Das Programm (Script) wird in einer Textdatei geschrieben, die
anschließend ausführbar gemacht werden muss. Mit
# ---------------------------------------------------------- # Raspberry Pi, GPIOs mit Bash steuern # ----------------------------------------------------------
# Ausführung mit Bash
#!/bin/bash
# GPIO-Schnittstelle generieren
sudo echo 27 > /sys/class/gpio/export
sudo echo out > /sys/class/gpio/gpio27/direction
sudo echo 22 > /sys/class/gpio/export
sudo echo out > /sys/class/gpio/gpio22/direction
sudo echo 16 > /sys/class/gpio/export
sudo echo in > /sys/class/gpio/gpio16/direction
sudo echo 20 > /sys/class/gpio/export
sudo echo in > /sys/class/gpio/gpio20/direction
sudo echo 21 > /sys/class/gpio/export
sudo echo in > /sys/class/gpio/gpio21/direction
Ende=0
# HAUPTPROGRAMM
while [ $Ende -eq "0" ]; do
# Sequenz Leuchtdiode 1 EIN
Taster1=$(cat /sys/class/gpio/gpio16/value)
if [ $Taster1 -eq "1" ]; then
echo 1 > /sys/class/gpio/gpio27/value
echo 0 > /sys/class/gpio/gpio22/value
fi
# Sequenz Leuchtdiode 2 Ein
Taster2=$(cat /sys/class/gpio/gpio20/value)
if [ $Taster2 -eq "1" ]; then
echo 1 > /sys/class/gpio/gpio22/value
echo 0 > /sys/class/gpio/gpio27/value
fi
# Sequenz Blinker
Taster3=$(cat /sys/class/gpio/gpio21/value)
if [ $Taster3 -eq "1" ]; then
Blinker=1
for i in {1..20}; do
echo 1 > /sys/class/gpio/gpio27/value
echo 0 > /sys/class/gpio/gpio22/value
sleep 0.3
echo 0 > /sys/class/gpio/gpio27/value
echo 1 > /sys/class/gpio/gpio22/value
sleep 0.3
done
Ende=1
fi
done
# GPIO-Schnittstelle wieder deaktivieren
for j in 16 20 21 22 27; do
sudo echo $j > /sys/class/gpio/unexport
done
# ----------------------------------------------------------
Nachdem das Listing erstellt wurde wird die Datei mit Strg+O abgespeichert. Mit STRG+X kann sie dann verlassen werden. Das
Programm (Script) wird im LXTerminal, nachdem es ausführbar gemacht wurde, gestartet:
|
Google-Suche auf MEINE-SCHALTUNG.de : |