INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Webserver soll 2 Servos (Schwenk-Neiger) steuern - Winkelauswahl aus Radiobutton
05.01.2020, 13:57 (Dieser Beitrag wurde zuletzt bearbeitet: 05.01.2020 14:02 von kiximek.)
Beitrag #1
Webserver soll 2 Servos (Schwenk-Neiger) steuern - Winkelauswahl aus Radiobutton
Hallo,

ich bin neu hier und auch im Bereich des Arduino.
Aktuell bin ich für den Modellbau ein Projekt am bauen, bei dem ich gerne über eine Website 2 Servomotoren steuern möchte.
Im Bereich HTML kenne ich nur das, was ich seit 2 Wochen versuche.

Die Steuerung der Servos über den Serial-Monitor funktioniert.
Die Website sieht auch so aus, wie ich sie gerne hätte, jedoch funktioniert es nicht.
Ich habe mir viele Beispiele mit Buttons usw. angesehen, jedoch ist keins so, dass es zu meinem passt.

Vielleicht könnt ihr mir sagen, wie ich den HTML-Code gestalten muss, damit ich diese dann später abfragen und mit einer Aktion belegen kann.

Folgende Funktion soll es geben:
Es gbit 2 Motoren (Schwenk und Neiger). Ich möchte die Buttons, wie auf dem beigefügten Bild anordnen.
Durch die Auswahl einer der Winkelgrößen soll der Button die Winkel der Servos um die entsprechende Größe erhöhen oder verringern.

Bild:
Bild Webserver

Das ist der aktuelle Code, der die Buttons generiert:
Zitat:// Test Button soll Aktion auslösen
client.print(F("<p><p/><form method=get> <INPUT type =submit name=hoch value=&uarr;>"));
client.print(F("<p> <INPUT type =\"submit\" value =\"&larr;\"> "));
client.print(F("&nbsp;<INPUT type =\"radio\" name =\"status\" value =\"1\"checked>1 Grad"));
client.print(F("<INPUT type =\"radio\" name =\"status\" value =\"5\">5 Grad"));
client.print(F("<INPUT type =\"radio\" name =\"status\" value =\"10\">10 Grad"));
client.print(F("&nbsp; <INPUT type =\"submit\" value =\"&rarr;\">"));
client.print(F("<p><INPUT type =\"submit\" value =\"&darr;\"></form>"));
client.print(F("</center>"));
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.01.2020, 15:00
Beitrag #2
RE: Webserver soll 2 Servos (Schwenk-Neiger) steuern - Winkelauswahl aus Radiobutton
Welchen MC benutzt Du und wo im Sketch wird das ausgewertet?
Ich vermisse das action-Attribut im Form-Tag.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.01.2020, 15:07
Beitrag #3
RE: Webserver soll 2 Servos (Schwenk-Neiger) steuern - Winkelauswahl aus Radiobutton
(05.01.2020 15:00)Tommy56 schrieb:  Ich vermisse das action-Attribut im Form-Tag.

Das ist nicht notwendig, wenn die Daten an die URL des aktuellen Dokuments gesendet werden.

Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.01.2020, 15:17
Beitrag #4
RE: Webserver soll 2 Servos (Schwenk-Neiger) steuern - Winkelauswahl aus Radiobutton
(05.01.2020 15:07)Fips schrieb:  Das ist nicht notwendig, wenn die Daten an die URL des aktuellen Dokuments gesendet werden.
Werden sie das? Ich sehe nichts, wo der Request bearbeitet wird, also kann man derzeit keine Aussage dazu treffen.
Wobei ich selbst dazu neige immer das action-Attribut mitzuführen, schon um auch nach Monaten noch klar zu wissen, wo ich was auswerten muss. Wink

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.01.2020, 15:45
Beitrag #5
RE: Webserver soll 2 Servos (Schwenk-Neiger) steuern - Winkelauswahl aus Radiobutton
(05.01.2020 15:17)Tommy56 schrieb:  Werden sie das? Ich sehe nichts, ...

