Raspberry Pi: Unterschied zwischen den Versionen

Aus m-wiki
Zur Navigation springen Zur Suche springen
Zeile 320: Zeile 320:
| 8 || VCC || Eingangsspannung (4.5-15V)
| 8 || VCC || Eingangsspannung (4.5-15V)
|}
|}
[[Datei:Blinkschaltung mit 555.jpg|200px|thumb|left|Blinkschaltung aus dem Buch ]]


== Sensoren ==
== Sensoren ==

Version vom 5. August 2021, 15:10 Uhr

Einführung

Der RasPi ist ein Mini-Computer, der meist unter Linux betrieben wird. Er kann in diversen Sprachen programmiert werden, wobei vielfach c oder Python verwendet wird. Er besitzt eine Steckleiste ähnlich dem Userport des Commodore 64. Diese Steckleiste wird GPIO genannt und bedeutet General Purpose Input Output. Dies heisst, dass an die Anschlüsse für eigene Bedürfnisse anpassen kann. Einige der Anschlüsse kann man auch verwenden, um spezifische Protokolle wie UART (seriell), oder SPI zu benutzen.

Auch wenn es Bücher gibt, welche eine Einspeisung direkt über die GPIO-Pins empfehlen (etwa für den Batteriebetrieb), wird dringend davon abgeraten, da es dann keinen Spannungsschutz mehr gibt. Stattdessen sollte immer über den vorgesehenen Micro-USB eingespiesen werden, auch wenn man ein Batterie-Pack verwendet.

Betriebsystem

Es gibt spezifische Betriebsysteme, welche explizit auf die Bedürfnisse des RaspPi zugeschnitten sind wie kleiner Speicherverbrauch und Vorkompilierung der verwendeten Kernelmodule. Entsprechend eine Liste der Distributionen, wobei die Liste länger ist: RasPi Betriebsysteme im Kurzportrait

Betriebssystem Eigenschaften Erscheinungsjahr SD-Karte
Raspian
  • Basiert auf Debian
  • Grosse Community und Wikis
2012 4GB (8GB wenn GUI)
Pidora
  • Basiert auf Fedora
  • Unterstützt den Headless-Modus
  • Grosse Community und Wikis
2014 2GB
Windows 10 IoT Core
  • Windows 10 IoT Core stützt sich auf die hauseigene „Universal Windows Platform“-API (UWP) und wird über die Community-Edition von Microsoft Visual Studio bedient
  • Bitlocker-Verschlüsselung und "Secure Boot"-Funktionen
  • Braucht ein aktuelles Windows 10 zur Entwicklung
  • Unterstützung von Pulsweitenmodulation (PWM) für Elektromotoren
  • Community-Forum mit eigenem Raspberry-Pi-Bereich
2015 ?
Ubuntu Core
  • minimalistische Abwandlung der Server-Edition
  • jedes Softwarepaket ist eine einzelne Einheit ("Snap") -> soll mehr Sicherheit bringen
  • Hilfe entweder direkt bei Canonical oder in den Community-Foren
  • Braucht einen Ubuntu SSO-Account
2014 ?
Risc OS
  • ausgerichtet auf ARM (seit den 1980er Jahren)
  • setzt stark auf "drag'n'drop", so werden Dateien geöffnet, indem man diese ins Programm zieht
2014? 2GB
Arch Linux ARM
  • ausgerichtet auf Profis, daher eher aufwendig
  • Rolling Release und daher vielfach kurze Testphasen
2015? 2GB
FreeBSD
  • Für den RaspPi angepasste Version von FreeBSD
  • sicher und schnell
  • grosse Community
2015? ?

GPIO verwenden

Je nach Revision und Gneration sind die Pins etwas anders. Daher unbedingt schauen, welche Version eingesetzt wird. Die Belegung ist zwar gleich, doch die Pins haben andere Nummern, so dass man dann evtl. den "falschen" Pin anspricht. Entsprechend hier die Revision B der neueren Boards.

