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
  Webserver URL nach Eingaben zurücksetzen kiximek 9 779 17.01.2020 17:23
Letzter Beitrag: Tommy56
  wie kann ich ausgangspins aus einem array steuern? uwe.z 4 570 04.11.2019 21:46
Letzter Beitrag: Holzauge
Photo Technisat Receiver mit Arduino steuern Beans 0 493 29.09.2019 15:39
Letzter Beitrag: Beans
  LEDs mit Touchscreen steuern Mr_Martin 5 855 08.09.2019 22:55
Letzter Beitrag: georg01
  Motor mit Ultraschall steuern matzesims 11 1.220 28.08.2019 10:40
Letzter Beitrag: hotsystems
  kRPC mit Arduino steuern ? comfan 3 708 26.02.2019 22:19
Letzter Beitrag: Tommy56
  Gui um Relais zu Steuern shortcut 7 1.748 03.11.2018 00:21
Letzter Beitrag: Fips
  PHP WINDOWS XAMPP ARDUINO UNO SERVO steuern über Serielle Verbindung tr3 1 1.104 21.08.2018 21:59
Letzter Beitrag: georg01
  Pioneer mit IRremote steuern ricowei 6 1.732 29.07.2018 13:05
Letzter Beitrag: ricowei
  4dig 7seg LED Helligkeit steuern daja64 5 1.705 18.02.2018 10:38
Letzter Beitrag: Tommy56

Gehe zu:


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