Neuigkeiten    Das Projekt    Technik    RoboSpatium    Unterstützung    Stichwortverzeichnis    Download    Reaktionen    Spiele    Kauftipps    Kontakt   




<<< Python: Hintergrundaktivität         Apache Webserver >>>

Python: Kommandozeilenparameter

Der Schaltplan zum Kapitel

Schalten fon LEDs und einem Seervo mittels Python
Abbildung 1:
Zwei LEDs und ein Servo werden in den Beispielen dieses Kapitels geschaltet. Das Servo sollte ein Microservo (auch 9g Servo genannt) sein, da diese einen geringeren Strom ziehen als Standardservos.
Alles zum korrekten Anschließen von LEDs an GPIOs gibt's im Kapitel zu LEDs mit Hilfe von GPIOs schalten.
Welche Pins welche Funktion haben, ist im Kapitel zur Hardware des Raspberry Pi nachzulesen.

Parameter beim Programmstart übergeben

Neben dem Einlesen von Parametern aus einer Datei, können diese auch beim Start eines Skripts übergeben werden. Das folgende Beispiel arbeitet Parameter für zwei LEDs und ein Servo ab:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/usr/bin/env python  
 
import sys # Needed for handling command line parameters  
from gpiozero import Device, Servo, PWMLED # Needed for PWM control  
 
# The older Raspberry Pi 1 or Pi Zero require to set the pin factory  
from gpiozero.pins.pigpio import PiGPIOFactory  
 
 
# Pin factory for older Raspberry Pi models  
Device.pin_factory = PiGPIOFactory()  
 
argNumber = 0  
 
for arg in sys.argv: # Loop through all command line parameters  
 
    argNumber = argNumber + 1  
 
    if arg == "-h" or arg == "--help" or len(sys.argv) < 2:  
        print ("Script can set GPIO (physical pin numbers) 16 or 22 to pwm signal from 0.0 to 1.0")  
        print ("or set GPIO 12 to servo angle from -1.0 to 1.0")  
        print ("commandline.py -pwm16 <pulse-width>  -pwm22 <pulse-width> -servo12 <servo angle>")  
        sys.exit()  
    elif arg == "-pwm16" or arg == "--pulse-width-pin-16":  
        pulseWidth16 = 0  
        if(argNumber < len(sys.argv)):  
            pulseWidth16 = float(sys.argv[argNumber])  
        if (pulseWidth16 < 0.0 or pulseWidth16 > 1.0):  
            print("Pulse-width 16 " + str(pulseWidth16) + " out of range (0.0 to 1.0)!")  
            sys.exit(2)  
        else:  
            pwm16 = PWMLED("BOARD16", True, 0, 100)  
            pwm16.value = pulseWidth16  
    elif arg == "-pwm22" or arg == "--pulse-width-pin-22":  
        pulseWidth22 = 0  
        if(argNumber < len(sys.argv)):  
            pulseWidth22 = float(sys.argv[argNumber])  
        if (pulseWidth22 < 0.0 or pulseWidth22 > 1.0):  
            print("Pulse-width 22 " + str(pulseWidth22) + " out of range (0.0 to 1.0)!")  
            sys.exit(2)  
        else:  
            pwm22 = PWMLED("BOARD22", True, 0, 100)  
            pwm22.value = pulseWidth22  
    elif arg == "-servo12" or arg == "--servo-angle-pin-12":  
        servoAngle12 = 0  
        if(argNumber < len(sys.argv)):  
            servoAngle12 = float(sys.argv[argNumber])  
        if (servoAngle12 < -1.0 or servoAngle12 > 1.0):  
            print("Servo angle 12 " + str(servoAngle12) + " out of range (-1.0 to 1.0)!")  
            sys.exit(2)  
        else:  
            servo12 = Servo("BOARD12")  
            servo12.value = servoAngle12  
 
    

Speichert dieses Skript unter "/home/pi/commandline.py" und macht es ausführbar:
chmod a+x background.py

Ruft ihr das Programm auf, so könnt ihr die Pulsweite oder die Stellung des Servohebels als Parameter übergeben. Das folgende Beispiel setzt die Pulsweite von LED 16 auf 40%:
./commandline.py -pwm16 0.4

Um den Servohebel auf 45 Grad zu stellen, lautet die Befehlszeile:
./commandline.py -servo12 0.5

oder in der Langversion:
./commandline.py --servo-angle-pin-12 0.5

Es können auch mehrere Parameter gleichzeitig übergeben werden:
./commandline.py -servo12 -0.5 -pwm16 0.1 -pwm22 0.3



<<< Python: Hintergrundaktivität         Apache Webserver >>>


Neuigkeiten    Das Projekt    Technik    RoboSpatium    Unterstützung    Stichwortverzeichnis    Archiv    Download    Reaktionen    Spiele    Verweise    Kauftipps    Kontakt    Impressum   





Twitter YouTube Hackaday Patreon TPO