Pinnummer Funktion - Funktion Pinnummer
- 3.3V o o 5V -
2 SDA o o 5V -
3 SCL o o GND -
4 I/O o o TX 14
- GND o o RX 15
17 I/O o o I/O 18
27 I/O o o GND -
22 I/O o o I/O 23
- 3.3V o o I/O 24
10 MOSI o o GND -
9 MISO o o I/O 25
11 SCKL o o I/O 8
- 3.3V o o I/O 7

Bedeutung der Bezeichnungen

  • 3.3V -> stellt 3.3V mit max. 50mA zur Verfügung
  • 5V -> stellt 5V mit max. 250mA zur Verfügung -> Darf nie an einen GPIO-Pin gelangen, da dieser sonst sofort zerstört wird!
  • GND -> Ground-Pins
  • I/O -> Reine Input/Output-Pins, welche nicht für andere Zwecke vorbelegt sind. Im Gegensatz zum Arduino sind keine analogen Ein-/Ausgänge vorhanden. Sollten nicht mehr als 3mA-Strom ziehen. Es geht zwar mehr (max. 16 mA), doch auf Kosten der Lebensdauer des Chips.
  • TX -> Send (transmit) der seriellen Schnittstelle (UART)
  • RX -> Empfang (receive) der seriellen Schnittstelle (UART)
  • SDA -> Daten? der IC-Schnittstelle
  • SCL -> Clock der IC-Schnittstelle
  • MOSI -> Master Out der SPI-Schnittstelle (Daten vom Server zu den Slaves) (Die Kabel werden nicht gekreuzt)
  • MISO ->Master In der SPI-Schnittstelle (Daten von den Slaves zum Server) (Die Kabel werden nicht gekreuzt)
  • SCKL -> Clock der SPI-Schnittstelle

Bei [Doktor Monk] gibt es eine Schablone zum Ausdrucken der Pinbelegung, damit man diese direkt auf dem RasPi sieht. Möchte man aber nicht immer Kabel manuell stecken, gibt es eine Adapterplatte mit Flachbandkabel; den Pi-Cobbler, den es in diversen Elektronik-Geschäften gibt. Etwas vergleichen, sonst kauft man ihn überteuert.

Spanungen wandeln (5V -> 3.3V)

Wenn man den RasPi mit anderen Geräten koppelt, kann es sein, dass diese mit 5V arbeiten. In diesem Fall muss die Spannung heruntergesetzt werden, damit der RasPi nicht beschädigt wird. Dies geschieht entweder mit einem Spannungsteiler oder mit einem Pegelwandler-Modul. Verwendet man Widerstände, so sollten diese im Verhältnis 1:2 sein, damit die Spannung den geforderten 3.3V entspricht. Dies erreicht man etwa mit einem 270 und einem 470 Widerstand. Da dies aber verhältnismässig viel Strom braucht, wäre es idealer, höhere Werte wie 2.7k und 4.7k zu verwenden. Falls es von der Signalstabilität her reicht, ginge entsprechend auch ein 27k und ein 47k Widerstand.

Ein Wandlermodul hingegen ist intern schon auf die gewünschten Potentiale aufgebaut und muss nur noch mit den gewünschten Spannungen angeschlossen werden. Die Wandler gibt es etwa mit 4 oder 8 Kanälen. Kostengünstiger ist es natürlich, wenn man nur wenige Potentiale wandeln muss, dies über Widerstände zu lösen, doch bei einer grösseren Menge lohnt sich der Einsatz von BOB-11978, BOB-12009 oder Adafruit 395.

Module freischalten

Damit das entsprechende Modul vom Kernel geladen wird, muss man es folgendermassen einrichten:

  1. Kontrolle, dass es nicht in der /etc/modprobe.d/raspi-blacklist.conf aktiv ist -> einfach mit einem # am Anfang auskommentieren
  2. Das Modul in /etc/modules hinzufügen
  3. Den RaspPi neu starten

IC

IC wird für langsame Verbindungen (Standard 100kHz, max 5MHz) verwendet, benötigt aber nur 2 Leitungen. Die Verbindung wird immer vom Master eröffnet und dient daher nur zum Abfragen. Vorteilhaft für Peripheriegeräte, die nicht schnell zu sein brauchen wie Lautstärkeregler, Analog-Digital- oder Digital-Analog-Wandler mit niedriger Abtastrate, Echtzeituhren, kleine, nichtflüchtige Speicher oder bidirektionale Schalter und Multiplexer. Während des Betriebes können Chips zum Bus hinzugefügt oder entfernt werden (Hot-Plugging). Das Protokoll ist aber sehr anfällig auf Übersprechen, Rauschen oder EMV. Entsprechend kann es nur auf kurzen Distanzen eingesetzt werden und wenn man nicht Buchsen und Stecker verwenden muss, die das Signal stören können. Das Protokoll beinhaltet aber ein Kontroll-Bit, mit dem der Slave angeben kann, dass er die Daten verstanden hat.

Das freizuschaltende Modul heisst i2c-bcm2708. Zusätzlich sollte auch i2c-dev geladen werden. Für den Zugriff sollte man auch die i2c-tools installieren:

$ sudo apt-get install i2c-tools

Beim Verwenden darauf achten, wie viel Strom die Geräte brauchen und diese sonst extern einspeisen. Hat man ein Gerät verbunden, kann man nun seine Adresse herausfinden. Jedes angeschlossene Gerät braucht eine eindeutige Adresse:

 $ sudo i2cdetect -y 1

Bei ganz alten Boards muss der Bus mit 0 anstatt 1 angegeben werden. Das Tool listet die Adressen (hex) entsprechend auf. Will man mehrere Geräte anschliessen, sollte man immer eines nach dem anderen anschliessen und die Adresse dann entsprechend eindeutig gestalten.

SPI

SPI (Serial Peripheral Interface) verwendet (mindestens) 3 (meistens 4 oder mehr) Leitungen und verwendet kein Kontroll-Bit. Das Protokoll ist sehr flexibel. So kann je nach Ausführung die Chipselect-Leitung pro Chip oder gemeinsam geführt werden. Unterschiedliche Taktfrequenzen bis in den MHz-Bereich sind zulässig. Da die Spezifikation für die Taktflanke, die Wortlänge oder die Übertragung (MSB oder LSB zuerst) nicht genau festgelegt sind, gibt es diverse Einstellungsmöglichkeiten. Trotzdem kann es sein, dass manche Kombinationen inkompatibel sind. Man sollte sich daher vor dem Kauf die Spezifiationen und Einstellungsmöglichkeiten der Chips anschauen. Wenn man mit nur 4 Leitungen auskommen möchte, wird Daisy-Chain verwendet, wie es im Artikel So funktioniert SPI erklärt wird. Da dabei die Daten von Slave zu Slave weitergereicht werden, sind bei längeren Ketten Bitlänge*Slave-Position Taktzyklen zur Verarbeitung notwendig. Bei 5 Slaves in einem 8-Bit-System wären dies für den letzten Slave 40 Taktzyklen. Dieses Prinzip der Weiterleitung beherrschen aber nicht alles Slaves. Sonst sind durch die hohe Taktfrequenz auch grössere Ketten möglich; auch für Geräte mit hohem Durchsatz/Abtastfrequenz.

Das freizuschaltende Modul heisst spi-bcm2708. Zusätzlich sollte auch spidev geladen werden.

Für den Zugriff mit Python auf SPI muss man je nachdem noch ein Git-Repository einbinden, auch wenn dies wohl meist unterdessen schon hinzugefügt wurde. Falls nicht, geht dies auf nachfolgende Art:

$ sudo apt-get install git
$ sudo apt-get install python-dev
$ git clone git://github.com/doceme/py-spidev
$ cd py-spidev/
$ sudo python setup.py install

