Das Programm "baut" eine HTML-Seite mit der eine Ampel händisch geschaltet werden kann.
So sieht es aus:
Nach dem Start wird die zugewiesenen IP im Seriellen Monitor angezeigt:
Benötigte Bauteile:
- 1 rote LED
- 1 grüne LED
- 1 gelbe LED
- 3 Widerstände 220 Ω
- Leitungsdrähte
Beachte die ➨Vorwiderstände verschiedener LEDs
Baue die Schaltung auf:
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)
Vorbereitungen:
Installiere mit dem Boardverwalter das passende Board:
Benötigte Bibliothek:
Binde die benötigte Bibliothek ein und definiere die Variablen.
# include "WiFiNINA.h"
int ROT = 5;
int GELB = 6;
int GRUEN = 7;
// Router: Name des Routers
// Passwort: WLAN-Passwort
char Router[] = "Router_SSID";
char Passwort[] = "xxxxxxxx";
// festeIP = false -> IP-Adresse über DHCP vergeben
// festeIP = true -> IP festlegen
bool festeIP = false;
// feste IP
IPAddress ip(192, 168, 1, 200);
// Netzwerkstatus
int status = WL_IDLE_STATUS;
WiFiServer server(80);
WiFiClient client = server.available();
Der setup-Teil:
void setup()
{
pinMode(ROT, OUTPUT);
pinMode(GELB, OUTPUT);
pinMode(GRUEN, OUTPUT);
Serial.begin(9600);
// statische IP
if (festeIP) WiFi.config(ip);
// Verbindung aufbauen
if (WiFi.status() == WL_NO_MODULE)
{
Serial.println(F("Verbindungsaufbau gescheitert!"));
}
Serial.print("Verbindung aufbauen mit ");
Serial.println(Router);
while (status != WL_CONNECTED)
{
status = WiFi.begin(Router, Passwort);
// Zeit für den Verbindungsaufbau
// wenn die Verbindung nicht zustandekommt -> Zeit vergrößern
delay(2000);
}
server.begin();
// IP des Servers/des verbunden Computers anzeigen
Serial.print("Server: ");
Serial.println(WiFi.SSID());
// IP des Arduinos anzeigen
if (festeIP) Serial.print("Statische IP Adresse Arduino: ");
else Serial.print("IP Adresse Arduino DHCP: ");
Serial.println(WiFi.localIP());
}
Der loop-Teil. Beachte die Kommentare.
void loop()
{
// auf Clienten warten ...
client = server.available();
if (client)
{
String SchaltungLesen;
// solange der Client verbunden ist ...
while (client.connected())
{
if (client.available())
{
// Anforderung vom Clienten lesen ...
char Zeichen = client.read();
// return (\n) gesendet
if (Zeichen == '\n')
{
// wenn der String SchaltungLesen leer ist
if (SchaltungLesen == "")
{
/*
HTML-Seite aufbauen
die folgenden Anweisungen müssen
mit print oder println gesendet werden
println "verschönert" den Quelltext
(erzeugt einen Zeilenumbruch im Quelltext)
" müssen mit \ maskiert werden " -> \"
*/
// HTML-Seite aufbauen
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
// Leerzeile zwingend erforderlich
client.println();
client.println("<!doctype html>");
client.println("<html>");
client.println(F("<body>"));
client.println("<h2>Ampel mit WiFi-Modul schalten</h2>");
client.println("<hr />");
client.println("<table><tr>");
// Button rot ein
client.print("<td><input style='font-size:14pt;'");
client.print("font-weight:bold;");
client.print(" background-color:#FF6565;");
client.print(" width:200px; cursor:pointer;");
client.print(" border-radius:5px;border: 2px solid black;'");
client.print(" type='button'");
client.println(" onClick=\"location.href='RotEin'\"");
client.println(" value='rot einschalten'>");
client.println("</td>");
// Button rot aus
client.print("<td><input style='font-size:14pt;");
client.print("font-weight:bold;");
client.print(" background-color:white;");
client.print(" width:200px; cursor:pointer;");
client.print(" border-radius:5px;border: 2px solid black;'");
client.print(" type='button'");
client.println(" onClick=\"location.href='RotAus'\"");
client.println(" value='rot ausschalten'>");
client.println("</td></tr>");
// Button gelb ein
client.print("<td><input style='font-size:14pt;");
client.print("font-weight:bold;");
client.print(" background-color:#FFFB65;");
client.print(" width:200px; cursor:pointer;");
client.print(" border-radius:5px;border: 2px solid black;'");
client.print(" type='button'");
client.println(" onClick=\"location.href='GelbEin'\"");
client.println(" value='gelb einschalten'>");
client.println("</td>");
// Button gelb aus
client.print("<td><input style='font-size:14pt;");
client.print("font-weight:bold;");
client.print(" background-color:white;");
client.print(" width:200px; cursor:pointer;");
client.print(" border-radius:5px;border: 2px solid black;'");
client.print(" type='button'");
client.println(" onClick=\"location.href='GelbAus'\"");
client.println(" value='gelb ausschalten'>");
client.println("</td></tr>");
// Button grün ein
client.print("<td><input style='font-size:14pt;");
client.print("font-weight:bold;");
client.print(" background-color:#76FA5F;");
client.print(" width:200px; cursor:pointer;");
client.print(" border-radius:5px;border: 2px solid black;'");
client.print(" type='button'");
client.println(" onClick=\"location.href='GruenEin'\"");
client.println(" value='grün einschalten'>");
client.println("</td>");
// Button grün aus
client.print("<td><input style='font-size:14pt;");
client.print("font-weight:bold;");
client.print(" background-color:white;");
client.print(" width:200px; cursor:pointer;");
client.print(" border-radius:5px;border: 2px solid black;'");
client.print(" type='button'");
client.println(" onClick=\"location.href='GruenAus'\"");
client.println(" value='grün ausschalten'>");
client.println("</td></tr>");
client.println("</table>");
client.println("<hr />");
// IPs anzeigen
client.print("<b>Eigene IP: ");
client.print(client.remoteIP());
client.print("</b>");
client.print("<br><b>IP Arduino: ");
client.print(WiFi.localIP());
client.print("</b>");
client.println("</body>");
client.println("</html>");
// HTTP-Antwort endet mit neuer Zeile
client.println();
// Seite vollständig geladen -> loop verlassen
break;
}
// wenn SchaltungLesen nicht leer ist -> Inhalt löschen
else
{
SchaltungLesen = "";
}
}
// bei einem anderen Zeichen als return (\r)
// -> Zeichen dem String SchaltungLesen hinzufügen
else if (Zeichen != '\r')
{
SchaltungLesen += Zeichen;
}
// indexOf überprüft, ob die Zeichenfolge im String SchaltungLesen enthalten ist
if (SchaltungLesen.indexOf("RotEin") > 0) digitalWrite(ROT, HIGH);
if (SchaltungLesen.indexOf("RotAus") > 0) digitalWrite(ROT, LOW);
if (SchaltungLesen.indexOf("GelbEin") > 0) digitalWrite(GELB, HIGH);
if (SchaltungLesen.indexOf("GelbAus") > 0) digitalWrite(GELB, LOW);
if (SchaltungLesen.indexOf("GruenEin") > 0) digitalWrite(GRUEN, HIGH);
if (SchaltungLesen.indexOf("GruenAus") > 0) digitalWrite(GRUEN, LOW);
}
}
client.stop();
}
}
Verwandte Anleitungen:
- Datum und Zeit mit dem NTP-Protokoll anzeigen
- DHT11/DHT22 - Wetterstation WiFi
- LEDs mit dem UDP-Protokoll über WLAN im lokalen Netzwerk schalten
- Lottozahlen mit WiFi und NTP
- Ampel mit Arduino WiFi und Bluetooth schalten
Letzte Aktualisierung: