Forum: Mikrocontroller und Digitale Elektronik Arduino - LED mit HTML-Code dimmen


von Andreas A. (andyah)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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.

von Thomas (Gast)


Lesenswert?

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.

von Andreas A. (andyah)


Lesenswert?

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
von Karl H. (kbuchegg)


Lesenswert?

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
von Andreas A. (andyah)


Lesenswert?

Hi Thomas,

ich möchte dazu ein Ethernet-Shield benutzen. Das hätte ich vielleicht 
vorher sagen müssen.

Gruß
Andy

: Bearbeitet durch User
von Ulrich F. (Gast)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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
von Andreas A. (andyah)


Lesenswert?

Hi,

der soll auf dem Arduino laufen.

Gruß
Andy

von Karl H. (kbuchegg)


Lesenswert?

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)

von Andreas A. (andyah)


Lesenswert?

Hi,

das habe ich schon ohne Erfolg getan.

Gruß
Andy

von Slartibartfaß (Gast)


Lesenswert?

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/

von Linksammler (Gast)


Lesenswert?

Andreas Ahrens schrieb:
> das habe ich schon ohne Erfolg getan.

Also komm....

http://arduino.cc/en/Tutorial/WebServer

von Max H. (hartl192)


Lesenswert?

Andreas Ahrens schrieb:
> das habe ich schon ohne Erfolg getan
Erster Treffer bei Google suche "arduino webserver":
http://arduino.cc/en/Tutorial/WebServer

von Karl H. (kbuchegg)


Lesenswert?

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
von Karl H. (kbuchegg)


Lesenswert?

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>

von Jojo S. (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.