Nach einem Neustart kann SPI über Python angesprochen werden.

PiFace Digital Interface Board

Das PiFace erweitert den RasPi um zusätzliche Ein- und Ausgänge (8 Outputs, wovon 2 mit Relais, 8 Inputs, wovon 4 mit Taster). Es arbeitet über SPI, welches entsprechend freigeschaltet werden muss.

$ wget http://pi.cs.man.ac.uk/download/install.txt
$ bash install.txt
$ sudo reboot

Mit dem Treiber wird auch ein Emulator ausgeliefert, mit welchem man nicht nur den Zustand sehen, sondern auch Outputs schalten kann.

Die Programmierung mit Python geschieht etwa folgendermassen zum Ein- und Ausschalten des ersten Outputs:

$ python
>>> import piface.pfio as pfio
>>> pfio.init()
>>> pfio.digital_write(0,1)
>>> pfio.digital_write(0,0)

Möchte man den Taster am ersten Eingang abfragen, wird digital_read verwendet:

$ python
>>> import piface.pfio as pfio
>>> import time
>>> pfio.init()
>>> while True:
...    print(pfio.digital_read(0))
...    time.sleep(1)

Gertboard

Das [Gertboard] ist eine Erweiterungsplatine, welche neben gepufferten digitalen I/O unter anderem A/D- (10 Bit) und D/A-Wandler (8, 10 oder 12 Bit) bietet und auch eine Motorsteuerung (Maximum 18V and 2A) enthält. Zusätzlich befindet sich noch eine ATmega328ATmega328 MCU (gleicher Chip wie auf dem Arduino Uno) auf dem Board, mit der man unabhängige Arduino Programme laufen lassen kann. Die gepufferten Eingänge schützen unter anderem die I/O des RasPi. Die Ausgänge können übrigens mit bis zu 50V mit 0.5A betrieben werden.

Für das Gertbourd gibt es Beispielprogramme, die man folgendermassen installiert:

$ wget http://raspi.tv/download/GB_Python.zip
$ unzip GB_Python.zip
$ cd GB_Python

Die Programme teilen beim Start mit, welche Jumper wie gesteckt werden müssen, damit die notwendigen Bereiche auf dem Board korrekt verbunden sind:

$ sudo python buttons-rg.py

RaspiRobot-Board

Das Board liefert Ausgänge mit denen man entweder einen Schrittmotor oder 2 Gleichstrommotoren antreiben kann. Dazu gibt es zwei Low-Power-Ausgänge und zwei digitale Eingänge. Das Board kann über die Standard-Bibliotheken bedient werden:

$ sudo apt-get install python-rpi.gpio
$ sudo apt-get install python-serial
$ wget https://github.com/simonmonk/raspirobotboard/archive/master.zip
$ unzip master.zip
$ cd raspirobotboard-master
$ sudo python setup.pi install

Nun ein Beispiel für einen Zugriff auf das Board:

$ sudo python
>>> from raspirobotboard import *
>>> rr = RaspiRobot()
>>> rr.set_led1(1) # Schaltet Led 1 ein
>>> rr.set_led1(0)
>>> rr.set_oc1(1)
>>> rr.set_oc1(0) # Schaltet Ausgang 1 aus
>>> print(rr.sw1_closed()) # Liest den Status des Drückers 1 ein.

Die Verwendung der Motoren (forward, reverse, left, right, stop) wird unter anderem auf der Projektseite von [RaspiRobot] beschrieben.

Prototyping-Boards (Humble Pi / Pi Plate / Paddle Board)

Diese Boards sind reine Entwicklungsplatten ohne Elektronik und dienen dazu, Schaltungen zu entwickeln. Sie besitzen einen Stecker für die GPIO und Lötpins, damit man eigene Schaltungen entwerfen kann. Fürs Prototyping kann natürlich auch ein Steckboard verwendet werden.

Humble Pi

  • Besitzt Aussparungen für die grossen Stecker des RasPi.
  • besondere Bereiche für Spannungsregler und Transistoren
  • Hersteller: [Ciseco]

