Ethernet-switchar - med Arduino (2 / 5 steg)

Steg 2: Ethernet - med Arduino - Program



//Ethernet switch
//
Intro:
Detta kommer swich på och av utgångar via din mobila enhet.
Inga bilder eller länkar till bilder. CSS3 och HTML5 användning.
Om det fungerar med andra webbläsare, föreslår vi att Safari för bästa upplevelse.
//
Version: Web Server Ethernet byta Version 3,05
Författare: Claudio Vella - Malta
Ursprungliga koden från: http://bildr.org/2011/06/arduino-ethernet-pin-control/
Gjorde massa kommentarer för nybörjare.

ARDUINO 1.0 + ENDAST

#include < Ethernet.h >
#include < SPI.h >

////////////////////////////////////////////////////////////////////////
KONFIGURERA
////////////////////////////////////////////////////////////////////////

IP-manuella inställningar
byte ip [] = {192, 168, 1, 177}; Manuell inställning bara
byte gateway [] = {192, 168, 1, 254}; Manuell inställning bara
byte undernät [] = {255, 255, 255, 0}; Manuell inställning bara

om behöver ändra MAC-adressen (mycket sällsynt)
byte [mac] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

Ethernet-Port
EthernetServer server = EthernetServer(80); HTML-standardporten 80

Antal utgångar kommer för att stängas.
int outputQuantity = 8; När den läggs till bör outputLowest resultat inte överstiga 10

Den lägsta utgångsstiftet börjar vi från
int outputLowest = 2; Bör vara mellan 2 till 9
////////////////////////////////////////////////////////////////////////

Variabeldeklaration
int ljudut = 0;
booleska printLastCommandOnce = false;
booleska printButtonMenuOnce = false;
booleska initialPrint = sant;
Sträng allOn = "";
String allOff = "";
booleska läsning = false;
booleska readInput [10]. Skapa en boolesk matris för den maximala beloppet.

Början av programmet
void setup() {
Serial.BEGIN(9600);

Pins 10,11,12 & 13 används av ethernet shield
Ställ in stift som resultat
för (int var = outputLowest; var < outputLowest + outputQuantity; var ++) {
pinMode (varians, produktionen);
}

Ställa in IP-adressen. Kommentera bort det du inte behöver.
Ethernet.BEGIN(Mac); för DHCP-adress. (Adress ska skrivas till seriell.)
Ethernet.BEGIN (mac, ip, gateway, undernät); för manuell inställning. (Adress är den konfigurerade ovan.)

Server.BEGIN();
Serial.println(Ethernet.localIP());
}

void loop() {

lyssnar efter inkommande klienter, och bearbeta begäranden.
checkForClient();
}

