Arduino UNO + W5500

DraKuLa21
Offline
Зарегистрирован: 06.06.2019

Всем привет. Имеется скетч, который должен включать свет в 6 местах в помощью 6 кнопок и веб интерфейса. Всё работает нормально, ха исключением одного: при включении ардуино первые четыре канала включаются сами, хотя в сетапе указано, что сначала все каналы должны быть выключены + все входы и выходы подтянуты к земле резюками на 10 кОм. Вручную всё нормально включается и выключается. После ресета все выходы выключены, проблема только при включении ардуино. Также пробовал в коде менять местами пины для входа и выхода (например, сейчас выход на свет это аналоговые выходы, кнопки - цифровые, а делал свет на цифровые, кнопки на аналоговые), результат тот же.

DraKuLa21
Offline
Зарегистрирован: 06.06.2019
#include <Ethernet2.h>
#include <SPI.h>


// задаем константы
const int ledPin =  2;     // номер выхода светодиода
const int led2Pin =  3; 
const int led3Pin =  4;
const int led4Pin =  5;
const int led5Pin =  6;
const int led6Pin =  7;
const int buttonPin = A0;    // номер входа, подключенный к кнопке
const int button2Pin = A1;
const int button3Pin = A2;
const int button4Pin = A3;
const int button5Pin = A4;
const int button6Pin = A5;
const int led7Pin = 8;

 
// переменные
boolean lastButton = LOW;      // Переменная для сохранения предыдущего состояния кнопки
boolean last2Button = LOW; 
boolean last3Button = LOW; 
boolean last4Button = LOW; 
boolean last5Button = LOW; 
boolean last6Button = LOW; 
boolean currentButton = LOW;   // Переменная для сохранения текущего состояния кнопки
boolean current2Button = LOW;
boolean current3Button = LOW;
boolean current4Button = LOW;
boolean current5Button = LOW;
boolean current6Button = LOW;
boolean ledOn = false;         // Текущее состояние светодиода (включен/выключен)
boolean led2On = false;   
boolean led3On = false;  
boolean led4On = false;  
boolean led5On = false;  
boolean led6On = false;  
boolean led7On = false;


String readString = String(30);


// объявляем переменную MY_IP со значением 10.36.1.52
#define MY_IP "192.168.1.206"
// указываем настройки сетевого интерфейса и порт веб-сервера
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 1, 206);
EthernetServer server(80);


void setup() {
  delay(500);
  
/*
 * без строки "digitalWrite(Relay1, HIGH);" перед "pinMode" при включении
 * ардуины будет происходить кратковременное переключение реле,
 * а значит кратковременно подастся питание, что нам категорически
 * не надо!
 */

  
  // инициализируем пин, подключенный к светодиоду, как выход
  pinMode(ledPin, OUTPUT);
  pinMode(led2Pin, OUTPUT);
  pinMode(led3Pin, OUTPUT);
  pinMode(led4Pin, OUTPUT);
  pinMode(led5Pin, OUTPUT);
  pinMode(led6Pin, OUTPUT);
  // инициализируем пин, подключенный к кнопке, как вход
  pinMode(buttonPin, INPUT);
  pinMode(button2Pin, INPUT);
  pinMode(button3Pin, INPUT);
  pinMode(button4Pin, INPUT);
  pinMode(button5Pin, INPUT);
  pinMode(button6Pin, INPUT);

  pinMode(led7Pin, OUTPUT);

digitalWrite(ledPin, LOW);
digitalWrite(led2Pin, LOW);
digitalWrite(led3Pin, LOW);
digitalWrite(led4Pin, LOW);
digitalWrite(led5Pin, LOW);
digitalWrite(led6Pin, LOW);
 
// стартуем сетевой интерфейс
Ethernet.begin(mac, ip);
server.begin();


Serial.begin(9600);
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}

/*
 * функция сглаживания дребезга
 * принимает в качестве аргумента предыдущее состояние кнопки
 * и выдаёт фактическое.
 */