Pi Plate

  • keine Aussparungen sondern höhere Sockel
  • Bereich für SDM und Schraubklemme
  • Schraubklemmen, welche direkt mit den GPIOs verbunden sind -> Alternative ist das Paddle-Board zum Klemmen der Drähte.

Paddle Board

  • Wird über ein Flachbandkabel angeschlossen
  • Alle GPIO-Verbindungen können einfach mittels Draht eingeführt werden, so dass keine Female-Adapter notwendig sind.
  • Mehr Platz als direkt auf dem Board
  • Alternative ist das Pi Plate, bei dem auch Litzen verwendet werden können, weil die Anschlüsse geschraubt werden.

Wichtige Bibliotheken

Damit man auf die Hardware zugreifen kann, muss je nach Sprache und Anwendungsfall die entsprechende Bibliothek installiert werden.

RPi.GPIO

Diese Bibliothek ist bei den meisten Distributionen schon vorinstalliert. Sollte dies nicht der Fall sein, muss diese mit dem Paketmanager installiert werden. Allgemeine Infos zum Umgang mit Linux im Artikel Allgemeine Daten zu Linux, Tipps und Tricks und Systemeinstellungen.

Ist apt im Einsatz, kann man die Bibliothek folgendermassen installieren:

$ sudo apt-get install python-dev
$ sudo apt-get install python-rpi.gpio

WiringPi

WiringPi ist eine Bibliothek, welche unter c / c++ verwendet wird, auf die man mit den entsprechenden Wrappern auch von anderen Sprachen aus zugreifen kann wie etwa über Python. Mit gpio kann direkt von der Shell aus auf die Pins zugegriffen werden und dies ermöglicht auch den Zugriff aus Shell-Skripten heraus.
Wie man der Entwickler-Webseite entnehmen kann, wird die Bibliothek nicht mehr weiter entwickelt und ist auch nicht für Anfänger gedacht, sondern für Leute, die sich auskennen.

$ sudo apt-get install wiringpi

Test der Installation:

$ gpio -v
$ gpio readall

PySerial

Notwendig, um die serielle Schnittstelle mit Python zu verwenden.

$ suto apt-get install python-serial

Nicht vergessen, die serielle Konsole zu deaktivieren.

Serielle Schnittstelle

Der RasPi ist normalerweise so konfiguriert, dass er die Ein-/Ausgabe der Konsole parallel auch auf die Pins der seriellen Schnittstelle leitet. Dies ist zwar nützlich bei einer Analyse ohne Monitor, doch störend, wenn man mit einem externen Gerät "ungestört" kommunizieren möchte. Entsprechend muss man diese Weiterleitung in /etc/inittab auskommentieren.

$ sudo nano /etc/inittab
...
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

Speichern mit Ctrl-X gefolgt von Y. Danach den RasPi neu starten. Zum Einschalten muss die Zeile entsprechend wieder entkommentiert werden.

Um die serielle Schnittstelle über Python zu erreichen, wird die entsprechende Bibliothek installiert. Anschliessend kann man noch [minicom] installieren, um die Verbindung zu testen.

$ sudo apt-get install minicom
$ minicom -b 9600 -o -D /dev/ttyAMA0

Die Baudrate muss natürlich mit den Angaben der Gegenstelle übereinstimmen. Im minicom kann die Hilfe mit Ctrl-A und danach Z aufgerufen werden. Mit der Taste E wird das lokale Echo eingeschaltet, so dass man die eigenen Eingaben auch sieht.

externe Computerchips (ICs)

Externe Chips können entweder über die obigen Schnittstellen angeschlossen werden oder sie arbeiten unabhängig und brauchen nur direkt angeschlossene Steuerleitungen, um die gewünschten Funktionen auszuführen. Nachfolgend einige ICs, die in Verwendung mit dem RasPi nützlich sind.
Damit man weiss, welche PINs sich wo befinden, haben elle ICs entweder eine Einkerbung auf einer Seite oder einen Punkt über PIN 1. Normalerweise werden die Pins im Gegenuhrzeigersinn nummeriert, doch dies steht im entsprechenden Datenblatt.

