Abo
  • Services:
Anzeige
Laika - Frontansicht
Laika - Frontansicht (Bild: Golem.de)

LEDs ansteuern

Anzeige

Bevor wir uns der Servo-Steuerung zuwenden, legen wir einen Zwischenschritt ein. Unser Programm soll auch drei LEDs ansteuern; zum einen ist das ein praktischer Statusindikator für den monitorlosen Galileo, zum anderen vermittelt es uns die Grundlage, um die Arduino-Pins des Galileo unter Linux mit Python anzusprechen. Praktisch geht es im Folgenden um den Nachbau der Arduino-Funktionen pinMode() und digitalWrite() unter Python.

Die obige Formulierung Arduino-Pins ist eigentlich Unsinn, es handelt sich um normale Ein- und Ausgangspins (General Purpose Input Output, kurz GPIO). Und deshalb werden sie auch problemlos von Linux unterstützt. Gemäß der Linux-Philosophie "Alles ist eine Datei" können diese auch mit Python über normale Dateioperationen gesteuert werden. Ansatzpunkt dafür ist das dateibasierte Interface unter /sys/class/gpio.

Zuerst müssen wir dazu Linux mitteilen, dass wir einen Pin für die Ausgabe nutzen wollen, in diesem Beispiel Pin 4:

  1. f = open("/sys/class/gpio/export", "w");
  2. f.write("28")
  3. f.close()
  4.  
  5. f = open("/sys/class/gpio/gpio28/direction", "w")
  6. f.write("out")
  7. f.close()

Zuerst wird der Pin exportiert, dann die Richtung (direction) gesetzt. Ein Rätsel im Quellcode gilt es noch zu lösen: warum dort 28 als Pin-Nummer steht und nicht 4. Der Grund liegt in der etwas komplexen Anbindung der Pins auf dem Galileo. Die Zuordnung der Arduino-Pin-Nummer zu einer GPIO-Nummer unter Linux geht aus einem IO-Mapping-Dokument hervor. In der oberen Tabelle stehen links unter Arduino IDE ID die Nummern der Arduino-Pins, die GPIO-Pins ergeben sich aus der mittleren Spalte unter GPIO - Linux. Dem Arduino Pin 4 (IO4) ist darin die GPIO-Nummer 28 zugewiesen.

Doppelt belegte Pins

Für die meisten Pins ist die Initialisierung etwas aufwendiger. Hintergrund ist, dass der Galileo über die Pins auch zusätzliche Bussysteme anbieten kann. Deswegen ist es manchmal notwendig, erst den korrekten Modus einzustellen. Auch das erfolgt über GPIO-Einträge.

Soll zum Beispiel Pin 12 genutzt werden, werfen wir zuerst einen Blick in die Mapping-Dokumentation. Für IO12 ergibt sich die GPIO-Nummer 38. Aber in der Spalte Muxed with steht ebenfalls ein Eintrag. Also wird dieser Pin doppelt genutzt. Wir müssen ihn erst in den richtigen Modus versetzen. Dazu gehört der Blick in die zweite Tabelle.

Dort suchen wir den IO12-Eintrag, er befindet sich in der Spalte Mux Selector - 1 und hat die zugehörige GPIO-Nummer 54. Die Spaltenüberschrift Mux Selector - 1 bedeutet, dass in diesem GPIO-Eintrag die Zahl 1 geschrieben werden muss. Ist das erfolgt, kann auch Pin 12 aktiviert und genutzt werden.

  1. f = open("/sys/class/gpio/export", "w");
  2. f.write("54")
  3. f.close()
  4.  
  5. f = open("/sys/class/gpio/gpio54/value", "w")
  6. f.write("1")
  7. f.close()
  8.  
  9. f = open("/sys/class/gpio/export", "w");
  10. f.write("38")
  11. f.close()
  12. ...

Eines fehlt noch bei der Initialisierung: Um sicherzugehen, dass an den Pins auch tatsächlich ausreichend Strom für LEDs und Ähnliches anliegt, muss für jeden eingesetzten Pin auch noch der Drive korrekt gesetzt werden, hier am Beispiel des Pin 4:

  1. f = open("/sys/class/gpio/gpio28/drive", "w")
  2. f.write("strong")
  3. f.close()

Die erlaubten Werte für drive sind im Übrigen systemspezifisch. Auf dem Arduino muss der Strom in Milliampere angegeben werden und darf zwischen 2 und 16 liegen.

Was wir bislang beschrieben haben, entspricht der pinMode()-Funktion unter Arduino. Die Funktion digitalWrite() ist leichter nachzubauen:

  1. f = open("/sys/class/gpio/gpio28/value", "w")
  2. f.write("1")
  3. f.close()

