Hallo zusammen,
ich möchte via UART Steuerkommandos vom Raspberry an meinen Arduino Uno
schicken
- Arduino ist via USB ans Raspberry gesteckt --> /dev/ttyACM0
- Arduino reagiert aktuell auf '0' und '1'
- Wenn ich den Port via Minicom öffne und dann '0' oder '1' schicke, ist
alles okay.
Nun mein kleines Skript, dass ich z.B. mit Parameter '0' aufrufe:
1 |
|
2 | import sys
|
3 | import serial
|
4 |
|
5 | arduino = serial.Serial(port='/dev/ttyACM0', baudrate=9600)
|
6 |
|
7 | if sys.argv[1] == '0':
|
8 | print("Leuchten links AUS")
|
9 | arduino.write('0'.encode('utf-8'))
|
10 |
|
11 | // ...
|
- Es wird dann in den If-Zweig gesprungen (print-Ausgabe wird
ausgegeben), der Arduino reagiert aber nicht.
- Wenn ich die Verbindung zum Arduino schon vorher per Minicom geöffnet
habe und dann das Skript aufrufe, kommen dessen Kommandos zum Arduino
korrekt durch (Mir war ehrlich gesagt nicht klar, dass überhaupt zwei
Anwendungen "gleichzeitig" den Port nutzen können, scheint aber so zu
sein. Jedenfalls sehe ich in der Minicom parallel auch die Antworten des
Arduinos (die ich in meinem Skript aktuell nicht auswerte) ...)
- Ich habe verschiedene Varianten des Wartens (Stumpf 1 Sekunde warten
nach öffnen des Port, warten solange nicht is_open(), verschiedene
timeouts gesetzt) probiert, bringt alles keine Veränderung
- serial ist übrigens pyserial
- Ist mit Python 2 und 3 anscheinend erstmal das gleiche Verhalten...
Kann sich (oder noch besser mir ;)) da jemand einen Reim draus machen?
Viele Grüße
Peer