Für die Anbindung braucht es meist noch elektronische Bauteile wie Transistoren, Widerstände oder Kondensatoren. Diese Bauteile werden auf der Seite Elektronik beschrieben.

Timerbaustein 555

Der CA555E, NE555 oder ähnliche Timer-Bausteine bieten die Möglichkeit, Ausgänge in definierten Zeitabständen zu schalten, eine Weile beibehalten oder nach Vorgabe umzuschalten.

Pin Name Bedeutung
1 GND Masse
2 TRIG Fällt der Pin unter 3V, so wird Pin 3 auf die Eingangsspannung gesetzt.
3 OUT 0V oder VCC. Je nach Zustand des IC.
4 RESET Wenn auf High, wird das Zeitintervall nicht zurückgesetzt.
5 CTRL ?
6 THRES Steigt die Sapnnung am Pin über 2/3 der Eingangsspannung, wird Pin3 auf 0V gesetzt.
7 Disc ?
8 VCC Eingangsspannung (4.5-15V)
Blinkschaltung aus dem Buch

Sensoren

Ein Sensor liefert Daten. Dies kann entweder digital erfolgen oder analog. Da der Raspi keine analogen Eingänge hat, müssen diese über einen A/D-Wandler eingelesen werden. Wenn die Werte nicht exakt sein müssen, können die Werte auch digital mittels eines Kondensators und der resultierenden Sprungantwort berechnet werden.

Beschleunigung

Bewegung

CO2

Drehung

Druck (Kraft)

Entfernung

mit Infrarot

mit Schall

GPS

Helligkeit (Licht)

Hier kann ein Fotowiderstand verwendet werden. Bei den meisten verringert sich der Widerstand mit zunehmender Lichtmenge.

Kamera

Magnetismus (Hall-Sensor)

Dieser Sensor erkennt, wenn ein Magnet in seine Nähe kommt. Er schaltet dann den Ausgang um. Somit hat man einen digitalen Schalter, der etwa für eine Geschwindigkeitsmessung eingesetzt werden kann (Umdrehungen/Minute) oder als Einbruchsalarm (Fenster öffnet sich).

Bauteilbezeichnung: NJK-5002 A oder C. Der Unterschied besteht darin, dass schwarz bei A auf Plus und beim C auf Minus schaltet, wenn ein Magnet in die Nähe kommt. Sonst gibt es noch den braunen Anschluss für Plus und blau für Minus. Dieser Sensor besitzt eine eingebaute LED, welche dessen Funktion anzeigt.

Neigung

Potentiometer

Dieser Drehwiderstand besitzt meist 3 Pins, wobei sich Links/Mitte und Mitte/Rechts ergänzend verhalten und Links/Rechts immer den maximalen Widerstand liefern.

Schalter

Der Schalter behält im Gegensatz zum Taster seine Position. Je nach Ausführung gibt es Schalter mit 2 oder mit mehr Positionen. Manche Schalter haben auch eine "Tasterposition", welche man zwar anwählen kann, die dann aber wieder "zurückspringt", so dass diese Position nicht dauerhaft beibehalten wird.
Je nach Einsatz besitzen Schalter statt 2 3 Pins, wodurch eine Umschaltung erreicht wird, wenn etwa mehrere Schalter in Reihe einen Gesamtzustand schalten sollen (Licht im Treppenhaus mit mehreren Schaltern).
Je nach Ausführung kann der Scahlter eine gewisse Spannung und Leistung schalten, die man aus dem Datenblatt entnimmt.

Taster

Im Gegensatz zum Schalter verbleibt der Taster nicht in seiner geschalteten Position, sondern kehrt selbständig wieder in seine Ruheposition zurück. Normalerweise besitzt ein Taster nur 2 Postionen, wobei auch hier mehrere Positionen möglich sind.