Der geschriebene Wert 1 schaltet den Pin "ein", eine 0 bedeutet "aus".

 GesichtserkennungEin Zwischenüberblick 

eye home zur Startseite
hungkubwa 31. Jan 2014

Wozu der Umweg über Flattr wenn man auch direkt Paypal nutzen kann? Versteh ich nicht.

savejeff 30. Jan 2014

Danke :] Ich benutze die app täglich auf mehreren PCs und habe mich so drann gewöhnt. Sie...

Anonymer Nutzer 30. Jan 2014

Besten Dank für die Info. Gruss, gehirnpest

Casandro 30. Jan 2014

...ein 5 Jahresprojekt, dass dann nach 7 Jahren wegen nicht eingetretenem Erfolg eingestellt.

Anonymer Nutzer 30. Jan 2014

[..] und wir wollen dabei lernen. Genau sowas hat mir bei Golem bisher immer gefehlt...



Anzeige

Stellenmarkt
  1. Universität Bielefeld, Bielefeld
  2. Südwolle GmbH & Co. KG, Schwaig
  3. Medion AG, Essen
  4. Aligia GmbH über ACADEMIC WORK, Ingolstadt


Anzeige
Blu-ray-Angebote
  1. (u. a. Space Jam 11,97€, Ex Machina 9,97€, Game of Thrones 3. Staffel 24,97€)
  2. (u. a. Forrest Gump 9,97€, Gods of Egypt 9,97€, Creed 8,99€, Cloud Atlas 8,94€)
  3. (u. a. Hobbit Trilogie Blu-ray 44,97€, Batman Dark Knight Trilogy Blu-ray 17,99€)

Folgen Sie uns
       


  1. Hoversurf

    Hoverbike Scorpion-3 ist ein Motorradcopter

  2. Rubbelcard

    Freenet-TV-Guthabenkarten gehen in den Verkauf

  3. Nintendo

    Interner Speicher von Switch offenbar schon jetzt zu klein

  4. Noch 100 Tage

    Unitymedia schaltet Analogfernsehen schrittweise ab

  5. Routerfreiheit

    Tagelange Störung bei Aktivierungsportal von Vodafone

  6. Denverton

    Intel plant Atom C3000 mit bis zu 16 Goldmont-CPU-Kernen

  7. Trotz Weiterbildung

    Arbeitslos als Fachinformatiker

  8. Klage gegen Steuernachzahlung

    Apple beruft sich auf europäische Grundrechte

  9. 3D Studio

    Nvidia spendiert Qt Hunderttausende Zeilen Code

  10. Horizon Zero Dawn im Test

    Abenteuer im Land der Maschinenmonster



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Der große Ultra-HD-Blu-ray-Test (Teil 2): 4K-Hardware ist nichts für Anfänger
Der große Ultra-HD-Blu-ray-Test (Teil 2)
4K-Hardware ist nichts für Anfänger
  1. Der große Ultra-HD-Blu-ray-Test (Teil 1) 4K-Filme verzeihen keine Fehler
  2. Deutsche Verkaufszahlen Unberechtigter Jubel über die UHD-Blu-ray
  3. 4K Blu-ray Sonys erster UHD-Player kommt im Frühjahr 2017

LineageOS im Test: Das neue Cyanogenmod ist fast das alte Cyanogenmod
LineageOS im Test
Das neue Cyanogenmod ist fast das alte Cyanogenmod
  1. Ex-Cyanogenmod LineageOS startet mit den ersten fünf Smartphones
  2. Smartphone-OS Cyanogenmod ist tot, lang lebe Lineage

Ex-Verfassungsgerichtspräsident Papier: Die Politik stellt sich beim BND-Gesetz taub
Ex-Verfassungsgerichtspräsident Papier
Die Politik stellt sich beim BND-Gesetz taub
  1. NSA-Ausschuss SPD empört über "Schweigekartell" der US-Konzerne
  2. Reporter ohne Grenzen Klage gegen BND-Überwachung teilweise gescheitert
  3. Drohnenkrieg USA räumen Datenweiterleitung über Ramstein ein

  1. Re: und es geht noch günstiger

    ve2000 | 02:27

  2. Suchen Web-Entwickler in Braunschweig

    JörgLudwig | 02:23

  3. Re: Aussichten Windows/ Linux Admin im Zeitalter...

    amagol | 02:22

  4. Re: Jemanden zu finden der weiß was er tut ist...

    theonlyone | 02:11

  5. Re: Positiv betrachtet: preiswert Speicher erweitern

    theonlyone | 02:05


  1. 18:30

  2. 18:14

  3. 16:18

  4. 15:53

  5. 15:29

  6. 15:00

  7. 14:45

  8. 14:13


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel