Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SPI.h>
- #include <Ethernet.h>
- #define LED1 3
- #define LED2 5
- byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; //MAC adresa
- IPAddress ip(192, 168, 1, 177); //nahradna IP
- EthernetServer server(80); //vytvorenie objektu pre HTTP(80) server
- void setup() {
- Serial.begin(9600); //seriova linka pre debugovacie ucely
- pinMode(LED1, OUTPUT);
- pinMode(LED2, OUTPUT);
- if(!Ethernet.begin(mac)) //ak sa nepodari nacitat IP cez DHCP
- Ethernet.begin(mac, ip); //nastavime ju na pevno
- server.begin(); //spustime pocuvanie servera na poziadavky klientov
- Serial.print("Server ma IP adresu ");
- Serial.println(Ethernet.localIP());
- }
- void loop(){
- String buffer=""; //buffer pre prijimanie znakov
- char c; //premenna pre nacitanie znaku
- EthernetClient client = server.available(); //ak server detegoval nejake prichadzajuce spojenie, vytvori klienta pre odosielanie dat
- while (client.connected()) { //pokial je klient pripojeny
- if(client.available()){ //ak este existuju data poslane od klienta
- c=client.read(); //nacitaj jeden znak z tychto dat
- if(c!='\n') buffer+=c; //ak to nie je znak konca riadku, pridaj ho do buffra
- else { //ak to je znak konca riadku
- if(buffer.indexOf('\r')==0) { //zisti, ci pred tym prijaty znak \r v buffri je na prvom mieste (index 0)
- client.println("HTTP/1.1 200 OK"); //posli HTTP response
- client.println("Content-Type: text/html");
- client.println("Connection: close");
- client.println();
- client.println("<!DOCTYPE HTML>");
- client.println("<html>");
- client.println("<head>");
- client.println("<meta charset=\"UTF-8\">");
- client.println("<title>Ovládanie LED</title>");
- client.println("</head>");
- client.println("<body>");
- client.println(" <form method=\"GET\">");
- client.println(" <label for=\"led1\">LED1:</label>");
- client.println(" <input type=\"number\" name=\"led1\" min=\"0\" max=\"255\" id=\"led1\"><br>");
- client.println(" <label for=\"led2\">LED2:</label>");
- client.println(" <input type=\"number\" name=\"led2\" min=\"0\" max=\"255\" id=\"led2\"><br>");
- client.println(" <input type=\"Submit\">");
- client.println(" </form>");
- client.println("</body>");
- client.println("</html>");
- client.stop();
- }
- else {
- if(buffer.startsWith("GET")){
- analogWrite(LED1,getInt(buffer,"led1"));
- analogWrite(LED2,getInt(buffer,"led2"));
- }
- }
- buffer="";
- }
- }
- }
- }
- //Vstup - line: riadok, v ktorom sa nachádza premenná
- //Vstuo - varName: názov premennej (napr. led1)
- //Výstup - celé číslo alebo -1 ak sa nič nenájde
- int getInt(String line, String varName) {
- int pos = line.indexOf(varName); //zistíme, či sa premenná nachádza v riadku
- if (pos >= 0) { //ak sa tam nachádza, vezmeme to, čo je za názvom premennej (tj. od miesta, kde sa začína názov premenne + dĺžka názvu premennej + ešte znak rovná sa) a uložíme do premennej temp
- String temp= line.substring(pos + varName.length() + 1);
- return temp.toInt(); //vrátime ako celé číslo (funkcia toInt v podstate berie čísla od začiatku daného reťazca a až po prvý nečíselný znak
- }
- else return -1; //ak sa premenná nenájde, vráti sa -1
- }
Advertisement
Add Comment
Please, Sign In to add comment