Temperatur

Aktoren

Lautsprecher / Piezo-Summer

LED

LED anschliessen

Um die LED und den RasPi zu schützen, muss jeweils ein [Vorwiderstand] angeschlossen werden. Im Link steht, wie man die [Farbcodes] liest, wenn man kein Multimeter zur Verfügung hat. Je nach Leuchtstärke und [Farbe der LED] ergeben sich sich folgende Werte:

LED-Farbe Widerstand Stromfluss (mA)
rot 470 2.7-3.5
rot 680 1.9-2.2
rot 1 k 1.3-1.5
orange / gelb / grün 470 2
orange / gelb / grün 1 k 1
blau / weiss 470 3
blau / weiss 1 k 1

Im oben verlinkten Artikel zum Vorwiderstand wird auf die Vorwärtsspannung der LED hingewiesen, welche dem Datenblatt entnommen werden muss, da die LED bauartbedingt unterschiedliche Spannungen haben und damit auch unterschiedliche Widerstandswerte brauchen. Die Widerstandswerte sind der [E6-Widerstandsreihe] entnommen.

Da LEDs Dioden sind, besitzen sie eine Sperr- und eine Durchgangsrichtung. In Sperrrichtung vertragen sie eine Spannung von 25V bis zu 30V. Somit geschieht bei Experimenten mit dem RasPi nichts, wenn man diese falsch gepolt einsetzt. Damit sie leuchtet, muss die Anode am Plus und die Kathode am GND angeschlossen werden. Die Kathodenseite ist normalerweise abgeflacht, kürzer und manchmal auch "abgeknickt".

LED blinken lassen

Das folgende Python-Programm verwendet die RPi.GPIO Bibliothek. Hier wird mit sleep gearbeitet, was man in einem "richtigen" Programm vermeiden sollte, da etwa Tastendrücke damit nicht eingelesen werden. Hier sollten besser Interrupts eingesetzt werden.

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BPM)     # Die Nummerierung der Pins nach dem BPM-Schema verwenden
GPIO.setup(18, GPIO.OUT)   # Pin 18 als Output definieren
while(True):
    GPIO.output(18, True)  # Pin einschalten
    time.sleep(0.5)        # 1/2 Sekunde warten
    GPIO.output(18, False) # Pin ausschalten
    time.sleep(0.5)

LED dimmen

Durch Pulsweitenmodulation lässt man eine LED in hoher Frequenz ein- und ausschalten, so dass es für das Auge aussieht, als sei die LED dunkler oder heller. Bei der [PWM] wird ein Puls nur zu % Prozenz der Pulslänge aktiviert.

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BPM)     # Die Nummerierung der Pins nach dem BPM-Schema verwenden
GPIO.setup(18, GPIO.OUT)   # Pin 18 als Output definieren
pwm_led = GPIO.PWM(18, 500)# PWM-Frequenz vom Pin 18 auf 500 Hertz setzen
pwm_led.start(100)         # mit 100% starten?
while(True):
    arg = input("Helligkeit in %:") # Wert einlesen
    arg = int(arg)         # nach int konvertieren
    pwm_led.ChangeDutyCycle(arg) # Prozentwert übergeben
    time.sleep(0.5)

Je nach Chip und Frequenz weicht die effektive Frequenz von der übergebenen Frequenz ab. Je schneller die gewünschte Freq. umso grösser ist der Abstand. Bei 10kHz kann es sein, dass es effektiv nur 4.4kHz sein. Dies könnte mit einem [Oszilloskop] gemessen werden. Im tieferen Frequentbereich wie bei 500 Hz sind es etwa 470 Hz, was völlig ausreichend ist. Wenn man die entsprechende Abweichungskurve kennt, kann man dieser natürlich entgegenwirken, indem man die Vorgabe entsprechend erhöht.

Motor

Gleichstrommotor

Schrittmotor

Stellmotor