pin.*
Benutzung von Ein-/Ausgangspins am Board oder Computer.
pin.config
Konfigurieren eines Pins. Es wird der Pinname und die Configurationen angegeben. Die Pinnamen sind Board oder Computerspezifisch und können mit pin.getNames erfragt werden.
Das Resultat ist ein Handle auf den Pin.
Folgeden Konfigurationen sind möglich:
- reset
Der Pin wird in den Grundzustand zurückgesetzte und kann neu konfiguriert werden. Nach einem CPU Reset sind alle Pins in diesem Zustand.
- input
Der Pin wird zu einem Eingang.
- output
Der Pin wird zu einem Ausgang. Der Pegel ist kann low oder heigh sein.
- low
Der Pin wird zu einem Ausgang und der Pegel ist low.
- high
Der Pin wird zu einem Ausgang und der Pegel ist high.
- pullup
Der Pin wird zu einem Eingang und ein pullup Widerstand wird aktiviert.
- pulldown
Der Pin wird zu einem Eingang und ein pulldown Widerstand wird aktiviert.
Hinweis: Nicht alle Pins können Ein- und Ausgang sein. Pullup und/oder Pulldown kann, muss aber nicht vorhaden sein. Das ist von der Hardware abhängig.
pin.set
Ein Ausgangspin wird auf high (true) oder low (false) gesetzt. Der Pin wird durch den Namen oder den Handle angeben.
pin.get
Ein Eingangspin wird abgefragt. Ein high Pegel gibt true als Resultat, low gibt false. Der Pin wird durch den Namen oder den Handle angeben.
pin.getNames
Erfragen aller Pin Namen.
Bei einem CN1 Board ist das Resultat: A0,A1,A2,A3,A4,A7,A8,A9,A10,A15,A16,A17,A18,A19,A20,A21,A22,A23,A24,B0,B1,B2,B3,B10,B11,B12
Beispiele
Nachdem der pin A0 als Ausgang geschaltet wurde wird in einer Endlosschleife alle 0.5 Sekunden der Pin auf true (high Pegel) und false (low Pegel) gelegt.
Zugriff auf den Pin über den Namen:
1 2 3 4 5 6 7 8 9 10 11 |
local sys = require 'sys' local pin = require 'pin' pin.config('A0', 'output') while true do pin.set('A0', true) sys.sleep(0.5) pin.set('A0', false) sys.sleep(0.5) end |
Zugriff auf den Pin über den Handle:
1 2 3 4 5 6 7 8 9 10 11 |
loocal sys = require 'sys' local pin = require 'pin' local led = pin.config('A0', 'output') while true do pin.set(led, true) sys.sleep(0.5) pin.set(led, false) sys.sleep(0.5) end |
Hinweis: Das Beispiel ist nicht sehr Multitaking tauglich. Es ist besser statt sys.sleep Timer zu verwenden!