boolean debounce(boolean last){
  boolean current = digitalRead(buttonPin);    // Считать состояние кнопки
  if (last != current)                         // Если изменилось ...
  {
  delay(5);                                    // ждём 5 мс
  current = digitalRead(buttonPin);            // Считываем состояние кнопки
  return current;                              // Возвращаем состояние кнопки
  }
}

boolean debounce2(boolean last){
  boolean current = digitalRead(button2Pin);    // Считать состояние кнопки
  if (last != current)                         // Если изменилось ...
  {
  delay(5);                                    // ждём 5 мс
  current = digitalRead(button2Pin);            // Считываем состояние кнопки
  return current;                              // Возвращаем состояние кнопки
  }
}

boolean debounce3(boolean last){
  boolean current = digitalRead(button3Pin);    // Считать состояние кнопки
  if (last != current)                         // Если изменилось ...
  {
  delay(100);                                    // ждём 5 мс
  current = digitalRead(button3Pin);            // Считываем состояние кнопки
  return current;                              // Возвращаем состояние кнопки
  }
}

boolean debounce4(boolean last){
  boolean current = digitalRead(button4Pin);    // Считать состояние кнопки
  if (last != current)                         // Если изменилось ...
  {
  delay(5);                                    // ждём 5 мс
  current = digitalRead(button4Pin);            // Считываем состояние кнопки
  return current;                              // Возвращаем состояние кнопки
  }
}

boolean debounce5(boolean last){
  boolean current = digitalRead(button5Pin);    // Считать состояние кнопки
  if (last != current)                         // Если изменилось ...
  {
  delay(5);                                    // ждём 5 мс
  current = digitalRead(button5Pin);            // Считываем состояние кнопки
  return current;                              // Возвращаем состояние кнопки
  }
}

boolean debounce6(boolean last){
  boolean current = digitalRead(button6Pin);    // Считать состояние кнопки
  if (last != current)                         // Если изменилось ...
  {
  delay(5);                                    // ждём 5 мс
  current = digitalRead(button6Pin);            // Считываем состояние кнопки
  return current;                              // Возвращаем состояние кнопки
  }
}

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(ledPin, HIGH);
ledOn = true;

}else if(readString.indexOf("Level=0") >=0){
//Выключаем светодиод
digitalWrite(ledPin, LOW);
ledOn = false;
}

if(readString.indexOf("Level2=1") >=0) {
//Включаем светодиод
digitalWrite(led2Pin, HIGH);
led2On = true;

}else if(readString.indexOf("Level2=0") >=0){
//Выключаем светодиод
digitalWrite(led2Pin, LOW);
led2On = false;
} 


if(readString.indexOf("Level3=1") >=0) {
//Включаем светодиод
digitalWrite(led3Pin, HIGH);
led3On = true;

}else if(readString.indexOf("Level3=0") >=0){
//Выключаем светодиод
digitalWrite(led3Pin, LOW);
led3On = false;
} 


if(readString.indexOf("Level4=1") >=0) {
//Включаем светодиод
digitalWrite(led4Pin, HIGH);
led4On = true;

}else if(readString.indexOf("Level4=0") >=0){
//Выключаем светодиод
digitalWrite(led4Pin, LOW);
led4On = false;
} 


if(readString.indexOf("Level5=1") >=0) {
//Включаем светодиод
digitalWrite(led5Pin, HIGH);
led5On = true;

}else if(readString.indexOf("Level5=0") >=0){
//Выключаем светодиод
digitalWrite(led5Pin, LOW);
led5On = false;
} 


if(readString.indexOf("Level6=1") >=0) {
//Включаем светодиод
digitalWrite(led6Pin, HIGH);
led6On = true;

}else if(readString.indexOf("Level6=0") >=0){
//Выключаем светодиод
digitalWrite(led6Pin, LOW);
led6On = false;
} 

if(readString.indexOf("Level10=1") >=0) {
//Включаем светодиод
digitalWrite(ledPin, HIGH);
digitalWrite(led2Pin, HIGH);
digitalWrite(led3Pin, HIGH);
digitalWrite(led4Pin, HIGH);
digitalWrite(led5Pin, HIGH);
digitalWrite(led6Pin, HIGH);

ledOn = true;
led2On = true;
led3On = true;
led4On = true;
led5On = true;
led6On = true;

}else if(readString.indexOf("Level10=0") >=0){
//Выключаем светодиод
digitalWrite(ledPin, LOW);
digitalWrite(led2Pin, LOW);
digitalWrite(led3Pin, LOW);
digitalWrite(led4Pin, LOW);
digitalWrite(led5Pin, LOW);
digitalWrite(led6Pin, LOW);

ledOn = false;
led2On = false;
led3On = false;
led4On = false;
led5On = false;
led6On = false;
}

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>"));

client.print(F("<input type=button value='Моя комната | ON' onmousedown=location.href='/?Level=1'>"));
client.println(F("<input type=button value='Моя комната | OFF' onmousedown=location.href='/?Level=0'><br/><br/>"));
client.print(F("<input type=button value='Ванна | ON' onmousedown=location.href='/?Level2=1'>"));
client.println(F("<input type=button value='Ванна | OFF' onmousedown=location.href='/?Level2=0'><br/><br/>"));
client.print(F("<input type=button value='Туалет | ON' onmousedown=location.href='/?Level3=1'>"));
client.println(F("<input type=button value='Туалет | OFF' onmousedown=location.href='/?Level3=0'><br/><br/>"));
client.print(F("<input type=button value='Кухня | ON' onmousedown=location.href='/?Level4=1'>"));
client.println(F("<input type=button value='Кухня | OFF' onmousedown=location.href='/?Level4=0'><br/><br/>"));
client.print(F("<input type=button value='Спальня | ON' onmousedown=location.href='/?Level5=1'>"));
client.println(F("<input type=button value='Спальня | OFF' onmousedown=location.href='/?Level5=0'><br/><br/>"));
client.print(F("<input type=button value='Коридор | ON' onmousedown=location.href='/?Level6=1'>"));
client.println(F("<input type=button value='Коридор | OFF' onmousedown=location.href='/?Level6=0'><br/><br/>"));
client.print(F("<input type=button value='ON ALL' onmousedown=location.href='/?Level10=1'>"));
client.println(F("<input type=button value='OFF ALL' onmousedown=location.href='/?Level10=0'><br/><br/>"));
//client.println("<a href=\"/?Level=1\"\">Turn On Light</a><br />");
//client.println("<a href=\"/?Level=0\"\">Turn Off Light</a><br />");
//client.println("<a href=\"/?Level2=1\"\">Turn On 2 Light</a><br />");
//client.println("<a href=\"/?Level2=0\"\">Turn Off 2 Light</a><br />");



if (ledOn){
client.println("<font size=’5′>Моя комната - ON.");
client.println("<br></br>");
}else{
client.println("<font size=’5′>Моя комната - OFF");
client.println("<br></br>");
}

if (led2On){
client.println("<font size=’5′>Ванная - ON.");
client.println("<br></br>");
}else{
client.println("<font size=’5′>Ванная - OFF");
client.println("<br></br>");
}

if (led3On){
client.println("<font size=’5′>Туалет - ON.");
client.println("<br></br>");
}else{
client.println("<font size=’5′>Туалет - OFF");
client.println("<br></br>");
}

if (led4On){
client.println("<font size=’5′>Кухня - ON.");
client.println("<br></br>");
}else{
client.println("<font size=’5′>Кухня - OFF");
client.println("<br></br>");
}

if (led5On){
client.println("<font size=’5′>Спальня - ON.");
client.println("<br></br>");
}else{
client.println("<font size=’5′>Спальня - OFF");
client.println("<br></br>");
}

if (led6On){
client.println("<font size=’5′>Коридор - ON.");
client.println("<br></br>");
}else{
client.println("<font size=’5′>Коридор - OFF");
client.println("<br></br>");
}

if (led7On){
client.println("<font size=’5′>Преобразователь - ON.");
client.println("<br></br>");
}else{
client.println("<font size=’5′>Преобразователь - OFF");
client.println("<br></br>");
}

client.println(F("</center></body>"));
client.println("</html>");
readString="";
//останавливаем web-client
client.stop();
          }
        }
      }
    }

// часть кода для кнопки, реле и светодиода
currentButton = debounce(lastButton);
if (lastButton == LOW && currentButton == HIGH)   // Если нажатие (условия для светодиода на пине 6)
{
  ledOn = !ledOn;
}


lastButton = currentButton;
digitalWrite(ledPin, ledOn);                         // Изменить статус состояния светодиода


current2Button = debounce2(last2Button);
if (last2Button == LOW && current2Button == HIGH)   // Если нажатие (условия для светодиода на пине 6)
{
  led2On = !led2On;
}


last2Button = current2Button;
digitalWrite(led2Pin, led2On);                         // Изменить статус состояния светодиода


current3Button = debounce3(last3Button);
if (last3Button == LOW && current3Button == HIGH)   // Если нажатие (условия для светодиода на пине 6)
{
  led3On = !led3On;
}


last3Button = current3Button;
digitalWrite(led3Pin, led3On);                         // Изменить статус состояния светодиода


current4Button = debounce4(last4Button);
if (last4Button == LOW && current4Button == HIGH)   // Если нажатие (условия для светодиода на пине 6)
{
  led4On = !led4On;
}


last4Button = current4Button;
digitalWrite(led4Pin, led4On);                         // Изменить статус состояния светодиода

current5Button = debounce5(last5Button);
if (last5Button == LOW && current5Button == HIGH)   // Если нажатие (условия для светодиода на пине 6)
{
  led5On = !led5On;
}


last5Button = current5Button;
digitalWrite(led5Pin, led5On);                         // Изменить статус состояния светодиода

current6Button = debounce6(last6Button);
if (last6Button == LOW && current6Button == HIGH)   // Если нажатие (условия для светодиода на пине 6)
{
  led6On = !led6On;
}


last6Button = current6Button;
digitalWrite(led6Pin, led6On);                         // Изменить статус состояния светодиода

if (ledOn == true || led2On == true || led3On == true || led4On == true || led5On == true || led6On == true) {
  digitalWrite(led7Pin, HIGH);
  led7On = true;
}
else 
{
  //delay(500);
  digitalWrite(led7Pin, LOW);
  led7On = false;
}

}

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Явных проблем не видно (кроме индусского кода). Я бы таки проверил на простом скетче (без сетевых фокусов) - включается эта же конструкция сама по себе или нет.

DraKuLa21
Offline
Зарегистрирован: 06.06.2019

Сократил код до такого вида, теперь только первый выход включается при запуске.

 



// задаем константы
const int ledPin =  A0;     // номер выхода светодиода
const int led2Pin =  A1; 
const int led3Pin =  A2;
const int led4Pin =  A3;
const int led5Pin =  A4;
const int led6Pin =  A5;
const int buttonPin = 2;    // номер входа, подключенный к кнопке
const int button2Pin = 3;
const int button3Pin = 4;
const int button4Pin = 5;
const int button5Pin = 6;
const int button6Pin = 7;

// переменные
boolean lastButton = LOW;      // Переменная для сохранения предыдущего состояния кнопки
boolean last2Button = LOW; 
boolean last3Button = LOW; 
boolean last4Button = LOW; 
boolean last5Button = LOW; 
boolean last6Button = LOW; 
boolean currentButton = LOW;   // Переменная для сохранения текущего состояния кнопки
boolean current2Button = LOW;
boolean current3Button = LOW;
boolean current4Button = LOW;
boolean current5Button = LOW;
boolean current6Button = LOW;
boolean ledOn = false;         // Текущее состояние светодиода (включен/выключен)
boolean led2On = false;   
boolean led3On = false;  
boolean led4On = false;  
boolean led5On = false;  
boolean led6On = false;  


