Реле + сеть= проблема
- Войдите на сайт для отправки комментариев
Сб, 12/11/2016 - 21:19
Доброго времени суток,
Долго пробовал сделать сам, но в итоге не получилось, так как руки из всем известного места. Что я пытался сделать:
По http (post) запросу arduino должно включить реле и по таймауту выключить.
Использовал сретч с одного сайта пытаясь его переделать, в итоге не получилось, может кто подскажет что нужно поправить?
#include "EtherCard.h" // Подключаем скачанную библиотеку https://drive.google.com/open?id=0B-DqglGyhA7eN3lMbTN0WlUzdE0 static byte mymac[] = {0x5A,0x5A,0x5A,0x5A,0x5A,0x5A }; // MAC Address должен быть уникальным в локальной сети. byte Ethernet::buffer[1200];BufferFiller bfill; // Буфер, чем больше данных на Web странице, тем больше требуется буфера. int LedPins[] = {2,3,4,5,6,7,8,9}; // Массив задействованных номеров Pins Arduino, для управления например 8 реле. boolean PinStatus[] = {1,2,3,4,5,6,7,8}; // Массив для фиксации изменений. //------------- const char http_OK[] PROGMEM = "HTTP/1.0 200 OK\r\n" "Content-Type: text/html\r\n" "Pragma: no-cache\r\n\r\n"; const char http_Found[] PROGMEM = "HTTP/1.0 302 Found\r\n" "Location: /\r\n\r\n"; const char http_Unauthorized[] PROGMEM = "HTTP/1.0 401 Unauthorized\r\n" "Content-Type: text/html\r\n\r\n" "<h1>401 Unauthorized</h1>"; // Оформление Web страницы void homePage() { bfill.emit_p(PSTR("$F" "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>" "<meta name='viewport' content='width=device-width, initial-scale=1.0'>" "<title>Управление Ардуино УНО</title>" "<h1 style='color:#0ea6f2'>Управление Ардуино</h1>" "<font size='3em'>" "<font style='display:none;'>Светодиод 1: <a href='?ArduinoPIN1=$F'>$F</a></font>" "Светодиод 1: <a href='?ArduinoPIN2=$F'>$F</a><br /><br />" "</font>" "<h4 style='color:#666666'>Управление Arduino Uno через Ethernet порт HanRun HR911105A 15/10</h4>"), http_OK, PinStatus[1]?PSTR("off"):PSTR("on"), PinStatus[1]?PSTR("<font color='green'><b>ON</b></font>"):PSTR("<font color='red'>OFF</font>"), PinStatus[2]?PSTR("off"):PSTR("on"), PinStatus[2]?PSTR("<font color='green'><b>ON</b></font>"):PSTR("<font color='red'>OFF</font>"), PinStatus[3]?PSTR("off"):PSTR("on"), PinStatus[3]?PSTR("<font color='green'><b>ON</b></font>"):PSTR("<font color='red'>OFF</font>"), PinStatus[4]?PSTR("off"):PSTR("on"), PinStatus[4]?PSTR("<font color='green'><b>ON</b></font>"):PSTR("<font color='red'>OFF</font>")); } //------------- void setup() { Serial.begin(9600); // По умолчанию в Библиотеке "ethercard" (CS-pin) = № 8. // if (ether.begin(sizeof Ethernet::buffer, mymac) == 0). // and change it to: Меняем (CS-pin) на 10. // if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0). if (ether.begin(sizeof Ethernet::buffer, mymac,10) == 0); if (!ether.dhcpSetup()); ether.printIp("My Router IP: ", ether.myip); // Выводим в Serial монитор IP адрес который нам автоматический присвоил Router //----- for(int i = 0; i <= 8; i++) { pinMode(LedPins[i],OUTPUT); PinStatus[i]=false; } } //------------- void loop() { delay(1); // Дёргаем микроконтроллер. word len = ether.packetReceive(); // check for ethernet packet / проверить ethernet пакеты. word pos = ether.packetLoop(len); // check for tcp packet / проверить TCP пакеты. if (pos) { bfill = ether.tcpOffset(); char *data = (char *) Ethernet::buffer + pos; if (strncmp("GET /", data, 5) != 0) { bfill.emit_p(http_Unauthorized); } else { data += 5; if (data[0] == ' ') { homePage(); // Return home page Если обнаружено изменения на станице, запускаем функцию. for (int i = 0; i <= 8; i++)digitalWrite(LedPins[i],PinStatus[i+1]); } // "16" = количество символов "?ArduinoPIN1=on ". // ВОТ ТУТ У МЕНЯ ВСЕ ОСТАНОВИЛОСЬ :( else if (strncmp("?ArduinoPIN2=on ", data, 16) == 0) { PinStatus[2] = true; delay(500); PinStatus[2] = false; bfill.emit_p(http_Found); } //------------- // "17" = количество символов "?ArduinoPIN1=off ". // else if (strncmp("?ArduinoPIN2=off ", data, 17) == 0) { // PinStatus[2] = false; // bfill.emit_p(http_Found); // } //------------- else { // Page not found bfill.emit_p(http_Unauthorized); } } ether.httpServerReply(bfill.position()); // send http response } }
После строки 91 и строки 97 поставльте вывод в сериал переменной data и посмотрите на неё. Сразу станет понятно что происходит. И почему все новички так луюят с завязанными глазами работать?
После строки 91 и строки 97 поставльте вывод в сериал переменной data и посмотрите на неё. Сразу станет понятно что происходит. И почему все новички так луюят с завязанными глазами работать?
Я не силен в программирование, по сути только начал, а руководство мне мозг сносит (
если не затруднит, приведите пример кода
После строки 91 и строки 97 поставльте вывод в сериал переменной data и посмотрите на неё. Сразу станет понятно что происходит. И почему все новички так луюят с завязанными глазами работать?
Уважаемый гений блин ну напиши по русски
милионы нихрена не понимают а как хобби занимаемся. ЧЁ НУЖНО после 91 и 97 написать по нерусски?
Помогу немножко гению отбиться:
osele вам сюда : http://arduino.ru/Reference/Serial
Помогу немножко гению отбиться:
osele вам сюда : http://arduino.ru/Reference/Serial
человек по русски пишет не силён и мозг закипает мне тоже интересно что туда нужно вписать
вы шарестые парни ,ну и наверно девчёнки, ЧЁ трудно помочь по братски????
В Сериал надо напринтовать переменную и узреть на экране ее значение. Так понятно?
"И почему все новички так луюят с завязанными глазами работать?" А особенно отрадно, пофигисты взрывники. (С) Шаов.
если не затруднит, приведите пример кода
Serial.print("data="); Serial.println(data);
Я не силен в программирование, по сути только начал, а руководство мне мозг сносит (
Так может тогда лучше "по одёжке"? Писать простые вещи, которые понятны, постепенно усложняя, а не скачивать сразу кусок кода за сотню строк в котором ничего не понимаете? Так со временем будете всё понимать. А без понимания. Вам и печать врядли поможет.