Der letzte Schritt
Nach all der Rechnerei fehlt uns nunmehr nur noch ein kleiner Schritt: Wir müssen den PWM-Modus für einen Pin aktivieren. Das können wir über Zugriffe in /sys/class/pwm erledigen, fast analog zur Aktivierung des Pins zur Nutzung für GPIO.
Zuerst gilt es, den Pin zu exportieren - auch hier ist die Nummer des Pins der Galileo-Dokumentation zu entnehmen. Dem Arduino-Pin 9 ist der PWM-Pin 1 zugeordnet:
f = open("/sys/class/pwm/pwmchip0/export", "w"); f.write("1") f.close()
Und dann wird er aktiviert:
f = open('/sys/class/pwm/pwmchip0/pwm1/enable', "w") f.write('1') f.close()
Die potenzielle Doppelbelegung von Pins gilt es auch hier zu beachten. Hinzu kommt, dass mit diesen Zeilen lediglich der PWM-Modus für den Pin angeschaltet wird, die eigentliche Aktivierung als Ausgangspin muss im Vorfeld über die GPIO-Schnittstelle erfolgen - also unserem pinMode()-Imitat von oben.
PWM-Modus für sonstige Fälle
Der Vollständigkeit halber wollen wir hier noch erwähnen, wie der PWM-Modus "normal" benutzt werden kann, zum Beispiel, um eine LED zu dimmen oder einen Motor über einen Motortreiber zu steuern - also Fälle, in denen die Frequenz der PWM uns nicht weiter interessiert. Dann reicht auch der Zugriff über /sys/class/pwmchip0/-Einträge aus.
Die eigentliche Konfiguration erfolgt über die Einträge period und duty_cycle. Beide erwarten Angaben in Nanosekunden. Der period-Wert entspricht der im PWM-Abschnitt angesprochenen Periode. Der duty_cycle definiert die Impulsdauer, also die Dauer, in der insgesamt tatsächlich Strom während einer Periode fließt. Folgendes Beispiel würde eine LED nur zu 50 Prozent mit Strom versorgen:
f = open('/sys/class/pwm/pwmchip0/pwm1/period', "w") f.write('1000000') f.close() f = open('/sys/class/pwm/pwmchip0/pwm1/enable', "w") f.write('1') f.close() f = open('/sys/class/pwm/pwmchip0/pwm1/duty_cycle', "w") f.write('500000') f.close()
Die Prozentzahl von 50 Prozent ergibt sich aus dem Verhältnis von duty_cycle zu period. Der duty_cycle-Wert von 500000 sind 50 Prozent des period-Wertes von 1000000.
Zielgerichtet probieren | Das finale Skript |
Wozu der Umweg über Flattr wenn man auch direkt Paypal nutzen kann? Versteh ich nicht.
Danke :] Ich benutze die app täglich auf mehreren PCs und habe mich so drann gewöhnt. Sie...
Besten Dank für die Info. Gruss, gehirnpest
...ein 5 Jahresprojekt, dass dann nach 7 Jahren wegen nicht eingetretenem Erfolg eingestellt.
[..] und wir wollen dabei lernen. Genau sowas hat mir bei Golem bisher immer gefehlt...