void checkForClient() {

EthernetClient klient = server.available();

om (klient) {

en http-förfrågan avslutas med en tom rad
booleska currentLineIsBlank = sant;
booleska sentHeader = false;

samtidigt (client.connected()) {
om (client.available()) {

IF(!sentHeader) {
Skicka ett standard http-svarshuvud
client.println ("HTTP/1.1 200 OK");
client.println ("Content-Type: text/html");
client.println ("Connnection: Stäng");
client.println();
client.println ("<! DOCTYPE HTML > ");
client.println ("< head >");

Lägg till sida titel
client.println ("< title > Ethernet-switchar </title >");
client.println ("< meta namn = \"description\"innehåll = \"Ethernet Switching\"/ >");

lägga till en meta refresh-taggen, så webbläsaren drar igen var femte sekund:
client.println ("< meta http-equiv = \"refresh\"innehåll = \" 10; url = / \ ">");

Lägg till andra webbläsarkonfiguration
client.println ("< meta namn = \" apple-mobil-web-app-capable\ "innehåll = \"yes\">");
client.println ("< meta name=\"apple-mobile-web-app-status-bar-style\ "innehåll = \"default\">");
client.println ("< meta namn = \"viewport\"innehåll = \" bredd = enhet-bredd, användare-scalable = no\ "/ >");

att sätta in stilar data, vanligtvis finns i CSS-filer.
client.println ("< stil typ = \" text/css\ ">");
client.println("");

Detta anger hur sidan ska se ut grafiskt
client.println ("html {höjd: 100%;}");

client.println ("kroppen {");
client.println ("höjd: 100%;");
client.println ("marginal: 0;");
client.println ("font-family: helvetica, sans-serif;");
client.println ("- webkit-text-size-adjust: none;");
client.println("}");
client.println("");
client.println ("kroppen {");
client.println ("- webkit-bakgrund-storlek: 100% 21px;");
client.println ("bakgrundsfärg: #c5ccd3;");
client.println ("bakgrunden-bild:");
client.println ("- webkit-gradient(linear, left top, right top,");
client.println ("färg-stop(.75, transparent),");
client.println ("färg-stop(.75, rgba(255,255,255,.1)));");
client.println ("- webkit-bakgrund-storlek: 7px;");
client.println("}");
client.println("");
client.println (".Visa {");
client.println ("min-höjd: 100%;");
client.println ("overflow: auto;");
client.println("}");
client.println("");
client.println (".header-wrapper {");
client.println ("höjd: 44px;");
client.println ("font-weight: bold;");
client.println ("text-shadow: rgba(0,0,0,0.7) 0 - 1px 0;");
client.println ("border-top: solid 1px rgba(255,255,255,0.6);");
client.println ("border-bottom: solid 1px rgba(0,0,0,0.6);");
client.println ("färg: #fff;");
client.println ("bakgrunden-cologne: #8195af;");
client.println ("bakgrunden-bild:");
client.println ("- webkit-gradient(linear, left top, left bottom,");
client.println ("from(rgba(255,255,255,.4)),");
client.println("to(RGBA(255,255,255,.05))),");
client.println ("- webkit-gradient(linear, left top, left bottom,");
client.println ("from(transparent),");
client.println("to(RGBA(0,0,64,.1)));");
client.println ("bakgrund-repeat: Upprepa inte;");
client.println ("bakgrund-position: högst upp till vänster, nederst till vänster,");
client.println ("- webkit-bakgrund-storlek: 100% 21px, 100% 22px;");
client.println ("- webkit-box-dimensionering: border-box;");
client.println("}");
client.println("");
client.println (".header-wrapper h1 {");
client.println ("text-align: center;");
client.println ("font-size: 20px;");
client.println ("line-height: 44px;");
client.println ("marginal: 0;");
client.println("}");
client.println("");
client.println (".group-wrapper {");
client.println ("marginal: 9px;");
client.println("}");
client.println("");
client.println (".group-wrapper h2 {");
client.println ("color: #4c566c;");
client.println ("font-size: 17px;");
client.println ("line-height: 0,8;");
client.println ("font-weight: bold;");
client.println ("text-shadow: #fff 0 1px 0;");
client.println ("marginal: 20px 10px 12px;");
client.println("}");
client.println("");
client.println (".group-wrapper h3 {");
client.println ("color: #4c566c;");
client.println ("font-size: 12px;");
client.println ("line-height: 1.");
client.println ("font-weight: bold;");
client.println ("text-shadow: #fff 0 1px 0;");
client.println ("marginal: 20px 10px 12px;");
client.println("}");
client.println("");
client.println (".group-wrapper tabell {");
client.println ("bakgrundsfärg: #fff;");
client.println ("- webkit-border-radius: 10px;");

client.println ("- moz-border-radius: 10px;");
client.println ("- khtml-border-radius: 10px;");
client.println ("border-radius: 10px;");

client.println ("font-size: 17px;");
client.println ("line-height: 20px;");
client.println ("marginal: 9px 0 20px;");
client.println ("border: 1px solid #a9abae;");
client.println ("stoppning: 11px 3px 12px 3px;");
client.println ("marginal-vänster: auto;");
client.println ("marginal-rätt: auto;");

client.println ("- moz-transform: scale(1);"); Kod för Mozilla Firefox
client.println ("- moz-transform-ursprung: 0 0;");

client.println("}");
client.println("");

Hur grön (på) LED ser ut
client.println (".green-cirkel {");
client.println ("display: block;");
client.println ("höjd: 23px;");
client.println ("bredd: 23px;");
client.println ("bakgrunden-cologne: #0f0;");
client.println ("bakgrundsfärg: rgba (60, 132, 198, 0,8);");
client.println ("- moz-border-radius: 11px;");
client.println ("- webkit-border-radius: 11px;");
client.println ("- khtml-border-radius: 11px;");
client.println ("border-radius: 11px;");
client.println ("marginal-vänster: 1px;");

client.println ("bakgrunden-bild: - webkit-gradient (linjär, 0% 0%, 0% 90%, från (rgba (46 184, 0, 0,8)), till (rgba (148, 255, 112,. 9)));
client.println ("gränsen: 2px solid #ccc;");
client.println ("- webkit-box-shadow: rgba (11 140, 27, 0,5) 0px 10px 16px;");
client.println ("- moz-box-shadow: rgba (11 140, 27, 0,5) 0px 10px 16px; / * FF 3.5 + * / ");
client.println ("box-shadow: rgba (11 140, 27, 0,5) 0px 10px 16px; / * FF 3.5 + * / ");

client.println("}");
client.println("");

Hur svarten (off) LED ser ut
client.println (".black-cirkel {");
client.println ("display: block;");
client.println ("höjd: 23px;");
client.println ("bredd: 23px;");
client.println ("bakgrunden-cologne: #040;");
client.println ("- moz-border-radius: 11px;");
client.println ("- webkit-border-radius: 11px;");
client.println ("- khtml-border-radius: 11px;");
client.println ("border-radius: 11px;");
client.println ("marginal-vänster: 1px;");
client.println ("- webkit-box-shadow: rgba (11 140, 27, 0,5) 0px 10px 16px;");
client.println ("- moz-box-shadow: rgba (11 140, 27, 0,5) 0px 10px 16px; / * FF 3.5 + * / ");
client.println ("box-shadow: rgba (11 140, 27, 0,5) 0px 10px 16px; / * FF 3.5 + * / ");
client.println("}");
client.println("");

Detta kommer att lägga bländning i båda lysdioderna
client.println (".glare {");
client.println ("position: släkting;");
client.println ("top: 1.");
client.println ("vänster: 5px;");
client.println ("- webkit-border-radius: 10px;");
client.println ("- moz-border-radius: 10px;");
client.println ("- khtml-border-radius: 10px;");
client.println ("border-radius: 10px;");
client.println ("höjd: 1px;");
client.println ("bredd: 13px;");
client.println ("stoppning: 5px 0;");
client.println ("bakgrundsfärg: rgba (200, 200, 200, 0,25);");
client.println ("bakgrunden-bild: - webkit-gradient (linjär, 0% 0%, 0% 95%, från (rgba (255, 255, 255, 0,7)), till (rgba (255, 255, 255, 0)));");
client.println("}");
client.println("");

Slutligen detta är slutet av stil data och rubrik
client.println ("</stil >");
client.println ("</head >");

nu skriver ut själva sidan
client.println ("< body >");
client.println ("< div class = \"view\">");
client.println ("< div class = \" huvud-wrapper\ ">");
client.println ("Ethernet-switchar på < h1 > </h1 >");
client.println ("</div >");
client.println ("< div class = \" grupp-wrapper\ ">");
client.println ("< h2 > Switch krävs utdata. </h2 >");
client.println();

Detta är för arduino att bygga sidan i farten.
sentHeader = sant;
}

char c = client.read();

om (reading & & c == "") {
läsning = false;
}

Serial.Print(c);

om (c == "?") {
läsning = sant; hittade den?, börja läsa info
}

IF(Reading) {
om (c == "H") {ljudut = 1;}
om (c == "L") {ljudut = 0;}
Serial.Print(c); skriva ut värdet av c för seriell kommunikation
Serial.Print(outp);
Serial.Print('\n');

Växla (c) {
fallet "2":
Lägg till kod här för att utlösa den 2
triggerPin (2, klient, ljudut);
bryta;
fallet "3":
Lägg till kod här för att utlösa på 3
triggerPin (3, klient, ljudut);
bryta;
fallet "4":
Lägg till kod här för att utlösa den 4
triggerPin (4, klient, ljudut);
bryta;
fallet "5":
Lägg till kod här för att utlösa den 5
triggerPin (5, klient, ljudut);
printHtml(client);
bryta;
fallet "6":
Lägg till kod här för att utlösa den 6
triggerPin (6, klient, ljudut);
bryta;
fallet "7":
Lägg till kod här för att utlösa den 7
triggerPin (7, klient, ljudut);
bryta;
fallet "8":
Lägg till kod här för att utlösa den 8
triggerPin (8, klient, ljudut);
bryta;
fall '9':
Lägg till kod här för att utlösa den 9
triggerPin (9, klient, ljudut);
bryta;
}

}

om (c == '\n' & & currentLineIsBlank) {
printLastCommandOnce = sant;
printButtonMenuOnce = sant;
triggerPin (777, klient, ljudut); Uppmaning att läsa in och skriva ut menyn. 777 används inte att uppdatera alla utgångar
bryta;
}
}
}

Ställ in variabler innan spännande
printLastCommandOnce = false;
printButtonMenuOnce = false;

allOn = "";
allOff = "";
client.println ("\n < h3 align = \"center\"> & Kopiera; Författare - Claudio Vella < br > Malta - oktober - 2012 < / h3 > ");
client.println ("</div > \n </div > \n </kropp > \n </html >");

Delay(1); de web webbläsare möjlighet att ta emot data
client.stop(); stänga anslutningen:

}

}

void triggerPin (int pin, EthernetClient klient, int ljudut) {
Slå på och av utgångar, läser utgångarna och skriver ut knapparna

Inställningen utgångar
om (pin! = 777) {
IF(outp == 1) {
digitalWrite (pin, hög);
}
IF(outp == 0) {
digitalWrite (pin, låg);
}
}
Uppdatera läsningen av utgångar
readOutputStatuses();

Tryck på knapparna
om (printButtonMenuOnce == true) {
printHtmlButtons(client);
printButtonMenuOnce = false;
}

}

skriver ut HTML-knapparna för att växla på/av kanaler
void printHtmlButtons (EthernetClient klient) {

Börja skapa HTML-tabellen
client.println("");
client.println ("< p >");
client.println ("< FORM >").
client.println ("< tabellkantlinjen = \"0\"align = \"center\">");

Starta utskriften knapp av knapp
för (int var = outputLowest; var < outputLowest + outputQuantity; var ++) {

SET-kommandot för alla på/av
allOn += "H".
allOn += var;
allOff += "L".
allOff += var;

Skriva ut början av rad
client.Print ("< tr > \n");

Tryck på knapparna
client.Print ("< td >< INPUT TYPE = \"button\"värde = \" Switch ON - Pin ");
client.Print(var);
client.Print ("\" onClick=\"parent.location='/? H").
client.Print(var);
client.Print ("" \ ">< /td > \n");

Utskrifter av knapparna
client.Print ("< td >< INPUT TYPE = \"button\"värde = \" Switch OFF - Pin ");
client.Print(var);
client.Print ("\" onClick=\"parent.location='/? L").
client.Print(var);
client.Print ("" \ ">< /td > \n");

Skriva ut första delen av cirklar eller lysdioder
om (readInput [var] == true) {
client.Print ("< td >< div class =" grön cirkel ' >< div class = "bländande" >< / div >< / div >< /td > \n ");
} annat
{
client.Print ("< td >< div class =" svart cirkel ' >< div class = "bländande" >< / div >< / div >< /td > \n ");
}

Skriva ut slutet av raden
client.Print ("< /tr > \n");
}

Skrivs ut på alla stift knappen
client.Print ("< tr > \n < td >< INPUT TYPE = \"button\"värde = \" slå på alla stift");
client.Print ("\" onClick=\"parent.location='/?");
client.Print(allOn);
client.Print ("" \ ">< /td > \n");

Utskrifter av alla stift knappen
client.Print ("< td >< INPUT TYPE = \"button\"värde = \" Stäng av alla stift");
client.Print ("\" onClick=\"parent.location='/?");
client.Print(allOff);
client.Print ("" \ ">< /td > \n < td >< /td > < /tr > \n \n");

Stänga den tabellen och form
client.println ("</table >");
client.println ("</FORM >");
client.println ("< /p >");

}

Läsa utdata status
void readOutputStatuses() {
för (int var = outputLowest; var < outputLowest + outputQuantity; var ++) {
readInput [var] = digitalRead(var);
Serial.Print(readInput[var]);
}

}

Se Steg
Relaterade Ämnen

Smarta hem med Arduino Ethernet shield och Teleduino (med web app)

Detta projekt är en enkel lösning för dem som vill ha en smart-home system men inte har en stor budget och för lat de som inte vill komma från sängen till släcker belysningen av eller på.Det är också projektera av en high school student för sitt slut...

Mäta temperaturen med Arduino Ethernet + DS18B20 + Thingspeak

Hej allaHär kommer jag låta dig veta hur till läsa temperatur via DS180B20 sensor och Arduino Ethernet och skicka data till Thingspeak. Du kan komma åt min Thingspeak sida här:https://thingspeak.com/Channels/25037Jag har använt min gamla instructable...

Bildskärmsmenyn ljud ATM-7 Smartphone talaren med Arduino och Blynk

Dessa dagar finns det flera sätt att genomföra flera zoner ljudet med smartphone baserad kontroll men de flesta är begränsade till ett par zoner eller kräver dyra egna rutor i varje läge (Hej! Sonos). En talare väljare ansluten till en mottagare med...

IoT vägguttag med Arduino och ESP8266

I detta instructable, jag visa dig hur du lägger till förbättrad tillgänglighet, intelligens och anslutning till ett vanligt vägguttag. Detta görs med en kombination av mikrokontroller, Arduino, olika sensorer, ESP8266 och en blandning av programvaru...

Programming ESP8266 ESP-12naE NodeMCU v1.0 med Arduino IDE till trådlös Temperaturlogger

Tillbaka till sena 2014 och tidig 2015, din verkligen kom överdenna fiffiga WiFi-Chip ESP8266 (ESP-01) och har till strid bland de inkonsekventa dokumentationer från olika källor. För närvarande sporre dokumenterade han sin frustration (fynd) som en...

Bänk PSU strömförsörjning från gamla ATX med Arduino och LCD-skärm

Hej alla och Välkommen till min första Instructable.Jag har alltid velat en bänk PSU för enkel åtkomst till en strömkälla, och något som jag kan lita på när du arbetar med olika projekt. Jag ville ha ett NÄTAGG som:• ger 12v och 5v 3.3V utgångar• ger...

IPhone Universal Learing Remote med Arduino

Hej och Välkommen till min första Instructable.Jag vet inte om dig, men jag kan aldrig hitta fjärrkontrollen för TV: N. Det verkar alltid försvinna när jag behöver det och sedan bara upp dagar senare inklämd inuti soffan av en av barnen. En sak jag a...

Hemautomation med Arduino

I detta Instructable kommer jag försöka förklara hur man skapar en hemautomation server som har möjlighet att tillåta vanliga elektriska hushållsartiklar att koppla in till en gemensam grenuttag 5-vägs 240 VAC/120VAC. I min design har jag inkluderat...

Flera fermenteren temperaturkontroll med Arduino

Temperaturkontroll anses ofta vara en av de topp fem stegen mot brygga bättre öl. (http://beerandwinejournal.com/10-better-1/) Det finns många metoder för att hålla jäsande vört vid optimala temperaturer från inslagning en damejeanne i en filt att hå...

DIY Webserver med Arduino Mega 2560

i detta DIY projekt, vi gör oss själva en liten webbserver med W5100 sköld och arduino mega 2560,Låt oss få oss själva började,Förbereda alla delar...Steg 1: De delar som behövs för detta DIY 1. Arduino Mega 25602. W5100 Ethernet shield3. Lan-kabel4....

Fjärrstyrda webkamera med Arduino, SensorMonkey, jQuery och Justin.tv

webb-aktivera din interaktiva sensorer över skrivbordet, smartphone och tablet enheter.Denna handledning beskriver i detalj hur du använder tjänsten gratis SensorMonkey till styra en pan och tilt webbkamera ansluten till en Arduino använder inget ann...

Uber Home Automation med Arduino & Pi

[REDIGERA] Jag skapade ett forum för att samarbeta på gateway kod.http://homeautomation.proboards.com/Board/2/openha...För några år sedan, blev jag en hundägare för första gången. Kändes inte som lämnar Cody i kenneln ensam hela dagen. Jag hade en we...

Hur man gör en mobiltelefon och dator kontrolleras 3D tryckta Robot med Arduino - IoBot.

Om du letar efter ett sätt att kontrollera en Arduino baserade enheter, kommer att denna anvisning Visa dig hur man gör det genom att bygga enkla robot.IoBot kan styras med mobil och dator ansökan via LAN eller USB-kabel. Programmet körs på Android,...

Hur man gör ett larmsystem med Arduino

Med Arduino är verkligen möjligt att göra komplexa projekt, särskilt genom användning av Internet, kan du genom de olika Shield tillgänglig för mikro-controller. I denna artikel kommer vi se hur man gör en professionell larmsystem med Arduino.Detta s...

IoT mätare med Arduino, Yaler & IFTTT

Hur man bygger en webbaktiverad, Arduino-baserad IoT mätare med en REST API, och ansluta den till IFTTT.com mash-up-plattformen, via Yaler.net relä service *.Vad är spännande med detta? Med Maker kanalstöder IFTTT anpassade Webhooks, för att integrer...

Google väder på grafisk display med Arduino

i detta projekt, jag använder en Arduino styrelsen för att Visa prognos över vädret från Google vädertjänst på en VGA-skärm. Displayen är uppenbarligen grafiskt, med ikoner och färgglad text. Det är en av de prylar som jag velat ha länge nu-en väderp...

KOMMA igång med ARDUINO #5

Hej, ledsen för förseningen av denna handledning. Här i denna tutorial kommer jag lära dig hur man kontrollerar två ledde med Arduino. detta är den grundläggande principen om trafikljus system. Där lätt förändringar från en färg till andra färg efter...

DIY Facebook anmälaren med Arduino - Arduino Facebook Notifier (v.0.1.1) - öppna källkodsprojekt

för en första gången projektet detta är ganska imponerande - Arduino forummedlem Apolikamixitos har publicerat Detaljer för hans öppen Facebook status anmälaren. Det kommer att varna dig för nya meddelanden, meddelanden eller vänförfrågningar med hjä...

LCD-avståndsmätning med Arduino

Och efter att publicera upp några robotic tutorials, beslöt jag att lägga mer i detalj om hur sensorerna fungerar. Att börja med jag välja en ultrasonic sensor och en Arduino som mikro-controller.Detta Instructable är enbart för förvärvsinkomsten får...