Hallo Ich bin gerade eine RGB Led Steuerung zu basteln
Das ganze soll so funktionieren, dass über Schieberegler auf einer PHP Seite die Helligkeitswerte von 0-100 für rot grün und blau an ein Python Script übergeben werden.
Das funktioniert soweit auch,
also ich kann per PHP und dem eingestellten Schieberegler die Variable an das Pythonscript übergeben. Leider funktioniert die pwm nur solange das Script läuft, was ich mit while true lösen würde.
Wenn ich aber jetzt die Helligkeit erneut verändern will wird eine zweite instanz aufgerufen.
Kann ich das irgendwie verhindern bzw beim erneuten aufruf die erste Instanz beenden ?
anbei mein Code
Python
#!/usr/bin/python3
import RPi.GPIO as GPIO # Remember to run as superuser (sudo)
import time
import sys
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM) # This example uses the BCM pin numbering
GPIO.setup(17, GPIO.OUT)
GPIO.setup(17, GPIO.OUT)
GPIO.setup(17, GPIO.OUT)
if sys.argv[1] == "rot" :
pwm = GPIO.PWM(17, 50)
pwm.stop()
pwm.start(50)
pwm.ChangeFrequency(50)
pwm.ChangeDutyCycle(float(sys.argv[2]))
elif sys.argv[1] == "blau":
pwm = GPIO.PWM(17, 50)
pwm.start(50)
pwm.ChangeFrequency(50)
pwm.ChangeDutyCycle(float(sys.argv[2]))
elif sys.argv[1] == "gruen":
pwm = GPIO.PWM(17, 50)
pwm.start(50)
pwm.ChangeFrequency(50)
pwm.ChangeDutyCycle(float(sys.argv[2]))
time.sleep(10)
Alles anzeigen
PHP
<html>
<body>
<form method="get" action="led.php">
rot
<input type="range" min="0" max="100" value="0" step="5" name="rot" onchange="showValue(this.value)" />
<span id="rot">0</span>
<button type="submit" >Aktualisiseren</button>
<script type="text/javascript">
function showValue(newValue)
{
document.getElementById("rot").innerHTML=newValue;
}
</script>
</form>
<?php
if(isset($_GET['rot'])){
echo $_GET["rot"];
trim(@shell_exec("sudo /var/www/led.py rot ".$_GET["rot"]." > /dev/null &"));
}
?>
</body>
</html>
Alles anzeigen