Ви не увійшли.
Сторінки 1
Добрый день, помогите люди добрые я уже неделю парюсь не как не пойму в чом дело, я взял Ваш код за основу и пытаюсь его переделать под 4 реле но всё встало на двух так как в момент переключение одной реле дергается вторая (когда включаешь второе реле моргает первая), никак не пойму в чом дело помогите пожалуйста.
#include <Ethernet.h>
// задаем константы
const int Relay1 = 8;
const int Relay2 = 13;
// переменные
boolean Relay1On = true; // Текущее состояние реле
boolean Relay2On = true; // Текущее состояние реле
String readString = String(30);
// объявляем переменную MY_IP со значением 10.36.1.52
#define MY_IP "192.168.3.222"
// указываем настройки сетевого интерфейса и порт веб-сервера
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 3, 222);
EthernetServer server(80);
void setup() {
delay(500);
/*
* без строки "digitalWrite(Relay1, HIGH);" перед "pinMode" при включении
* ардуины будет происходить кратковременное переключение реле,
* а значит кратковременно подастся питание, что нам категорически
* не надо!
*/
digitalWrite(Relay1, HIGH);
// digitalWrite(Relay2, HIGH);
// инициализируем пин, подключенный к реле, как выход
pinMode(Relay1, OUTPUT);
pinMode(Relay2, OUTPUT);
// стартуем сетевой интерфейс
Ethernet.begin(mac, ip);
server.begin();
Serial.begin(9600);
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
/*
* функция сглаживания дребезга
* принимает в качестве аргумента предыдущее состояние кнопки
* и выдаёт фактическое.
*/
void loop() {
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (readString.length() < 30) {
readString.concat( c); }
Serial.print( c);
if (c == '\n' && currentLineIsBlank) {
if (c == '\n') {
//Проверяем включили ли реле и светодиод?
//Level=1 - включен
//Level=0 - выключен
if(readString.indexOf("Level=1") >=0) {
//Включаем реле
digitalWrite(Relay1, LOW);
Relay1On = false;
}else if(readString.indexOf("Level=0") >=0){
//Выключаем реле
digitalWrite(Relay1, HIGH);
Relay1On = true;
}
if(readString.indexOf("Level2=1") >=0) {
//Включаем реле
digitalWrite(Relay2, LOW);
Relay2On = false;
}else if(readString.indexOf("Level2=0") >=0){
//Выключаем реле
digitalWrite(Relay2, HIGH);
Relay2On = true;
}
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close"); // the connection will be closed after completion of the response
//client.println("Refresh: 5"); // refresh the page automatically every 5 sec
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> ");
//client.println("<head><meta http-equiv=\"refresh\" content=\"5;URL=http://"MY_IP"/\"></head>");
client.println(F("<body>"));
client.println(F("<center><head><title>Гараж</title></head>"));
if (Relay1On){
client.println("<form method=get name=LED><input type=radio name=Level value=1 CHECKED>Включить");
client.println("<input type=radio name=Level value=0>Выключить");
client.println("<input type=submit value=Применить></form>");
client.println("<font size=’5′>Состояние реле: ");
client.println("<font size=’5′>Выкл. 1");
client.println("<br></br>");
}else{
client.println("<form method=get name=LED><input type=radio name=Level value=1>Включить");
client.println("<input type=radio name=Level value=0 CHECKED>Выключить");
client.println("<input type=submit value=Применить></form>");
client.println("<font size=’5′>Состояние реле: ");
client.println("<font size=’5′>Вкл 1");
client.println("<br></br>");
}
if (Relay2On){
client.println("<font color=\"red\"><a href=\"/?Level2=1\"\">ВКЛ</a>");
client.println("<font size=’5′>Состояние реле: ");
client.println("<font size=’5′>Выкл. 2");
client.println("<br></br>");
}else{
client.println("<font color=\"green\"><a href=\"/?Level2=0\"\">ВЫКЛ</a>");
client.println("<font size=’5′>Состояние реле: ");
client.println("<font size=’5′>Вкл 2");
client.println("<br></br>");
}
readString="";
//останавливаем web-client
client.stop();
}
}
}
}
// часть кода для кнопки, реле и светодиода
{
Relay1On = !Relay1On;
}
{
Relay2On = !Relay2On;
}
digitalWrite(Relay1, Relay1On); // Изменить статус состояния реле
digitalWrite(Relay2, Relay2On);
}
}
Сторінки 1