void setup() {

  // инициализируем пин, подключенный к светодиоду, как выход
  pinMode(ledPin, OUTPUT);
  pinMode(led2Pin, OUTPUT);
  pinMode(led3Pin, OUTPUT);
  pinMode(led4Pin, OUTPUT);
  pinMode(led5Pin, OUTPUT);
  pinMode(led6Pin, OUTPUT);
  // инициализируем пин, подключенный к кнопке, как вход
  pinMode(buttonPin, INPUT);
  pinMode(button2Pin, INPUT);
  pinMode(button3Pin, INPUT);
  pinMode(button4Pin, INPUT);
  pinMode(button5Pin, INPUT);
  pinMode(button6Pin, INPUT);

  


digitalWrite(ledPin, LOW);
digitalWrite(led2Pin, LOW);
digitalWrite(led3Pin, LOW);
digitalWrite(led4Pin, LOW);
digitalWrite(led5Pin, LOW);
digitalWrite(led6Pin, LOW);
}


boolean debounce(boolean last){
  boolean current = digitalRead(buttonPin);    // Считать состояние кнопки
  if (last != current)                         // Если изменилось ...
  {
  delay(5);                                    // ждём 5 мс
  current = digitalRead(buttonPin);            // Считываем состояние кнопки
  return current;                              // Возвращаем состояние кнопки
  }
}

boolean debounce2(boolean last){
  boolean current = digitalRead(button2Pin);    // Считать состояние кнопки
  if (last != current)                         // Если изменилось ...
  {
  delay(5);                                    // ждём 5 мс
  current = digitalRead(button2Pin);            // Считываем состояние кнопки
  return current;                              // Возвращаем состояние кнопки
  }
}

boolean debounce3(boolean last){
  boolean current = digitalRead(button3Pin);    // Считать состояние кнопки
  if (last != current)                         // Если изменилось ...
  {
  delay(100);                                    // ждём 5 мс
  current = digitalRead(button3Pin);            // Считываем состояние кнопки
  return current;                              // Возвращаем состояние кнопки
  }
}

boolean debounce4(boolean last){
  boolean current = digitalRead(button4Pin);    // Считать состояние кнопки
  if (last != current)                         // Если изменилось ...
  {
  delay(5);                                    // ждём 5 мс
  current = digitalRead(button4Pin);            // Считываем состояние кнопки
  return current;                              // Возвращаем состояние кнопки
  }
}

boolean debounce5(boolean last){
  boolean current = digitalRead(button5Pin);    // Считать состояние кнопки
  if (last != current)                         // Если изменилось ...
  {
  delay(5);                                    // ждём 5 мс
  current = digitalRead(button5Pin);            // Считываем состояние кнопки
  return current;                              // Возвращаем состояние кнопки
  }
}

boolean debounce6(boolean last){
  boolean current = digitalRead(button6Pin);    // Считать состояние кнопки
  if (last != current)                         // Если изменилось ...
  {
  delay(5);                                    // ждём 5 мс
  current = digitalRead(button6Pin);            // Считываем состояние кнопки
  return current;                              // Возвращаем состояние кнопки
  }

}

void loop() {
  

// часть кода для кнопки, реле и светодиода
currentButton = debounce(lastButton);
if (lastButton == LOW && currentButton == HIGH)   // Если нажатие (условия для светодиода на пине 6)
{
  ledOn = !ledOn;
}


lastButton = currentButton;
digitalWrite(ledPin, ledOn);                         // Изменить статус состояния светодиода


current2Button = debounce2(last2Button);
if (last2Button == LOW && current2Button == HIGH)   // Если нажатие (условия для светодиода на пине 6)
{
  led2On = !led2On;
}


last2Button = current2Button;
digitalWrite(led2Pin, led2On);                         // Изменить статус состояния светодиода


current3Button = debounce3(last3Button);
if (last3Button == LOW && current3Button == HIGH)   // Если нажатие (условия для светодиода на пине 6)
{
  led3On = !led3On;
}


last3Button = current3Button;
digitalWrite(led3Pin, led3On);                         // Изменить статус состояния светодиода


current4Button = debounce4(last4Button);
if (last4Button == LOW && current4Button == HIGH)   // Если нажатие (условия для светодиода на пине 6)
{
  led4On = !led4On;
}


last4Button = current4Button;
digitalWrite(led4Pin, led4On);                         // Изменить статус состояния светодиода

current5Button = debounce5(last5Button);
if (last5Button == LOW && current5Button == HIGH)   // Если нажатие (условия для светодиода на пине 6)
{
  led5On = !led5On;
}


last5Button = current5Button;
digitalWrite(led5Pin, led5On);                         // Изменить статус состояния светодиода

current6Button = debounce6(last6Button);
if (last6Button == LOW && current6Button == HIGH)   // Если нажатие (условия для светодиода на пине 6)
{
  led6On = !led6On;
}


last6Button = current6Button;
digitalWrite(led6Pin, led6On);                         // Изменить статус состояния светодиода


}

 