Wenn du es nicht siehst, dann ist deine Aussage das Action Attribut fehlt, doch sehr gewagt!


Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.01.2020, 15:50
Beitrag #6
RE: Webserver soll 2 Servos (Schwenk-Neiger) steuern - Winkelauswahl aus Radiobutton
Man könnte daran erkennen, bei welcher URL der TO die Daten auswerten will.

Solange vom TO aber keine weiteren Infos kommen, ist die Diskussion sowieso müßig.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.01.2020, 16:20 (Dieser Beitrag wurde zuletzt bearbeitet: 05.01.2020 16:31 von kiximek.)
Beitrag #7
RE: Webserver soll 2 Servos (Schwenk-Neiger) steuern - Winkelauswahl aus Radiobutton
Hallo,

anbei der komplette Code der auf dem Arduino Nano läuft:

Zitat:#include <Servo.h>
#include <SPI.h>
#include <UIPEthernet.h>

int schwenk=90;
int neigung=90;
Servo servo_Neigung;
Servo servo_Schwenk;

// Gib die 6 (hexadezimalen) Zahlen der Mac-Adresse Deines Ethernet-Shields ein:
byte mac[] = {0x90, 0xA2, 0xDA, 0x0D, 0x4E, 0xBD };

// Gib die gewünschte IP-Adresse ein, die Dein Webserver haben soll:
IPAddress ip(192,168,111,3);

// Initialisiere Deinen Server und weise ihm einen Port zu:
// (Port 80 ist ueblich fuer HTTP):
EthernetServer server(80);

void setup() {
// Serielle Kommunikation (fuer den Seriellen Monitor)
Serial.begin(9600);
while (!Serial) {
; // warte

// Servo Neigung ist an Pin 5 angeschlossen
servo_Neigung.attach(5);
servo_Neigung.write(neigung);
// Servo Schwenk ist an Pin 6 angeschlossen
servo_Schwenk.attach(6);
servo_Schwenk.write(schwenk);

}
// starte Ethernet Verbindung pinMode für die LED und den Server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("Server an IP: ");
Serial.println(Ethernet.localIP());
}

//buffer ist ein String, welcher die Clientdaten zwischenspeichert
String buffer = "";

void loop() {

// listen
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
//WICHTIG: client enthält Daten um die LED's zu steuern.
char c = client.read();
//WICHTIG: buffer String erweitern mit jedem loop Durchgang.
buffer+=c;
if (c == '\n' && currentLineIsBlank) {

// meta refresh tag hinzufügen, welcher alle 5 Sekunden den Browser refresht.
//client.println(F("<meta http-equiv=\"refresh\" content=\"5\">"));

//Senden an server
client.print(F("<html><title>OT4</title>"));
client.print(F("<center>"));
client.print(F("<body><h3>Bezeichnung / OT<br>Sony #183</h3></body>"));
client.print(F("<p/>Au&szlig;erhalb des g&uuml;ltigen Schwenk-Bereichs wird keine Aktion durchgef&uuml;hrt&excl;"));

// Test Button soll Aktion auslösen
client.print(F("<p><p/><form method=get><INPUT type =submit name=hoch value=&uarr;>"));
client.print(F("<p> <INPUT type =submit name=links value=&larr;> "));
client.print(F("&nbsp; <INPUT type =submit name=rechts value=&rarr;>"));
client.print(F("<p><INPUT type =submit name=runter value=&darr;>"));
client.print(F("&nbsp;<INPUT type =\"radio\" name =\"status\" value =\"1\"checked>1 Grad"));
client.print(F("<INPUT type =\"radio\" name =\"status\" value =\"5\">5 Grad"));
client.print(F("<INPUT type =\"radio\" name =\"status\" value =\"10\">10 Grad</form>"));
client.print(F("</center>"));

break;
}

if (c == '\n') {
buffer = "";
currentLineIsBlank = true;
}
else if (c == '\r') {

/*Winkelwerte auslesen
* WICHTIG: durchsucht den buffer String nach der Charfolge und falls vorhanden
* wird Code ausgeführt.7 */

if(buffer.indexOf("GET /?status=1")>=0){
Serial.println("Winkel 1");
//digitalWrite(led,HIGH);
}
if(buffer.indexOf("GET /?status=5")>=0){
Serial.println("Winkel 5");
//digitalWrite(led,HIGH);
}
if(buffer.indexOf("GET /?status=10")>=0){
Serial.println("Winkel 10");
//digitalWrite(led,HIGH);
}

/*Hoch
* WICHTIG: durchsucht den buffer String nach der Char-
* folge "GET /?Hoch" und falls vorhanden
* wird Code ausgeführt.
*/
if(buffer.indexOf("GET /?hoch")>=0){
Serial.println("Hoch");
//digitalWrite(led,HIGH);
}
/* Runter
* WICHTIG: durchsucht den buffer String nach der
* Charfolge "GET /?Runter" und falls vorhanden
* wird Code ausgeführt.
*/
if(buffer.indexOf("GET /?runter")>=0){
Serial.println("Runter");
//digitalWrite(led,LOW);
}
/* Links
* WICHTIG: durchsucht den buffer String nach der
* Charfolge "GET /?Links" und falls vorhanden
* wird Code ausgeführt.
*/
if(buffer.indexOf("GET /?links")>=0){
Serial.println("Links");
//digitalWrite(led,LOW);
}
/* Rechts
* WICHTIG: durchsucht den buffer String nach der
* Charfolge "GET /?Rechts" und falls vorhanden
* wird Code ausgeführt.
*/
if(buffer.indexOf("GET /?Rechts")>=0){
Serial.println("Rechts");
//digitalWrite(led,LOW);
}

buffer = "";
}
}
}
// Gibt dem Webbrowser Zeit, die Daten zu erhalten.
delay(10);

