<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="da">
	<id>https://holstebro-htx.dk/index.php?action=history&amp;feed=atom&amp;title=WeMOS_LED-eksempel</id>
	<title>WeMOS LED-eksempel - Versionshistorie</title>
	<link rel="self" type="application/atom+xml" href="https://holstebro-htx.dk/index.php?action=history&amp;feed=atom&amp;title=WeMOS_LED-eksempel"/>
	<link rel="alternate" type="text/html" href="https://holstebro-htx.dk/index.php?title=WeMOS_LED-eksempel&amp;action=history"/>
	<updated>2026-06-04T11:47:10Z</updated>
	<subtitle>Versionshistorie for denne side i Holstebro HTX Wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://holstebro-htx.dk/index.php?title=WeMOS_LED-eksempel&amp;diff=1264&amp;oldid=prev</id>
		<title>Bar: 1 version importeret</title>
		<link rel="alternate" type="text/html" href="https://holstebro-htx.dk/index.php?title=WeMOS_LED-eksempel&amp;diff=1264&amp;oldid=prev"/>
		<updated>2022-10-11T11:42:56Z</updated>

		<summary type="html">&lt;p&gt;1 version importeret&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny side&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{template:WeMOS-software}}&lt;br /&gt;
LED-eksemplet er hentet fra esp8266learning.com&amp;lt;ref&amp;gt;[http://www.esp8266learning.com/wemos-webserver-example.php Webserver Eksempel]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ideen med koden er at man kan tænde og slukke en LED ved at klikke på et link på den side WeMOS sætter op. Den samlede kode ser ud som følger, og skal kun have angivet et netværk med password for at fungere:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
const char* ssid = &amp;quot;ssid name&amp;quot;;&lt;br /&gt;
const char* password = &amp;quot;ssid password&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
int ledPin = D5;&lt;br /&gt;
WiFiServer server(80);&lt;br /&gt;
 &lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  delay(10);&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
  pinMode(ledPin, OUTPUT);&lt;br /&gt;
  digitalWrite(ledPin, LOW);&lt;br /&gt;
 &lt;br /&gt;
  // Connect to WiFi network&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.print(&amp;quot;Connecting to &amp;quot;);&lt;br /&gt;
  Serial.println(ssid);&lt;br /&gt;
 &lt;br /&gt;
  WiFi.begin(ssid, password);&lt;br /&gt;
 &lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;WiFi connected&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
  // Start the server&lt;br /&gt;
  server.begin();&lt;br /&gt;
  Serial.println(&amp;quot;Server started&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
  // Print the IP address&lt;br /&gt;
  Serial.print(&amp;quot;Use this URL : &amp;quot;);&lt;br /&gt;
  Serial.print(&amp;quot;http://&amp;quot;);&lt;br /&gt;
  Serial.print(WiFi.localIP());&lt;br /&gt;
  Serial.println(&amp;quot;/&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void loop() {&lt;br /&gt;
  // Check if a client has connected&lt;br /&gt;
  WiFiClient client = server.available();&lt;br /&gt;
  if (!client) {&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  // Wait until the client sends some data&lt;br /&gt;
  Serial.println(&amp;quot;new client&amp;quot;);&lt;br /&gt;
  while(!client.available()){&lt;br /&gt;
    delay(1);&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  // Read the first line of the request&lt;br /&gt;
  String request = client.readStringUntil(&amp;#039;\r&amp;#039;);&lt;br /&gt;
  Serial.println(request);&lt;br /&gt;
  client.flush();&lt;br /&gt;
 &lt;br /&gt;
  // Match the request&lt;br /&gt;
  int value = LOW;&lt;br /&gt;
  if (request.indexOf(&amp;quot;/LED=ON&amp;quot;) != -1) {&lt;br /&gt;
    digitalWrite(ledPin, HIGH);&lt;br /&gt;
    value = HIGH;&lt;br /&gt;
  } &lt;br /&gt;
  if (request.indexOf(&amp;quot;/LED=OFF&amp;quot;) != -1){&lt;br /&gt;
    digitalWrite(ledPin, LOW);&lt;br /&gt;
    value = LOW;&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
  // Return the response&lt;br /&gt;
  client.println(&amp;quot;HTTP/1.1 200 OK&amp;quot;);&lt;br /&gt;
  client.println(&amp;quot;Content-Type: text/html&amp;quot;);&lt;br /&gt;
  client.println(&amp;quot;&amp;quot;); //  do not forget this one&lt;br /&gt;
  client.println(&amp;quot;&amp;lt;!DOCTYPE HTML&amp;gt;&amp;quot;);&lt;br /&gt;
  client.println(&amp;quot;&amp;lt;html&amp;gt;&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
  client.print(&amp;quot;Led pin is now: &amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
  if(value == HIGH) {&lt;br /&gt;
    client.print(&amp;quot;On&amp;quot;);  &lt;br /&gt;
  } else {&lt;br /&gt;
    client.print(&amp;quot;Off&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  client.println(&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
  client.println(&amp;quot;Click &amp;lt;a href=\&amp;quot;/LED=ON\&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; turn the LED on pin 5 ON&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
  client.println(&amp;quot;Click &amp;lt;a href=\&amp;quot;/LED=OFF\&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; turn the LED on pin 5 OFF&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
  client.println(&amp;quot;&amp;lt;/html&amp;gt;&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
  delay(1);&lt;br /&gt;
  Serial.println(&amp;quot;Client disconnected&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Etablering af serveren==&lt;br /&gt;
Det er beskrevet på [[WeMOS Server Connection]] hvordan forbindelsen til serveren oprettes.&lt;br /&gt;
&lt;br /&gt;
==Henvendelse fra client==&lt;br /&gt;
Det første der detekteres er om der en client der henvender sig. Det vil sige om der er en forespørgsel fra en webbrowser.&lt;br /&gt;
&lt;br /&gt;
Det sker i følgende kode:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
  // Check if a client has connected&lt;br /&gt;
  WiFiClient client = server.available();&lt;br /&gt;
  if (!client) {&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  // Wait until the client sends some data&lt;br /&gt;
  Serial.println(&amp;quot;new client&amp;quot;);&lt;br /&gt;
  while(!client.available()){&lt;br /&gt;
    delay(1);&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Den første del ser om der er en henvendelse, og hvis der ikke er, så afbrydes [[loop()]], så der ikke sker andet i koden.&lt;br /&gt;
&lt;br /&gt;
Hvis der så er en henvendelse, så afventes der at hele henvendelsen kommer.&lt;br /&gt;
&lt;br /&gt;
==Læsning af henvendelsen==&lt;br /&gt;
Når der er registreret en hel henvendelse, så læses request-linjen:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
  // Read the first line of the request&lt;br /&gt;
  String request = client.readStringUntil(&amp;#039;\r&amp;#039;);&lt;br /&gt;
  Serial.println(request);&lt;br /&gt;
  client.flush();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Resten af henvendelsen slettes med flush() metoden.&lt;br /&gt;
&lt;br /&gt;
==Hardware response på henvendelsen==&lt;br /&gt;
I de følgende kodelinjer læses hvad der står i henvendelsen til serveren (det der står i linket bliver til request-linjen):&lt;br /&gt;
&amp;lt;source lang = &amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
  // Match the request&lt;br /&gt;
  int value = LOW;&lt;br /&gt;
  if (request.indexOf(&amp;quot;/LED=ON&amp;quot;) != -1) {&lt;br /&gt;
    digitalWrite(ledPin, HIGH);&lt;br /&gt;
    value = HIGH;&lt;br /&gt;
  } &lt;br /&gt;
  if (request.indexOf(&amp;quot;/LED=OFF&amp;quot;) != -1){&lt;br /&gt;
    digitalWrite(ledPin, LOW);&lt;br /&gt;
    value = LOW;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Alt efter om der står LED=ON eller LED=OFF tændes eller slukkes lysdioden.&lt;br /&gt;
&lt;br /&gt;
Det skal her bemærkes at det i dette eksempel er en lysdiode forbundet til D5 der anvendes. Hvis man vil gøre det enklere og anvende den indbyggede LED på WeMOS D1 mini Pro, så skal man rette ledPin til D2, og man skal vende reaktion så ON skriver LOW og OFF skriver HIGH, fordi den indbyggede LED er forbundet til forsyningen og dermed skal den have det inverterede signal.&lt;br /&gt;
&lt;br /&gt;
==Side der vises==&lt;br /&gt;
Uanset om der bliver reageret i hardwaren, så giver webserveren en client response, der opbygger websiden. Det gøres med følgende kode:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
  // Return the response&lt;br /&gt;
  client.println(&amp;quot;HTTP/1.1 200 OK&amp;quot;);&lt;br /&gt;
  client.println(&amp;quot;Content-Type: text/html&amp;quot;);&lt;br /&gt;
  client.println(&amp;quot;&amp;quot;); //  do not forget this one&lt;br /&gt;
  client.println(&amp;quot;&amp;lt;!DOCTYPE HTML&amp;gt;&amp;quot;);&lt;br /&gt;
  client.println(&amp;quot;&amp;lt;html&amp;gt;&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
  client.print(&amp;quot;Led pin is now: &amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
  if(value == HIGH) {&lt;br /&gt;
    client.print(&amp;quot;On&amp;quot;);  &lt;br /&gt;
  } else {&lt;br /&gt;
    client.print(&amp;quot;Off&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  client.println(&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
  client.println(&amp;quot;Click &amp;lt;a href=\&amp;quot;/LED=ON\&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; turn the LED on pin 5 ON&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
  client.println(&amp;quot;Click &amp;lt;a href=\&amp;quot;/LED=OFF\&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; turn the LED on pin 5 OFF&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
  client.println(&amp;quot;&amp;lt;/html&amp;gt;&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koden printer HTML-kode til client, så webbrowseren der har foretaget client-henvendelsen kan vise noget fornuftigt.&lt;br /&gt;
==Referencer==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Kategori:WeMOS]]&lt;/div&gt;</summary>
		<author><name>Bar</name></author>
	</entry>
</feed>