qbit
Offline
Зарегистрирован: 18.03.2019

DraKuLa21 пишет:

Сократил код до такого вида, теперь только первый выход включается при запуске.
...

 

debounce - не возвращает значение, только при выполнении if. Поэтому возможен возврат случайного значения при ображении к функции.
 
Между 066 и 070 возможно изменение состояния
 
Ждать 5 мс при опросе каждой кнопки не надо, достаточно поместить в loop
 
137, 138 - выполнять достаточно при изменении состояния, т.е. перенести за 144 (перед 145)
 
Для отладки можно все статусы и состояния выводить в сериал.
 
DraKuLa21
Offline
Зарегистрирован: 06.06.2019

Нашёл скетч с другой обработкой кнопок, переделал его под себя и теперь проблем с самопроизвольным включением нет. Но теперь появилась другая проблема - на веб странице не отображается состояние выходов, всегда пишет - OFF. Всё остальное работает отлично.

 

#include <Ethernet2.h>
#include <SPI.h>

int LedPin1 = A0;             // Подключаем светодиод к порту 13
int LedPin2 = A1;
int LedPin3 = A2;
int LedPin4 = A3;
int LedPin5 = A4;
int LedPin6 = A5;
int LedPin7 = 8;


int ButPin1 = 2;             // Подключаем кнопку к выходу 10
int ButPin2 = 3;
int ButPin3 = 4;
int ButPin4 = 5;
int ButPin5 = 6;
int ButPin6 = 7;

int flag1 = 0;                // флаг состояния
int flag2 = 0;
int flag3 = 0;
int flag4 = 0;
int flag5 = 0;
int flag6 = 0;
int flag7 = 0;


String readString = String(30);

// объявляем переменную MY_IP со значением 10.36.1.52
#define MY_IP "192.168.1.206"
// указываем настройки сетевого интерфейса и порт веб-сервера
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 1, 206);
EthernetServer server(80);