// Schließe Connection:
client.stop();
Serial.println("client disonnected");
}



}

Folgende Dinge klappen noch nicht und da benötige ich Hilfe:

Wie kann ich die Winkelwerte in dem String des Browsers auslesen, wenn die nicht am Anfang stehen?
Wenn ich die Buttons nicht zuerst darstelle, sondern so wie ich es in dem Bild gerne hätte, ist die Rückmeldung der Buttons nach den Radio-Button umgekehrt:
Also erst der Status und dann irgendwann der Befehl "Rechts" oder "Links".
Dadurch klappt das Auswerten nicht.

Bei jedem Klick springt der Radiobutton wieder erneut auf 1Grad.
Er sollte auf der Einstellung bleiben, die gewählt wurde.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.01.2020, 16:28
Beitrag #8
RE: Webserver soll 2 Servos (Schwenk-Neiger) steuern - Winkelauswahl aus Radiobutton
(05.01.2020 16:20)kiximek schrieb:  Bei jedem Klick springt der Radiobutton wieder erneut auf 1Grad.
Er sollte auf der Einstellung bleiben, die gewählt wurde.

Ja is doch klar, du sendest immer die selbe Webseite und da steht "checked" beim ersten input type radio.

Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Webseite auf Webserver hochladen DO3GE 20 370 08.09.2020 22:35
Letzter Beitrag: DO3GE
  Labornetzteil mit Arduino steuern Dieter_T 30 1.398 04.09.2020 20:30
Letzter Beitrag: Dieter_T
  Beschattung fuer Glasdach steuern Ecki 4 379 31.08.2020 17:32
Letzter Beitrag: hotsystems
  Neo-Pixel über Mail-Inhalte steuern weserjunge 7 477 21.07.2020 19:24
Letzter Beitrag: Tommy56
  bekomme kein Variablenwert der im String sein soll Willmi64 4 449 06.06.2020 11:41
Letzter Beitrag: Willmi64
  Arduino Webserver Hinweis PopUp kiximek 1 329 31.05.2020 19:41
Letzter Beitrag: Tommy56
  Betätigung d. Sensors soll Steuerung abschalten und nur über Taster einschalten Floydi 12 1.199 26.04.2020 07:47
Letzter Beitrag: MicroBahner
  10 Servos an MEGA 2560 pins 4 - 13 Eddy 15 1.266 10.04.2020 15:08
Letzter Beitrag: Tommy56
  Probleme Webserver - Servos fahren unkontrolliert kiximek 10 1.049 07.04.2020 21:45
Letzter Beitrag: kiximek
  Webserver URL nach Eingaben zurücksetzen kiximek 9 1.273 17.01.2020 17:23
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste