Управление бистабильными реле с arduino и обычных кнопок
- Войдите на сайт для отправки комментариев
Сб, 19/01/2013 - 09:43
Добрый день!
Подскажите пожалуйста, возможно ли реализовать управление бистабильными реле через ардуино и обычные кнопки?
Например, замыкая контакты управления бистабильным реле я могу коммутировать нагрузку, а возможно ли при помощи arduino + ethernet shield так же управлять данным реле через web интерфейс?
Возможно.
Добрый день!
Потихоньку начал реализовывать управление пинами дуины из веб интерфейса и столкнулся с непониманием, прошу помощи и разъяснения :)
#include <SPI.h> #include <Ethernet.h> byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address byte ip[] = { 192, 168, 0, 111 }; // ip in lan byte gateway[] = { 192, 168, 0, 1 }; // internet access via router byte subnet[] = { 255, 255, 255, 0 }; //subnet mask EthernetServer server(80); //server port String readString; ////////////////////// void setup(){ pinMode(5, OUTPUT); //pin selected to control //start Ethernet Ethernet.begin(mac, ip, gateway, gateway, subnet); server.begin(); //enable serial data print Serial.begin(9600); Serial.println("server multi pin button test 1.0"); // so I can keep track of what is loaded } void loop(){ // 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') { /////////////// Serial.println(readString); //print to serial monitor for debuging client.println("HTTP/1.1 200 OK"); //send new page client.println("Content-Type: text/html"); client.println(); client.println("<HTML>"); client.println("<HEAD>"); client.println("<TITLE>Arduino Bistab Relay Control</TITLE>"); client.println("</HEAD>"); client.println("<BODY>"); client.println("<H1>Arduino Bistab Relay Control</H1>"); client.print("<input type=submit value='TEST! RELAY 1' style=width:150px;height:45px onClick=location.href='/?BR2'><br>"); client.print("<input type=submit value='TEST! RELAY 2' style=width:150px;height:45px onClick=location.href='/?BR02'>"); client.println("</BODY>"); client.println("</HTML>"); delay(1); //stopping client client.stop(); ///////////////////// control arduino pin if(readString.indexOf('BR2') > 0) { digitalWrite(5, HIGH); // set pin 5 high Serial.println("BR1 Led 5 On"); delay(5000); digitalWrite(5, LOW); // set pin 5 low Serial.println("BR1 Led 5 Off"); } if(readString.indexOf('BR02') > 0)//checks for 2 { digitalWrite(5, HIGH); // set pin 5 high Serial.println("BR2 Led 5 On"); delay(500); digitalWrite(5, LOW); // set pin 5 low Serial.println("BR2 Led 5 Off"); delay(500); digitalWrite(5, HIGH); // set pin 5 high Serial.println("BR2 Led 5 On"); delay(500); digitalWrite(5, LOW); // set pin 5 low Serial.println("BR2 Led 5 Off"); delay(500); digitalWrite(5, HIGH); // set pin 5 high Serial.println("BR2 Led 5 On"); delay(500); digitalWrite(5, LOW); // set pin 5 low Serial.println("BR2 Led 5 Off"); delay(500); digitalWrite(5, HIGH); // set pin 5 high Serial.println("BR2 Led 5 On"); delay(500); digitalWrite(5, LOW); // set pin 5 low Serial.println("BR2 Led 5 Off"); } //clearing string for next read readString=""; } } } } }Собственно косяк с функцией readString.indexOf('BR2') > 0
Например если мы передаем get запрос /?BR02 , то и BR2 так же отрабатывает, но так же не должно быть... в общем не понимаю логики....
BR02 это строка, а не символ, вы же ее обозначили как символ 'B',
строки обозначаются двойными ковычками "BR02" .
BR02 это строка, а не символ, вы же ее обозначили как символ 'B',
строки обозначаются двойными ковычками "BR02" .
огромное мпасибо!
в коде исправил на if(readString.indexOf("BR2") > 0) и все заработало как надо!