void setup()
{
  pinMode(LedPin1, OUTPUT);   // Инициализируем порт "ledPin" как выходной
  pinMode(LedPin2, OUTPUT);
  pinMode(LedPin3, OUTPUT);
  pinMode(LedPin4, OUTPUT);
  pinMode(LedPin5, OUTPUT);
  pinMode(LedPin6, OUTPUT);
  pinMode(LedPin7, OUTPUT);

  digitalWrite(LedPin1, LOW);
  digitalWrite(LedPin2, LOW);
  digitalWrite(LedPin3, LOW);
  digitalWrite(LedPin4, LOW);
  digitalWrite(LedPin5, LOW);
  digitalWrite(LedPin6, LOW);
  digitalWrite(LedPin7, LOW);

// стартуем сетевой интерфейс
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') {
if(readString.indexOf("Led_1=1") >=0) {
//Включаем светодиод
digitalWrite(LedPin1, HIGH);
flag1 = 1;

}else if(readString.indexOf("Led_1=0") >=0){
//Выключаем светодиод
digitalWrite(LedPin1, LOW);
flag1 = 0;
}

if(readString.indexOf("Led_2=1") >=0) {
//Включаем светодиод
digitalWrite(LedPin2, HIGH);
flag2 = 1;

}else if(readString.indexOf("Led_2=0") >=0){
//Выключаем светодиод
digitalWrite(LedPin2, LOW);
flag2 = 0;
} 


if(readString.indexOf("Led_3=1") >=0) {
//Включаем светодиод
digitalWrite(LedPin3, HIGH);
flag3 = 1;

}else if(readString.indexOf("Led_3=0") >=0){
//Выключаем светодиод
digitalWrite(LedPin3, LOW);
flag3 = 0;
} 


if(readString.indexOf("Led_4=1") >=0) {
//Включаем светодиод
digitalWrite(LedPin4, HIGH);
flag4 = 1;

}else if(readString.indexOf("Led_4=0") >=0){
//Выключаем светодиод
digitalWrite(LedPin4, LOW);
flag4 = 0;
} 


if(readString.indexOf("Led_5=1") >=0) {
//Включаем светодиод
digitalWrite(LedPin5, HIGH);
flag5 = 1;

}else if(readString.indexOf("Led_5=0") >=0){
//Выключаем светодиод
digitalWrite(LedPin5, LOW);
flag5 = 0;
} 


if(readString.indexOf("Led_6=1") >=0) {
//Включаем светодиод
digitalWrite(LedPin6, HIGH);
flag6 = 1;

}else if(readString.indexOf("Led_6=0") >=0){
//Выключаем светодиод
digitalWrite(LedPin6, LOW);
flag6 = 0;
} 

if(readString.indexOf("Led_all=1") >=0) {
//Включаем светодиод
digitalWrite(LedPin1, HIGH);
digitalWrite(LedPin2, HIGH);
digitalWrite(LedPin3, HIGH);
digitalWrite(LedPin4, HIGH);
digitalWrite(LedPin5, HIGH);
digitalWrite(LedPin6, HIGH);

flag1 = 1;
flag2 = 1;
flag3 = 1;
flag4 = 1;
flag5 = 1;
flag6 = 1;

}else if(readString.indexOf("Led_all=0") >=0){
//Выключаем светодиод
digitalWrite(LedPin1, LOW);
digitalWrite(LedPin2, LOW);
digitalWrite(LedPin3, LOW);
digitalWrite(LedPin4, LOW);
digitalWrite(LedPin5, LOW);
digitalWrite(LedPin6, LOW);

flag1 = 0;
flag2 = 0;
flag3 = 0;
flag4 = 0;
flag5 = 0;
flag6 = 0;
}

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>"));

client.print(F("<input type=button value='Моя комната | ON' onmousedown=location.href='/?Led_1=1'>"));
client.println(F("<input type=button value='Моя комната | OFF' onmousedown=location.href='/?Led_1=0'><br/><br/>"));
client.print(F("<input type=button value='Ванна | ON' onmousedown=location.href='/?Led_2=1'>"));
client.println(F("<input type=button value='Ванна | OFF' onmousedown=location.href='/?Led_2=0'><br/><br/>"));
client.print(F("<input type=button value='Туалет | ON' onmousedown=location.href='/?Led_3=1'>"));
client.println(F("<input type=button value='Туалет | OFF' onmousedown=location.href='/?Led_3=0'><br/><br/>"));
client.print(F("<input type=button value='Кухня | ON' onmousedown=location.href='/?Led_4=1'>"));
client.println(F("<input type=button value='Кухня | OFF' onmousedown=location.href='/?Led_4=0'><br/><br/>"));
client.print(F("<input type=button value='Спальня | ON' onmousedown=location.href='/?Led_5=1'>"));
client.println(F("<input type=button value='Спальня | OFF' onmousedown=location.href='/?Led_5=0'><br/><br/>"));
client.print(F("<input type=button value='Коридор | ON' onmousedown=location.href='/?Led_6=1'>"));
client.println(F("<input type=button value='Коридор | OFF' onmousedown=location.href='/?Led_6=0'><br/><br/>"));
client.print(F("<input type=button value='ON ALL' onmousedown=location.href='/?Led_all=1'>"));
client.println(F("<input type=button value='OFF ALL' onmousedown=location.href='/?Led_all=0'><br/><br/>"));



if (flag1){
client.println("<font size=’5′>Моя комната - ON.");
client.println("<br></br>");
}else{
client.println("<font size=’5′>Моя комната - OFF");
client.println("<br></br>");
}

if (flag2){
client.println("<font size=’5′>Ванная - ON.");
client.println("<br></br>");
}else{
client.println("<font size=’5′>Ванная - OFF");
client.println("<br></br>");
}

if (flag3){
client.println("<font size=’5′>Туалет - ON.");
client.println("<br></br>");
}else{
client.println("<font size=’5′>Туалет - OFF");
client.println("<br></br>");
}

if (flag4){
client.println("<font size=’5′>Кухня - ON.");
client.println("<br></br>");
}else{
client.println("<font size=’5′>Кухня - OFF");
client.println("<br></br>");
}

if (flag5){
client.println("<font size=’5′>Спальня - ON.");
client.println("<br></br>");
}else{
client.println("<font size=’5′>Спальня - OFF");
client.println("<br></br>");
}

if (flag6){
client.println("<font size=’5′>Коридор - ON.");
client.println("<br></br>");
}else{
client.println("<font size=’5′>Коридор - OFF");
client.println("<br></br>");
}

if (flag7){
client.println("<font size=’5′>Преобразователь - ON.");
client.println("<br></br>");
}else{
client.println("<font size=’5′>Преобразователь - OFF");
client.println("<br></br>");
}

client.println(F("</center></body>"));
client.println("</html>");
readString="";
//останавливаем web-client
client.stop();
}
}
}
}
  
  if(digitalRead(ButPin1) == HIGH && flag1 == 0)      
    {           
      delay(50);                                   
      digitalWrite(LedPin1, !digitalRead(LedPin1));
      flag1 = 1;
    }
  
  if(digitalRead(ButPin1) == LOW && flag1 == 1)
    {
      delay(50);
      flag1 = 0;
    }

     

   if(digitalRead(ButPin2) == HIGH && flag2 == 0)      
    {           
      delay(50);                                   
      digitalWrite(LedPin2, !digitalRead(LedPin2));
      flag2 = 1;
    }
  
  if(digitalRead(ButPin2) == LOW && flag2 == 1)
    {
      delay(50);
      flag2 = 0;
    }

    

      if(digitalRead(ButPin3) == HIGH && flag3 == 0)      
    {           
      delay(50);                                   
      digitalWrite(LedPin3, !digitalRead(LedPin3));
      flag3 = 1;
    }
  
  if(digitalRead(ButPin3) == LOW && flag3 == 1)
    {
      delay(50);
      flag3 = 0;
    }

    

      if(digitalRead(ButPin4) == HIGH && flag4 == 0)      
    {           
      delay(50);                                   
      digitalWrite(LedPin4, !digitalRead(LedPin4));
      flag4 = 1;
    }
  
  if(digitalRead(ButPin4) == LOW && flag4 == 1)
    {
      delay(50);
      flag4 = 0;
    }

    

      if(digitalRead(ButPin5) == HIGH && flag5 == 0)      
    {           
      delay(50);                                   
      digitalWrite(LedPin5, !digitalRead(LedPin5));
      flag5 = 1;
    }
  
  if(digitalRead(ButPin5) == LOW && flag5 == 1)
    {
      delay(50);
      flag5 = 0;
    }

    

      if(digitalRead(ButPin6) == HIGH && flag6 == 0)      
    {           
      delay(50);                                   
      digitalWrite(LedPin6, !digitalRead(LedPin6));
      flag6 = 1;
    }
  
  if(digitalRead(ButPin6) == LOW && flag6 == 1)
    {
      delay(50);
      flag6 = 0;
    }

    if (flag1 == 1 || flag2 == 1 || flag3 == 1 || flag4 == 1 || flag5 == 1 || flag6 == 1) {
  digitalWrite(LedPin7, HIGH);
  flag7 = 1;
}
else 
{
  digitalWrite(LedPin7, LOW);
  flag7 = 0;
}

       
}

 

DraKuLa21
Offline
Зарегистрирован: 06.06.2019

Извиняюсь, уже исправил.