Super!! vielen dank dir!
ich probier das nacher gleich mal aus, war jetzt erstmal ne Woche im Urlaub und in der Zwischnenzeit nicht online
ich geb dir auf jedenfall ne Rückmeldung!!
großes Dankeschön!
Posts by da1000
-
-
-
also muss ich wenn ich das richtig verstanden habe, dem user www-data Schreibrechte für den besagten Ordner geben, in dem die Textdatei steckt oder? Dachte www-data hat bereits die besagten Rechte..
kannst du mir bitte den Shell Befehl hierfür durchgeben? =))
Danke -
nagut, mein Schrittmotor läuft zwar etwas langsam, aber für meine Anwendung ist es ausreichend.
Jetzt hab ich noch eine Frage, will dafür aber nicht extra nen neuen Thread aufmachen.
Und zwar möchte ich gerne via Apache Web App per Button ne neue Datei in einem Verzeichnis auf meinen Pie erstellen.
Es scheitert jedoch an den Zugriffsrechten, obwohl ich hierfür eigentlich keine Sudo Rechte benötige (hab ich in der Shell bereits getestet).möchte gerne eine einfache Textdatei per fopen Befehl erstellen:
$datei = fopen("/var/www/..../daten.txt","w");
Bekomme aber die FehlermeldungWarning: fopen(/var/www/.../Test.txt): failed to open stream: Permission denied in /var/www/..../Testdatei.php on line ....
Brauch ich da etwa noch extra Zugriffsrechte?? dachte das wäre hierfür nicht nötig.. vielleicht könnt ihr mir kurz helfen =)
Vielen Dank -
Sowas hatte ich schon vermutet. Dachte das wär alles ein wenig schneller.
also wenn ich dich richtig verstanden habe, ist es am besten über die Buttons einen Python Skript Aufruf zu starten, in dem die eigentlichte Steuerung versteckt ist oder?via exec ('sudo python /var/www/*/Steuerung.py') - nehme ich mal an
gut, dann muss noch rausfinden wie ich das zum laufen bekomme mit dem Skript Aufruf
(hatte da Anfangs ein wenig Probleme) -
PHP
Display More<!DOCTYPE html> <html lang="de"> <head> <title> Schrittmotorsteuerung </title> <meta charset="UTF-8"> <meta name="description" content="HTML/PHP Script zur Ansteuerung eines Schrittmotors"/> <meta name="keywords" content="none"/> <meta name="author" content="Martin "> <meta name="viewport" content ="width=device-width" /> <!--Angepasste Darstellung auf Smartphones --> </head> <body> <h1> Schrittmotoransteuerung </h1> <form method="get" action ="Schrittmotorsteuerung.php"> <input type="submit" value="Motor Extend" name="Extend"> <input type="submit" value="Motor Retract" name="Retract"> </form> <!-- PHP-CODE --> <?php ######################################################################## # Grundinitialisierung Pins $modeon13 =trim(@shell_exec("/usr/local/bin/gpio -g mode 13 out")); #yellow (BOARD 33) $modeon06 =trim(@shell_exec("/usr/local/bin/gpio -g mode 06 out")); #orange (BOARD 31) $modeon19 =trim(@shell_exec("/usr/local/bin/gpio -g mode 19 out")); #brown (BOARD 35) $modeon29 =trim(@shell_exec("/usr/local/bin/gpio -g mode 05 out")); #black (BOARD 29) # Grundinitialisierung Pins (0-Status) $val = trim(@shell_exec("/usr/local/bin/gpio -g write 13 0")); $val = trim(@shell_exec("/usr/local/bin/gpio -g write 06 0")); $val = trim(@shell_exec("/usr/local/bin/gpio -g write 19 0")); $val = trim(@shell_exec("/usr/local/bin/gpio -g write 05 0")); # Feste/globale Variablen: settype($TIME, "integer"); settype($SCHRITTE, "integer"); settype($STATUS, "string"); $TIME = 3000; $SCHRITTE = 48*6; # 48 = 1 Rev $STATUS = "undefined"; ######################################################################## # Motorprogrammierung function step1(){ $val = trim(@shell_exec("/usr/local/bin/gpio -g write 13 1")); $val = trim(@shell_exec("/usr/local/bin/gpio -g write 06 0")); $val = trim(@shell_exec("/usr/local/bin/gpio -g write 19 1")); $val = trim(@shell_exec("/usr/local/bin/gpio -g write 05 0")); usleep(3000); } function step2(){ $val = trim(@shell_exec("/usr/local/bin/gpio -g write 13 1")); $val = trim(@shell_exec("/usr/local/bin/gpio -g write 06 0")); $val = trim(@shell_exec("/usr/local/bin/gpio -g write 19 0")); $val = trim(@shell_exec("/usr/local/bin/gpio -g write 05 1")); usleep(3000); } function step3(){ $val = trim(@shell_exec("/usr/local/bin/gpio -g write 13 0")); $val = trim(@shell_exec("/usr/local/bin/gpio -g write 06 1")); $val = trim(@shell_exec("/usr/local/bin/gpio -g write 19 0")); $val = trim(@shell_exec("/usr/local/bin/gpio -g write 05 1")); usleep(3000); } function step4(){ $val = trim(@shell_exec("/usr/local/bin/gpio -g write 13 0")); $val = trim(@shell_exec("/usr/local/bin/gpio -g write 06 1")); $val = trim(@shell_exec("/usr/local/bin/gpio -g write 19 1")); $val = trim(@shell_exec("/usr/local/bin/gpio -g write 05 0")); usleep(3000); } function stepstop(){ # Zur Vermeidung von Motorerwärmung im Stillstand $val = trim(@shell_exec("/usr/local/bin/gpio -g write 13 0")); $val = trim(@shell_exec("/usr/local/bin/gpio -g write 06 0")); $val = trim(@shell_exec("/usr/local/bin/gpio -g write 19 0")); $val = trim(@shell_exec("/usr/local/bin/gpio -g write 05 0")); usleep(3000); } ########## Motorschrittfolge ########## function rechtslauf(){ #Extend for($i = 1; $i <= 48; $i++){ step4(); step3(); step2(); step1(); } stepstop();} function linkslauf(){ #Retract global $SCHRITTE; for($i = 1; $i <= 48; $i++){ step1(); step2(); step3(); step4(); } stepstop(); } if(isset($_GET['Extend'])){ rechtslauf(); echo "Motor hat Endlage erreicht - Kontakt geschlossen"; } if(isset($_GET['Retract'])){ linkslauf(); echo "Motor hat Endlage erreicht - Kontakt geöffnet"; }
-
Hallo Leute,
ich programmiere gerade eine Webapp zur Steuerung eines Schrittmotors per HTML / PHP.
das gleiche Programm hatte ich schon via Python am laufen und da funktionierte es einwandfrei.
Nun wollte ich das ganze via PHP auf eine Webapp übersetzen. Jetzt habe ich aber folgendes Problem:
Die Steuerung ist einfach nicht schnell (und stabil) genug!
Nach jeder GPIO Ansteuerung für den Schrittmotor habe ich per "usleep" Befehl hätte ich gerne eine Verzögerung von ca 3000 Mikrosekunden bevor die nächste GPIO
Steuerbefehl rausgeht. Ziel ist es, dass der Schrittmotor gleichmäßig bei einer angenehmen Frequenz dreht. Aktuell habe ich allerdings nur eine LED an einem GPIO Ausgang um das ganze Testweise zu überprüfen bevor ich den Schrittmotor verlöte, macht letztendlich ja keinen Unterschied.
Fakt ist, die Test-LED blinkt total unrhythmisch und ich bekomme maximal eine Frequenz von gefühlten 20Hz! (selbst wenn ich "usleep" auf "0" stelle)
Das ist für den Schrittmotor leider absolut ungeeignet. Wie bereits erwähnt - wenn ich das ganze offline per Python Script ausführe funktioniert die Steuerung einwandfrei! Hohe Freuqenz, stabiler Rhytmus - so wie ich es mir wünsche.
Meine Frage deswegen. kann es sein das PHP via Webapp für solch ein Ansteuerung einfach ungeeignet ist? Ist die Verzögerung von Webapp zu den GPIOs einfach zu groß?
und noch wichtiger... wie Löse ich das ganze? Dass ich eine schnellere und stabilere Schaltfrequenz via Webapp erhalte?