da ich neu hier bin, zunächst zu mir
Ich heiße Philipp und bin bei Python gelandet, da ich mich aktuell näher mit dem Arduino auseinander setze.
Mein Ziel ist es, zwei Motoren - einen 12V Lüfter und einen Schrittmotor - vom Mac aus zu steuern.
Die Kommunikation zwischen Mac und Arduino soll per Python erfolgen, da mir dies die am weitesten verbreite Lösung zu sein scheint. Das Python-Script wiederum wird aus einem anderen Programm heraus aufgerufen und mit Argumenten gefüttert, welche angeben, welcher der beiden Motoren angesprochen werden soll und was dieser tun soll (Lüfter: Geschwindigkeit ändern / Schrittmotor: Anzahl der Schritte und Richtung).
Meine Erfahrungen in der Programmierung beschränken sich in erster Regel auf kleinere PHP-Skripte, welche ich vor einiger Zeit geschrieben habe (v.a. einfache Front-Ends für Datenbanken). OOP ist mir also zumindest nicht völlig unbekannt
Da sowohl Python als auch der Arduino nun eben noch völlig neu für mich sind, taste ich mich nun langsam voran.
Der folgende Code macht grundsätzlich schon einmal, was er soll
Es wird ein fester Wert zwischen 0 und 255 (im Beispiel '100') über die serielle Schnittstelle an den Arduino gesendet, welcher die Geschwindigkeit des Lüfters entsprechend anpasst.
Code: Alles auswählen
#!/usr/bin/python
import sys
import serial
import struct
import time
port = '/dev/tty.usbmodemFA131'
arduino = serial.Serial(port, 9600)
arduino.open
time.sleep(2)
arduino.write(b'100')
print(arduino.readline())
arduino.close
Nun will ich im nächsten Schritt keine statischen Werte im Script definieren, sondern den Wert flexibel als Argument an das Script übergeben (z.B. "Arduino.py 100").
Soweit ich bisher verstanden habe, geht dies über das Array sys-argv[].
Das erste Argument bekomme ich also über sys.argv[1].
Nun würde ich das erste Argument in eine Variable einlesen und an die serielle Schnittstelle übergeben.
Mein Problem liegt nun jedoch darin, dass ich nicht weiß, wie ich den o.g. Code abwandeln muss, damit der Inhalt der Variable in gleicher Form übertragen wird wie durch
Code: Alles auswählen
arduino.write(b'100')
Viele Dank für eure Unterstützung!
Philipp