Hi NG, ich möchte LED's mit dem Arduino UNO und dem Ethernet-Shield per HTML dimmen. Leider habe ich im Internet keinen passenden Beispielcode gefunden. Wer kann mit weiterhelfen? Diese Frage hatte ich versehendlich im Blog für Projekte und Code gepostet. Gruß Andy
Andreas Ahrens schrieb: > Diese Frage hatte ich versehendlich im Blog für Projekte und Code > gepostet. Danke für die Benachrichtigung. Ist bereits gelöscht.
Hallo Andreas, ich könnte sicherlich irgendwo noch irgendeinen Beispielcode zusammensuchen, aber ich versuche dir erstmal einen High-Level Überblick über das zu geben was du -meiner Meinung nach- vor hast. 1. Der Arduino muss das Ethernet-Shield initialisieren. Hierbei muss er entweder eine definierte IP-Adresse und Subnetzmaske (und evtl. MAC-Adresse) bekommen, oder aber er bekommt diese per DHCP (weiß nicht ob die gängigen Ethernet-ICs (in dem Fall wohl so ein WiznetXXX) DHCP können). 2. Der Arduino muss auf eine Anfrage von eime Computer auf dem Port 80 (http) antworten. Dabei antwortet er (ganz grob) mit sowas wie 'http 200 OK' und dann dem html-Code:
1 | <form action="http://192.168.123.1.1/led=123> |
2 | <input>Led-Wert: </input> |
3 | </form> |
Sobald du also mit dem Computer auf die Seite gehst siehst du ein Formular wo du die Helligkeit eingeben kannst. 3. Kommt eine Abfrage die hintendran den Wert 'led=XXX' hat so schneidet der Arduino den Wert aus der Abfrage raus und setzt die LED entsprechend. (danach bitte wieder sowas wie 'http 200 OK' und irgendein bisschen html-blubber) Ich hoffe du weißt damit mal aus welchen Teilen dein Projekt besteht. Teil 2 kannst du wahrscheinlich sogar weg lassen. Thomas PS: Eine LED mit html-Code zu steuern ist ziemlich komisch formuliert, denn html ist nur eine Seitenbeschreibungssprache. Was du hier eigentlich machst ist das http-Protokoll zu missbrauchen indem du die URL entsprechend anpasst und auswertest.
Hi Thomas, wie müsste das Ganze aussehen, wenn ich einen Schieberegler (range) benutzen möchte? Mir geht es darum, den eingestellten Wert ins "analogWrite()" zu bekommen. Gruß Andy
:
Bearbeitet durch User
Andreas Ahrens schrieb: > wie müsste das Ganze aussehen, wenn ich einen Schieberegler (range) > benutzen möchte? Mir geht es darum, den eingestellten Wert ins > "analogWrite()" zu bekommen. Das wird nicht gehen. analogWrite hat eine ganz andere Aufgabe. Dir scheint irgendwie nicht klar zu sein, dass du auf dem Arduino so etwas wie einen rudimentären Web-Server aufsetzen musst, damit ein Browser damit was anfangen kann. Ein Browser macht von sich aus gar nichts. Ein Browser fordert vom Server "Dateien" an und stellt den Inhalt, den er zurück bekommt, dar. Klickt der Benutzer auf irgend etwas, dann fordert der Browser vom Server erneut eine Datei an, wobei er bei seiner Anfrage zum Beispiel die aktuellen Werte einer angezeigten Form (Formular) einbaut. D.h. mit 'mal eben schnell machen' ist da nichts. Das musst du als Programmierer lernen, wie das prinzipiell funktioniert. Und zwar sowohl auf Browserseite wie auch auf Serverseite. Mit dem Arduino-typischen Nichtwissen kommt man da nicht weit. Wenn du Glück hast, findest du irgendwo einen rudimentären HTML-Server für Arduino, dem man einen Callback unterjubeln kann, an den du dich hängen kannst. Aber selbst dann ist es mehr als vorteilhaft, wenn man versteht wie das System Browser-Server zusammenarbeitet.
:
Bearbeitet durch User
Hi Thomas, ich möchte dazu ein Ethernet-Shield benutzen. Das hätte ich vielleicht vorher sagen müssen. Gruß Andy
:
Bearbeitet durch User
Andreas Ahrens schrieb: > Hi Thomas, > > ich möchte dazu ein Ethernet-Shield benutzen. Das hätte ich vielleicht > vorher sagen müssen. > > Gruß > Andy Nee, das wussten wir schon. bzw. konnten uns das denken.... Mein Vorredner sagte HTML Server ... Ich sage HTTP Server. Aber nichts desto Trotz: Ein solcher muss auf dem Arduinolein laufen.
Ulrich F. schrieb: > Mein Vorredner sagte HTML Server ... > Ich sage HTTP Server. Du hast natürlich recht. Mein Fehler. Falsche Bezeichnung. Auch wenn unterm Strich nichts anders raus kommt - ein entsprechender Server muss her.
:
Bearbeitet durch User
Andreas Ahrens schrieb: > Hi, > > der soll auf dem Arduino laufen. Ja. Schön. Sollen wir jetzt für dich auch noch nach einem Web-Server googeln? (Schon komisch die Arduino Gemeinde)
Nachvolgende Seite beschreibt ein Projekt wie man über eine Webseite LED's ein und ausschalten kann. http://jleopold.de/2010/08/10/arduino-als-webserver/
Andreas Ahrens schrieb: > das habe ich schon ohne Erfolg getan. Also komm.... http://arduino.cc/en/Tutorial/WebServer
Andreas Ahrens schrieb: > das habe ich schon ohne Erfolg getan Erster Treffer bei Google suche "arduino webserver": http://arduino.cc/en/Tutorial/WebServer
Linksammler schrieb: > Andreas Ahrens schrieb: >> das habe ich schon ohne Erfolg getan. > > Also komm.... > > http://arduino.cc/en/Tutorial/WebServer Den Code hab ich auch gerade studiert. Da müsste er allerdings erst mal auf die Idee kommen, den String aus den Einzelcharactern zusammen zu setzen und den zusammengesetzten String hier
1 | ....
|
2 | while (client.connected()) { |
3 | if (client.available()) { |
4 | char c = client.read(); |
5 | Serial.write(c); |
6 | // if you've gotten to the end of the line (received a newline
|
7 | // character) and the line is blank, the http request has ended,
|
8 | // so you can send a reply
|
9 | if (c == '\n' |
sich näher anzusehen und zu analysieren, um rauszufinden was der Browser eigentlich von ihm will. Das ist allerdings nicht zumutbar.
:
Bearbeitet durch User
Karl Heinz schrieb: > Das ist allerdings nicht zumutbar. Man könnte allerdings auch einfach das Beispiel so wie es ist mal in Betrieb nehmen. Da das Beispiel auf der Seriellen mitschreibt, wie die Anfragen des Browsers so aussehen, könnte man sich da mal einen Einblick verschaffen, wie die Sache eigentlich funktioniert. <Sarkasmus on> Aber auch das ist in der Arduino Welt nicht zumutbar, mal etwas Eigeninitiative aufzubringen und sich selbst Wissen anzueignen. <Sarkasmus off>
Für ein Beispiel muss man nichtmal ins Internet, das wird doch gleich mit installiert: Datei/Beispiele/Ethernet/Webserver. Für das Smartphone kann ich die NetIO App empfehlen, kostet ein paar € ist aber sehr gut. Es gibt eine Seite vom Entwickler mit einigen Beispielprojekten, da sind auch Arduino Projekte bei: http://netio.davideickhoff.de/de/projects/
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.