GET запрос в Ethernet
- Войдите на сайт для отправки комментариев
Пнд, 21/08/2017 - 15:18
Здравствуйте. Вот есть скетч Web сервера.
#include <SPI.h>
#include <Ethernet.h>
byte MAC[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress IP(10, 10, 1, 170);
EthernetServer server(7000);
void setup() {
Serial.begin(9600);
Ethernet.begin(MAC, IP);
server.begin();
}
void loop() {
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("Hello");
client.println("</html>");
break;
}
}
client.stop();
}
}
Такой вопрос:
Как сделать так, чтобы сервер принимал GET запрос?
Мне нужно так, я посылаю GET запрос, сервер его принимает и включает какой либо цифровой вход, то есть выполняет
digitalWrite(пин, LOW);
Знаю что нужно условие, но не знаю как реализовать.
Так же мне нужно чтобы при повторном переходе на GET запрос, цифровой вход выключался.
Как сделать так, чтобы сервер принимал GET запрос?
А сейчас он что принимает? Его и принимает, и возращает ответ (строки 25-32). Вот туда и встаьте инвертирования Вашего пина. При каждом запрос состояние пина будет меняться на противоположное.
Можно подробнее? Мне нужно создать ссылку, допустим она будет такого вида:
http://example.com/link=1
Я перехожу, мой вход включается, перехожу еще раз, он выключается.
А сейчас Вы на этот сервер как заходите? По какой ссылке?
Просто по адресу http://mysite.com
И получаете в браузере нормальный ответ? Слово "Hello"?
Если "да", так чего Вам ещё надо? Вставьте после строки 32 что-нибудь типа
И уровень на пине PIN будет переворачиваться при каждом запросе. Вам же это надо?
#include <SPI.h> #include <Ethernet.h> #include <OneWire.h> #include <DallasTemperature.h> #define pin1 22 #define pin2 24 #define pin3 28 #define pin4 30 #define pin5 34 #define tonepin 41 int heater_flow = 380; int coolant_flow = 230; byte flow_step =10; float kub_pr; float kub_obr; float hol_pr; float def_obr; float def_vak; float potok; float termo; float product_vol; // otbor L/day int product_ppm = 40; float uptime; String button = "</button> "; boolean action_flag = false; byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address byte ip[] = { 192, 168, 88, 237 }; // fixed IP addr in LAN byte gateway[] = { 192, 168, 88, 254 }; // internet access via router byte subnet[] = { 255, 255, 248, 0 }; //subnet mask EthernetServer server(80); //server port String readString; ////////////////////// void setup(){ randomSeed(analogRead(0)); //randNumber = random(10, 20); //start Ethernet Ethernet.begin(mac, ip, gateway, subnet); server.begin(); } void loop(){ termo = random(28, 29); kub_pr = termo * 3; kub_obr = termo * (1.9 + 0.1*heater_flow/238); potok = heater_flow * (kub_pr - kub_obr) * 4.2 / 3600 * 1.5; hol_pr = termo / 4.2; def_obr = potok/(coolant_flow * 4.2 / 3600 * 1.5) + hol_pr; def_vak = termo/1.2; product_vol = potok * (3.3E-7*product_ppm*product_ppm*product_ppm-4E-5*product_ppm*product_ppm+0.002*product_ppm+0.016)*24; uptime=(0 + millis()/60000.0)/1440; //0 // Create a client connection EthernetClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { char c = client.read(); //read char by char HTTP request if (readString.length() < 100) { //store characters to string readString += c; //Serial.print(c); } //if HTTP request has ended if (c == '\n') { /////////////// client.println(F("HTTP/1.1 200 OK")); //send new page client.println(F("Content-Type: text/html")); client.println(F("<HTML>")); client.println(); client.println(F("<HEAD>")); client.println(F("<TITLE>Rectification Automation</TITLE>")); client.println(F("<meta content=text/html charset=utf-8 />")); client.println(F("<meta http-equiv=Refresh content=10>")); client.println(F("</HEAD>")); client.println(F("<BODY bgcolor='white'>")); client.println(F("<H1>Line_2, Column_17</H1>")); // client.println("<hr />"); //client.println(F("<a href=\"/\"></a>")); client.println(F("<button style=background-color:white>Deflegmator</button>")); client.print(F("<button style=background-color:white>input=")); client.print(hol_pr); client.print(button); client.print(F("<button style=background-color:white>output=")); client.print(def_obr); client.print(button); client.print(F("<button style=background-color:white>Coolant_flow=")); client.print(coolant_flow); client.print(button); client.println(F("<a href=\"/coolant_inc\"><button>Coolant +</button></a> <a href=\"/coolant_dec\"><button>Coolant -</button></a><br><br>")); client.println(F("<button style=background-color:white>Cub</button>")); client.print(F("<button style=background-color:white>input=")); client.print(kub_pr); client.print(button); client.print(F("<button style=background-color:white>output=")); client.print(kub_obr); client.print(button); client.print(F("<button style=background-color:white>heater_flow=")); client.print(heater_flow); client.print(button); client.println(F("<a href=\"/heater_inc\"><button>Heater +</button></a> <a href=\"/heater_dec\"><button>Heater -</button></a><br><br>")); client.print(F("<button style=background-color:white>column_flow=")); client.print(potok); client.print(button);client.print("<br><br>"); client.println(F("<button style=background-color:white>Product_ppmD</button>")); client.print(F("<button style=background-color:white>")); client.print(product_ppm); client.print(button); client.println(F("<a href=\"/ppm_inc\"><button>Product +</button></a> <a href=\"/ppm_dec\"><button>Product -</button></a><br><br>")); client.println(F("<button style=background-color:white>Product_Volume</button>")); client.print(F("<button style=background-color:white>")); client.print(product_vol); client.print(button); client.print("<br><br>"); client.print(F("<button style=background-color:white>control=")); client.print(flow_step); client.print(button); client.println(F("<a href=\"/flow_inc\"><button>Precise</button></a> <a href=\"/flow_dec\"><button>Draft</button></a><br><br>")); client.print(F("<button style=background-color:white>uptime=")); client.print(uptime); client.print(button);client.print(F("<br><br>")); client.println(F("<a href=\"/\"><button>ACCEPT__CHANGED__PARAMETERS</button></a><br><br>")); //client.println(F("<a href=\"/\"></a><br><br>")); client.println("</BODY>"); client.println("</HTML>"); delay(1); //stopping client client.stop(); ///////////////////// control arduino pin ЭТО ОТВЕТ НА ВАШ ВОПРОС if(readString.indexOf("coolant_inc") >0) {coolant_flow += flow_step; action_flag = true;}; if(readString.indexOf("coolant_dec") >0) {coolant_flow -= flow_step; action_flag = true;}; if(readString.indexOf("heater_inc") >0) {heater_flow += flow_step; action_flag = true;}; if(readString.indexOf("heater_dec") >0) {heater_flow -= flow_step; action_flag = true;}; if(readString.indexOf("ppm_inc") >0) {product_ppm += flow_step; action_flag = true;}; if(readString.indexOf("ppm_dec") >0) {product_ppm -= flow_step; action_flag = true;}; if(readString.indexOf("flow_inc") >0) {flow_step = 1; action_flag = true;}; if(readString.indexOf("flow_dec") >0) {flow_step = 10; action_flag = true;}; readString=""; //clearing string for next read } } } } }Попробовал Ваш метод, не сработало. В общем суть такова, мне нужно с одного сервера, дать на сервер ардуино запрос, после чего включается реле, если я даю запрос второй раз, реле выключается. Модуль реле на 8 каналов, мне на каждый канал отдельный запрос нужен. Думаю понятно объяснил?
в моем коде как раз восемь каналов управляются, посмотрите я обновил
в моем коде как раз восемь каналов управляются, посмотрите я обновил
Управляются кнопками?
там в html есть BUTTON, значит управляются
Попробовал Ваш метод, не сработало. В общем суть такова, мне нужно с одного сервера, дать на сервер ардуино запрос, после чего включается реле, если я даю запрос второй раз, реле выключается. Модуль реле на 8 каналов, мне на каждый канал отдельный запрос нужен. Думаю понятно объяснил?
Не знаю, что у Вас там не сработало, кода не вижу. И не вижу ответа на вопрос показывается ли Hello.
Про 8 каналов и отдельные запросы на каждый канал Вы сразу могли написать? Я тратил время, писал Вам. а оказывается Вам нужно вовсе не то, что было в первом посте. Вам не кажется. что это как-то неправильно?
там в html есть BUTTON, значит управляются
Я понимаю, у меня вот есть рабочий код, управления с помощью ссылок (кнопок)
#include <Ethernet.h> #include <SPI.h> byte ethernet_mac [] = {0x78, 0xAC, 0xC0, 0x74, 0x40, 0x30}; IPAddress ethernet_ip(10, 10, 1, 170); byte ethernet_dns [] = {10, 10, 1, 1}; byte ethernet_gateway [] = {10, 10, 1, 1}; byte ethernet_subnet [] = {255, 255, 255, 0}; EthernetServer _tspWebServer(7000); EthernetClient _tspWebServer_client; bool _trgt4 = 0; bool _trgt4I = 0; bool _trgrt8 = 0; bool _trgrt8I = 0; bool _trgrt5 = 0; bool _trgrt5I = 0; bool _trgrt2 = 0; bool _trgrt2I = 0; bool _WSP2_A1 = 0; bool _WSP2_A2 = 0; bool _WSP2_A3 = 0; bool _WSP2_A4 = 0; bool _WSP2_A5 = 0; bool _WSP2_A6 = 0; bool _WSP2_A7 = 0; bool _WSP2_A8 = 0; bool _trgt7 = 0; bool _trgt7I = 0; bool _trgt8 = 0; bool _trgt8I = 0; bool _trgt5 = 0; bool _trgt5I = 0; bool _trgt2 = 0; bool _trgt2I = 0; bool _trgrt3 = 0; bool _trgrt3I = 0; bool _trgt1 = 0; bool _trgt1I = 0; bool _trgrt6 = 0; bool _trgrt6I = 0; bool _trgt6 = 0; bool _trgt6I = 0; bool _trgt3 = 0; bool _trgt3I = 0; bool _trgrt7 = 0; bool _trgrt7I = 0; bool _trgrt4 = 0; bool _trgrt4I = 0; bool _trgrt1 = 0; bool _trgrt1I = 0; void setup() { Ethernet.begin(ethernet_mac, ethernet_ip, ethernet_dns, ethernet_gateway, ethernet_subnet); delay(1000); _tspWebServer.begin(); pinMode(0, OUTPUT); pinMode(1, OUTPUT); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); } void loop() {_tspWebServer_client = _tspWebServer.available(); if (_tspWebServer_client) { boolean _WSCLineIsBlank = true; String _WSCReqest=""; bool _WSCIsFirsLine=1; bool _WSCIsParse=0; int _WSCPageNumber=0; while (_tspWebServer_client.connected()) { while( _tspWebServer_client.available()) {char _tempWebServerChar = _tspWebServer_client.read(); if(_WSCIsFirsLine) {_WSCReqest+= _tempWebServerChar;} if (_tempWebServerChar == '\n' && _WSCLineIsBlank) {_sendWebServerPage(_WSCPageNumber); break;} if (_tempWebServerChar == '\n') {_WSCLineIsBlank = true; _WSCIsFirsLine=0; if (!_WSCIsParse){ _WSCPageNumber=_parseWebServerReqest(_WSCReqest); _WSCIsParse=1;} } else if (_tempWebServerChar != '\r') { _WSCLineIsBlank = false;} }}} //Плата:1 if (_WSP2_A1) { if (_trgrt1I) { _trgrt1 = 0;} else {_trgrt1 = 1; _trgrt1I = 1;} } else {_trgrt1 = 0; _trgrt1I = 0;}; bool _tmp1 = _trgrt1; if (_tmp1) { if (! _trgt1I) _trgt1 = ! _trgt1; } _trgt1I = _tmp1; if (_WSP2_A2) { if (_trgrt2I) { _trgrt2 = 0;} else {_trgrt2 = 1; _trgrt2I = 1;} } else {_trgrt2 = 0; _trgrt2I = 0;}; bool _tmp2 = _trgrt2; if (_tmp2) { if (! _trgt2I) _trgt2 = ! _trgt2; } _trgt2I = _tmp2; if (_WSP2_A3) { if (_trgrt3I) { _trgrt3 = 0;} else {_trgrt3 = 1; _trgrt3I = 1;} } else {_trgrt3 = 0; _trgrt3I = 0;}; bool _tmp3 = _trgrt3; if (_tmp3) { if (! _trgt3I) _trgt3 = ! _trgt3; } _trgt3I = _tmp3; if (_WSP2_A4) { if (_trgrt4I) { _trgrt4 = 0;} else {_trgrt4 = 1; _trgrt4I = 1;} } else {_trgrt4 = 0; _trgrt4I = 0;}; bool _tmp4 = _trgrt4; if (_tmp4) { if (! _trgt4I) _trgt4 = ! _trgt4; } _trgt4I = _tmp4; if (_WSP2_A5) { if (_trgrt5I) { _trgrt5 = 0;} else {_trgrt5 = 1; _trgrt5I = 1;} } else {_trgrt5 = 0; _trgrt5I = 0;}; bool _tmp5 = _trgrt5; if (_tmp5) { if (! _trgt5I) _trgt5 = ! _trgt5; } _trgt5I = _tmp5; if (_WSP2_A6) { if (_trgrt6I) { _trgrt6 = 0;} else {_trgrt6 = 1; _trgrt6I = 1;} } else {_trgrt6 = 0; _trgrt6I = 0;}; bool _tmp6 = _trgrt6; if (_tmp6) { if (! _trgt6I) _trgt6 = ! _trgt6; } _trgt6I = _tmp6; if (_WSP2_A7) { if (_trgrt7I) { _trgrt7 = 0;} else {_trgrt7 = 1; _trgrt7I = 1;} } else {_trgrt7 = 0; _trgrt7I = 0;}; bool _tmp7 = _trgrt7; if (_tmp7) { if (! _trgt7I) _trgt7 = ! _trgt7; } _trgt7I = _tmp7; if (_WSP2_A8) { if (_trgrt8I) { _trgrt8 = 0;} else {_trgrt8 = 1; _trgrt8I = 1;} } else {_trgrt8 = 0; _trgrt8I = 0;}; bool _tmp8 = _trgrt8; if (_tmp8) { if (! _trgt8I) _trgt8 = ! _trgt8; } _trgt8I = _tmp8; digitalWrite(0, !(_trgt1)); digitalWrite(1, !(_trgt2)); digitalWrite(2, !(_trgt3)); digitalWrite(3, !(_trgt4)); digitalWrite(5, !(_trgt5)); digitalWrite(6, !(_trgt6)); digitalWrite(7, !(_trgt7)); digitalWrite(8, !(_trgt8)); } void _sendWebServerPage(int sendPageNumber) {_tspWebServer_client.println("HTTP/1.1 200 OK"); _tspWebServer_client.println("Connection: close"); _tspWebServer_client.println(); _tspWebServer_client.println("<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN"">"); _tspWebServer_client.println("<html><head>"); _tspWebServer_client.println("<META content=""text/html; charset=utf-8"" http-equiv=""Content-Type"">"); _tspWebServer_client.println("</head><body>"); if (sendPageNumber ==1) {_sendWebServerPage1();} if (sendPageNumber ==2) {_sendWebServerPage2();} _tspWebServer_client.println("</body></html>"); delay(1); _tspWebServer_client.stop();} int _parseWebServerReqest(String reqestAddres) { int index; int result=0; index=reqestAddres.indexOf("/"); reqestAddres =_stringWithoutCharWithIndex(reqestAddres,0,(index)); index=reqestAddres.indexOf(" "); reqestAddres =_stringWithoutCharWithIndex(reqestAddres,index,(reqestAddres.length()-index)); if (reqestAddres==""){result= 1;} if (reqestAddres=="1"){_WSP2_A1=1; result= 2;} else {_WSP2_A1=0;} if (reqestAddres=="2"){_WSP2_A2=1; result= 2;} else {_WSP2_A2=0;} if (reqestAddres=="3"){_WSP2_A3=1; result= 2;} else {_WSP2_A3=0;} if (reqestAddres=="4"){_WSP2_A4=1; result= 2;} else {_WSP2_A4=0;} if (reqestAddres=="5"){_WSP2_A5=1; result= 2;} else {_WSP2_A5=0;} if (reqestAddres=="6"){_WSP2_A6=1; result= 2;} else {_WSP2_A6=0;} if (reqestAddres=="7"){_WSP2_A7=1; result= 2;} else {_WSP2_A7=0;} if (reqestAddres=="8"){_WSP2_A8=1; result= 2;} else {_WSP2_A8=0;} return result; } String _stringWithoutCharWithIndex(String value, int index,int count) { String result=""; for (int i=0; i <= value.length(); i++){ if((i<index) ||(i>(index+count))){ result+=value.charAt(i); } } return result; } void _sendWebServerPage1(void) { _tspWebServer_client.println("<!DOCTYPE html>"); _tspWebServer_client.println("<html lang=""ru"">"); _tspWebServer_client.println(" <head>"); _tspWebServer_client.println(" <meta charset=""utf-8"">"); _tspWebServer_client.println(" <title>\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435</title>"); _tspWebServer_client.println(" <style>"); _tspWebServer_client.println(" table {"); _tspWebServer_client.println(" width: 100%;"); _tspWebServer_client.println(" background: black;"); _tspWebServer_client.println(" color: black;"); _tspWebServer_client.println(" border-spacing: 1px;"); _tspWebServer_client.println(" }"); _tspWebServer_client.println(" td, th {"); _tspWebServer_client.println(" background: white;"); _tspWebServer_client.println(" padding: 20px;"); _tspWebServer_client.println(" text-align: center;"); _tspWebServer_client.println(" }"); _tspWebServer_client.println(" h1 {"); _tspWebServer_client.println(" text-align: center;"); _tspWebServer_client.println(" }"); _tspWebServer_client.println(" </style>"); _tspWebServer_client.println(" </head>"); _tspWebServer_client.println("<body>"); _tspWebServer_client.println(" <h1>\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u043b\u0435</h1>"); _tspWebServer_client.println(" <table>"); _tspWebServer_client.println(" <tr>"); _tspWebServer_client.println(" <td><a href=""http://pte.pp.ua:7000/1"">\u0420\u0435\u043b\u0435 #1</a></td>"); _tspWebServer_client.println(" <td><a href=""http://pte.pp.ua:7000/2"">\u0420\u0435\u043b\u0435 #2</a></td>"); _tspWebServer_client.println(" <td><a href=""http://pte.pp.ua:7000/3"">\u0420\u0435\u043b\u0435 #3</a></td>"); _tspWebServer_client.println(" <td><a href=""http://pte.pp.ua:7000/4"">\u0420\u0435\u043b\u0435 #4</a></td>"); _tspWebServer_client.println(" <td><a href=""http://pte.pp.ua:7000/5"">\u0420\u0435\u043b\u0435 #5</a></td>"); _tspWebServer_client.println(" <td><a href=""http://pte.pp.ua:7000/6"">\u0420\u0435\u043b\u0435 #6</a></td>"); _tspWebServer_client.println(" <td><a href=""http://pte.pp.ua:7000/7"">\u0420\u0435\u043b\u0435 #7</a></td>"); _tspWebServer_client.println(" <td><a href=""http://pte.pp.ua:7000/8"">\u0420\u0435\u043b\u0435 #8</a></td>"); _tspWebServer_client.println(" </tr>"); _tspWebServer_client.println(" </table>"); _tspWebServer_client.println("</body>"); _tspWebServer_client.println("</html>"); }void _sendWebServerPage2(void) { _tspWebServer_client.println("<meta http-equiv=""refresh"" content=""0,URL=http://pte.pp.ua7000"">"); }Так же есть адреса, /1 /2 /3 /4 /5 /6 /7 /8 по которым я нажимаю. Всё работает, если через браузер.
Если я пытаюсь через CURL с помощью PHP перейти по своему адресу реле, оно его включает, но при повторном переходе, оно не выключает.
Попробовал Ваш метод, не сработало. В общем суть такова, мне нужно с одного сервера, дать на сервер ардуино запрос, после чего включается реле, если я даю запрос второй раз, реле выключается. Модуль реле на 8 каналов, мне на каждый канал отдельный запрос нужен. Думаю понятно объяснил?
Не знаю, что у Вас там не сработало, кода не вижу. И не вижу ответа на вопрос показывается ли Hello.
Про 8 каналов и отдельные запросы на каждый канал Вы сразу могли написать? Я тратил время, писал Вам. а оказывается Вам нужно вовсе не то, что было в первом посте. Вам не кажется. что это как-то неправильно?
Я прошу прощения, если Вы что то не правильно поняли. Я просил пример для одного пина, мне нужно именно посмотреть, как всё работает, а дальше под остальный пины я бы сам всё написал. По поводу слова Hello - Да оно показывается.
Тогда то, что я Вам написал не может не работать. Если отправлется слово Hello - передёргивается пин и никак иначе. Нужели Вы умудрились эту строчку неправильно вставить? Код-то покажете?
Тогда то, что я Вам написал не может не работать. Если отправлется слово Hello - передёргивается пин и никак иначе. Нужели Вы умудрились эту строчку неправильно вставить? Код-то покажете?
Вот код
#include <SPI.h> #include <Ethernet.h> int PIN = 0; byte MAC[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress IP(10, 10, 1, 170); EthernetServer server(7000); void setup() { Serial.begin(9600); pinMode(PIN, OUTPUT); Ethernet.begin(MAC, IP); server.begin(); } void loop() { EthernetClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); client.println(); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("Hello"); client.println("</html>"); digitalWrite(PIN, ! digitalRead(PIN)); break; } } client.stop(); } }Мне нужно что то типа свича как в PHP
switch($action) { case 0: //Включить/Выключить реле break; case 1: //Включить/Выключить реле break; case 2: //Включить/Выключить реле break; case 3: //Включить/Выключить реле break; case 4: //Включить/Выключить реле break; case 5: //Включить/Выключить реле break; case 6: //Включить/Выключить реле break; case 7: //Включить/Выключить реле break; } И обращаться к серверу ардуино по адресу http://example.com/?action=0 После чего включается реле, далее перехожу еще раз по этому адресу, оно выключается.Вот код
Ну, я же говорил, что Вы даже одну строчку вставить не смогли правильно.
Вы же пользуетесь сериалом и при этом цепляете своё реле на нулевой пин! Включайте же голову - этот пин ЗАНЯТ!
Возьмите свободный пин и всё заработает!
Вот код
Ну, я же говорил, что Вы даже одну строчку вставить не смогли правильно.
Вы же пользуетесь сериалом и при этом цепляете своё реле на нулевой пин! Включайте же голову - этот пин ЗАНЯТ!
Возьмите свободный пин и всё заработает!
И в правду всё заработало, как посадил на 8 пин. Спасибо. Но как для нескольких реле такое организовать? Больше всего интересует именно вызов, каждого реле на включение.
Проверьте, что вам приходит.
while (client.available()) Serial.print(client.read());В сообщении #6 вам показали как парсить. Но вам достаточно узнавать предпоследний байт в буфере.
Проверьте, что вам приходит.
while (client.available()) Serial.print(client.read());В сообщении #6 вам показали как парсить. Но вам достаточно узнавать предпоследний байт в буфере.
Я в ардуино не специалист, слишком большой код. Не понимаю что и где там парсится. Мне нужно создать каждолму реле типа ссылки на свиче, http://example.com/?Relay=1 перехожу - включается реле, перехожу еще раз, выключается. И так для каждого реле.
Вы же вроде писали
пример для одного пина, мне нужно именно посмотреть, как всё работает, а дальше под остальный пины я бы сам всё написал.
Теперь, когда для одного пина всё работает, Вы пишете
Я в ардуино не специалист ... Не понимаю ....
Может проще и быстрее пойти в "Ищу исполнителя", отдать там 5-6 баксов и получить решение? Не думали об этом?
Может проще и быстрее пойти в "Ищу исполнителя", отдать там 5-6 баксов и получить решение? Не думали об этом?
Хочется самому научиться. Я не прошу готового решения. Хотя бы в какую сторону копать, каким методом вызывать.
...
Вот что приходит.
Мало информативно, без GET запроса на который это возвращает.
Проверьте что возвращает на: http://example.com/?Relay=1 и http://example.com/?Relay=2
Ну, хорошо, я скажу куда копать.
Вы можете напечатать строку запроса, который к Вам пришёл? Если нет - открывайте примеры библиотеки, там это есть. Смотрите как это делается.
Когда сможете напечатать (значит научитесь добираться до этой строки), останется только выдернуть из неё символ с номером пина. Т.е. для начала научитесь добираться до строки запроса.
Проблему решил. Всем кто помогал, огромное спасибо.
Если кому нибудь пригодится, код ниже.
#include <SPI.h> #include <Ethernet.h> #define PIN2 2 #define PIN3 3 byte MAC[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress IP(192, 168, 1, 170); EthernetServer server(80); String Relay; void setup() { Serial.begin(9600); pinMode(PIN2, OUTPUT); digitalWrite(PIN2, HIGH); pinMode(PIN3, OUTPUT); digitalWrite(PIN3, HIGH); Ethernet.begin(MAC, IP); server.begin(); } void loop() { EthernetClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { char query = client.read(); if (Relay.length() < 100) { Relay += query; Serial.print(query); } if (query == '\n') { client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("<html>"); client.println(); client.println("<head>"); client.println("<meta content=text/html charset=utf-8 />"); client.println("</head>"); client.println("<body>"); client.println("</body>"); client.println("</html>"); delay(1); client.stop(); if(Relay.indexOf("Relay_1") > 0) { digitalWrite(PIN2, ! digitalRead(PIN2)); } if(Relay.indexOf("Relay_2") > 0) { digitalWrite(PIN3, ! digitalRead(PIN3)); } Relay = ""; } } } } }С Победой!
С Победой!
Спасибо!)