ESP8266

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Как-то так:

if ( Serial.available() )
{ 
  char ch = Serial.read();
  if (ch == '\r' || ch == '\n')
  {
    //здесь делай твои проверки
    searching = "";
  }
  else searching += ch;
}

 

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Проверил, спасибо! Но не работает, буду разбираться:

HardwareSerial & ESPport = Serial3;
const int COM_BAUD = 9600;
String searching;
void setup() {
  pinMode(13, OUTPUT);
  ESPport.begin(115200);
  Serial.begin(COM_BAUD);
  Serial.println("Setup done");
}

void loop() {
  if ( ESPport.available() )
  {
    Serial.write( ESPport.read());
  }
  if ( Serial.available() )
  {
    char ch = Serial.read();
    if (ch == '\r' || ch == '\n')
    {
      if (searching == "LED1-ON")
      {
        digitalWrite(13, 1);
      }
      if (searching == "LED1-OFF")
      {
        digitalWrite(13, 0);
      }
      searching = "";
    }
    else searching += ch;
  }
}
Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Читай пост #44

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Спасибо, исправил. Ничего не изменилось!

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Я уже не знаю что делать! В сериал выводится "LED-ON" и "LED-OFF" но я не могу ими манипулировать. Помогите пожалуйста. Что только не перепробовал(((

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Mestniy96 пишет:

Проверил, спасибо! Но не работает, буду разбираться:

HardwareSerial & ESPport = Serial3;
const int COM_BAUD = 9600;
String searching;
void setup() {
  pinMode(13, OUTPUT);
  ESPport.begin(115200);
  Serial.begin(COM_BAUD);
  Serial.println("Setup done");
}

void loop() {
  if ( ESPport.available() )
  {
    Serial.write( ESPport.read());
  }
  if ( Serial.available() )
  {
    char ch = Serial.read();
    if (ch == '\r' || ch == '\n')
    {
      if (searching == "LED1-ON")
      {
        digitalWrite(13, 1);
      }
      if (searching == "LED1-OFF")
      {
        digitalWrite(13, 0);
      }
      searching = "";
    }
    else searching += ch;
  }
}

Чего тут разбираться-то????!

Вот Вы прочитали символ в строке 14 и вывели его на печать. Что Вы дальше с ним сделали? А ничего, просто выбросили и стали читать новый в строке 18.

Т.е. Вы через символ просто выбрасываете. И чего Вы ждёте?

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Вы просто гений!!!!! Спасибо Вам большое проблема решена!!!! Спасибо всем!!!!

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Теперь возникла следущая проблема. Мне нужно по таймеру 3 или 6 реле. Хочу использовать 6, но пока мне 3 хватит.

#define RTIME1 1;
#define RTIME2 1;
#define RTIME3 1;
#define RTIME4 1;
#define RTIME5 1;
#define RTIME6 1;
int reley1 = 2;
int reley2 = 3;
int reley3 = 4;
int reley4 = 5;
int reley5 = 6;
int reley6 = 7;
unsigned long currentTime;
unsigned long loopTime;
void setup()
{
  pinMode(reley1, OUTPUT);
  pinMode(reley2, OUTPUT);
  pinMode(reley3, OUTPUT);
  pinMode(reley4, OUTPUT);
  pinMode(reley5, OUTPUT);
  pinMode(reley6, OUTPUT);
  currentTime = millis(); 
  loopTime = currentTime;
  pinMode(Trig_pin, OUTPUT);
  pinMode(Echo_pin, INPUT);
}
void loop()
{
 digitalWrite(Trig_pin, HIGH);
  delayMicroseconds(10);
  digitalWrite(Trig_pin, LOW);
  distacne_cm = pulseIn(Echo_pin, HIGH);
  sm = distacne_cm / 29 / 2;
  if (sm >= 5)
  {
    timereley();
  }
  Serial.println(sm);
  delay(100);
}
void timereley()
{
    currentTime = millis(); // считываем время
    if (currentTime >= (loopTime + RTIME1 * 60000)
    {
    digitalWrite(reley1, HIGH);
    }
    if (currentTime >= (loopTime + RTIME2 * 60000)
    {
    digitalWrite(reley2, HIGH);
    }
    if (currentTime >= (loopTime + RTIME3 * 60000)
    {
    digitalWrite(reley3, HIGH);
    }
    if (currentTime >= (loopTime + RTIME4 * 60000)
    {
    digitalWrite(reley4, HIGH);
    }
    if (currentTime >= (loopTime + RTIME5 * 60000)
    {
    digitalWrite(reley5, HIGH);
    }
    if (currentTime >= (loopTime + RTIME6 * 60000)
    {
    digitalWrite(reley6, HIGH);
    }
}

 

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Пока не пришли реле, хочу проверить, точно ли я написал код?

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Хотя с ними я разберусь!

Вот еще вопрос: Я решил добавить еще 4 кнопки. Но высвечиваются на странице только 2:

#include <ESP8266WiFi.h>


const char* ssid = "DIR-615RU";// ssid вашего роутера
const char* password = "15091966";// пароль вашего роутера

//int ledPin = 2; // GPIO2
WiFiServer server(80);


boolean PinStatus[] = {
  1, 2, 3, 4, 5, 6
};
int incomingByte;

void setup() {
  Serial.begin(115200);
  delay(10);


  //pinMode(ledPin, OUTPUT);
  //digitalWrite(ledPin, LOW);

  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);

    Serial.print(".");

  }
  Serial.println("");
  Serial.println("WiFi connected");

  // Start the server
  server.begin();
  //Serial.println("Server started");

  // Print the IP address
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");
  int i = 0;
  i <= 2;
  i++;
  PinStatus[i] = false;

}

void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }

  // Wait until the client sends some data
  //Serial.println("new client");
  while (!client.available()) {
    delay(1);
  }

  // Read the first line of the request
  String request = client.readStringUntil('\r');
  //Serial.println(request);
  client.flush();

  // Match the request

  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");

  //1 реле
  if (request.indexOf("/LED1=ON") != -1) {
    Serial.println("LED1-ON");
    PinStatus[1] = true;
  }
  if (request.indexOf("/LED1=OFF") != -1) {
    Serial.println("LED1-OFF");
    PinStatus[1] = false;
  }
  //2 реле
  if (request.indexOf("/LED2=ON") != -1) {
    Serial.println("LED2-ON");
    PinStatus[2] = true;
  }
  if (request.indexOf("/LED2=OFF") != -1) {
    Serial.println("LED2-OFF");
    PinStatus[2] = false;
  }
  //3 реле
  if (request.indexOf("/LED3=ON") != -1) {
    Serial.println("LED3-ON");
    PinStatus[2] = true;
  }
  if (request.indexOf("/LED3=OFF") != -1) {
    Serial.println("LED3-OFF");
    PinStatus[2] = false;
  }
  //4 реле
  if (request.indexOf("/LED4=ON") != -1) {
    Serial.println("LED4-ON");
    PinStatus[2] = true;
  }
  if (request.indexOf("/LED4=OFF") != -1) {
    Serial.println("LED4-OFF");
    PinStatus[2] = false;
  }
  //5 реле
  if (request.indexOf("/LED5=ON") != -1) {
    Serial.println("LED5-ON");
    PinStatus[2] = true;
  }
  if (request.indexOf("/LED5=OFF") != -1) {
    Serial.println("LED5-OFF");
    PinStatus[2] = false;
  }
  //6 реле
  if (request.indexOf("/LED6=ON") != -1) {
    Serial.println("LED6-ON");
    PinStatus[2] = true;
  }
  if (request.indexOf("/LED6=OFF") != -1) {
    Serial.println("LED6-OFF");
    PinStatus[2] = false;
  }
  // Set ledPin according to the request
  //digitalWrite(ledPin, value);




  // client.print("Led pin 1 is now: ");

  // if(PinStatus[1] == true) client.print("ON");

  //if(PinStatus[1] == false) client.print("OFF");

  //client.println("");

  //client.print("Led pin 2 is now: ");

  //if(PinStatus[2] == true) client.print("ON");

  //if(PinStatus[2] == false) client.print("OFF");



  client.println("<br><br>");
  if (PinStatus[1] == false) client.println("ArduinoPIN 1: <a href=\"/LED1=ON\">OFF</a><br>");
  if (PinStatus[1] == true) client.println("ArduinoPIN 1: <a href=\"/LED1=OFF\">ON</a><br>");
  if (PinStatus[2] == false) client.println("ArduinoPIN 2: <a href=\"/LED2=ON\">OFF</a><br>");
  if (PinStatus[2] == true) client.println("ArduinoPIN 2: <a href=\"/LED2=OFF\">ON</a><br>");
  if (PinStatus[3] == false) client.println("ArduinoPIN 3: <a href=\"/LED3=ON\">OFF</a><br>");
  if (PinStatus[3] == true) client.println("ArduinoPIN 3: <a href=\"/LED3=OFF\">ON</a><br>");
  if (PinStatus[4] == false) client.println("ArduinoPIN 4: <a href=\"/LED4=ON\">OFF</a><br>");
  if (PinStatus[4] == true) client.println("ArduinoPIN 4: <a href=\"/LED4=OFF\">ON</a><br>");
  if (PinStatus[5] == false) client.println("ArduinoPIN 5: <a href=\"/LED5=ON\">OFF</a><br>");
  if (PinStatus[5] == true) client.println("ArduinoPIN 5: <a href=\"/LED5=OFF\">ON</a><br>");
  if (PinStatus[6] == false) client.println("ArduinoPIN 6: <a href=\"/LED6=ON\">OFF</a><br>");
  if (PinStatus[6] == true) client.println("ArduinoPIN 6: <a href=\"/LED6=OFF\">ON</a><br>");
  client.println("</html>");

  delay(1);
  //Serial.println("Client disonnected");
  //Serial.println("");
  if (Serial.available() > 0)  //если есть доступные данные
  {

    incomingByte = Serial.read();

    if (incomingByte == 'Q')PinStatus[1] = true;
    if (incomingByte == 'W')PinStatus[1] = false;
    if (incomingByte == 'E')PinStatus[2] = true;
    if (incomingByte == 'R')PinStatus[2] = false;
  }
}

 

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Вместо

if (currentTime >= (loopTime + RTIME1 * 60000)

пиши

if (currentTime - loopTime >=  RTIME1 * 60000)

Дело не только в количестве скобочек....

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Спасибо. Простите что Вас отвлекаю своими дуртскаими вопросами((.

Я очень Вам благодарен. Буду разбираться!

Mestniy96
Offline
Зарегистрирован: 31.08.2015

А со вторым кодом не подскажите?

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Вероятно потому, что в строке 134 LED6, а в строке 136 PinStatus[2] и так для всех LED2-LED6

Сразу предостерегу от ошибки: PinStatus[6] это выход за пределы массива. В массивах нумерация начинается с нуля.

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Больше двух не показывает. Изменил как вы сказали:

#include <ESP8266WiFi.h>


const char* ssid = "DIR-615RU";// ssid вашего роутера
const char* password = "15091966";// пароль вашего роутера

//int ledPin = 2; // GPIO2
WiFiServer server(80);


boolean PinStatus[] = {1, 2, 3, 4, 5, 6};
int incomingByte;

void setup() {
  Serial.begin(115200);
  delay(10);


  //pinMode(ledPin, OUTPUT);
  //digitalWrite(ledPin, LOW);

  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);

    Serial.print(".");

  }
  Serial.println("");
  Serial.println("WiFi connected");

  // Start the server
  server.begin();
  //Serial.println("Server started");

  // Print the IP address
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");
  int i = 0;
  i <= 6;
  i++;
  PinStatus[i] = false;

}

void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }

  // Wait until the client sends some data
  //Serial.println("new client");
  while (!client.available()) {
    delay(1);
  }

  // Read the first line of the request
  String request = client.readStringUntil('\r');
  //Serial.println(request);
  client.flush();

  // Match the request

  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");

  //1 реле
  if (request.indexOf("/LED1=ON") != -1) {
    Serial.println("LED1-ON");
    PinStatus[0] = true;
  }
  if (request.indexOf("/LED1=OFF") != -1) {
    Serial.println("LED1-OFF");
    PinStatus[0] = false;
  }
  //2 реле
  if (request.indexOf("/LED2=ON") != -1) {
    Serial.println("LED2-ON");
    PinStatus[1] = true;
  }
  if (request.indexOf("/LED2=OFF") != -1) {
    Serial.println("LED2-OFF");
    PinStatus[1] = false;
  }
  //3 реле
  if (request.indexOf("/LED3=ON") != -1) {
    Serial.println("LED3-ON");
    PinStatus[2] = true;
  }
  if (request.indexOf("/LED3=OFF") != -1) {
    Serial.println("LED3-OFF");
    PinStatus[2] = false;
  }
  //4 реле
  if (request.indexOf("/LED4=ON") != -1) {
    Serial.println("LED4-ON");
    PinStatus[3] = true;
  }
  if (request.indexOf("/LED4=OFF") != -1) {
    Serial.println("LED4-OFF");
    PinStatus[3] = false;
  }
  //5 реле
  if (request.indexOf("/LED5=ON") != -1) {
    Serial.println("LED5-ON");
    PinStatus[4] = true;
  }
  if (request.indexOf("/LED5=OFF") != -1) {
    Serial.println("LED5-OFF");
    PinStatus[4] = false;
  }
  //6 реле
  if (request.indexOf("/LED6=ON") != -1) {
    Serial.println("LED6-ON");
    PinStatus[5] = true;
  }
  if (request.indexOf("/LED6=OFF") != -1) {
    Serial.println("LED6-OFF");
    PinStatus[5] = false;
  }
  // Set ledPin according to the request
  //digitalWrite(ledPin, value);




  // client.print("Led pin 1 is now: ");

  // if(PinStatus[1] == true) client.print("ON");

  //if(PinStatus[1] == false) client.print("OFF");

  //client.println("");

  //client.print("Led pin 2 is now: ");

  //if(PinStatus[2] == true) client.print("ON");

  //if(PinStatus[2] == false) client.print("OFF");



  client.println("<br><br>");
  if (PinStatus[0] == false) client.println("ArduinoPIN 1: <a href=\"/LED1=ON\">OFF</a><br>");
  if (PinStatus[0] == true) client.println("ArduinoPIN 1: <a href=\"/LED1=OFF\">ON</a><br>");
  if (PinStatus[1] == false) client.println("ArduinoPIN 2: <a href=\"/LED2=ON\">OFF</a><br>");
  if (PinStatus[1] == true) client.println("ArduinoPIN 2: <a href=\"/LED2=OFF\">ON</a><br>");
  if (PinStatus[2] == false) client.println("ArduinoPIN 3: <a href=\"/LED3=ON\">OFF</a><br>");
  if (PinStatus[2] == true) client.println("ArduinoPIN 3: <a href=\"/LED3=OFF\">ON</a><br>");
  if (PinStatus[3] == false) client.println("ArduinoPIN 4: <a href=\"/LED4=ON\">OFF</a><br>");
  if (PinStatus[3] == true) client.println("ArduinoPIN 4: <a href=\"/LED4=OFF\">ON</a><br>");
  if (PinStatus[4] == false) client.println("ArduinoPIN 5: <a href=\"/LED5=ON\">OFF</a><br>");
  if (PinStatus[4] == true) client.println("ArduinoPIN 5: <a href=\"/LED5=OFF\">ON</a><br>");
  if (PinStatus[5] == false) client.println("ArduinoPIN 6: <a href=\"/LED6=ON\">OFF</a><br>");
  if (PinStatus[5] == true) client.println("ArduinoPIN 6: <a href=\"/LED6=OFF\">ON</a><br>");
  client.println("</html>");

  delay(1);
  //Serial.println("Client disonnected");
  //Serial.println("");
  if (Serial.available() > 0)  //если есть доступные данные
  {

    incomingByte = Serial.read();

    if (incomingByte == 'Q')PinStatus[1] = true;
    if (incomingByte == 'W')PinStatus[1] = false;
    if (incomingByte == 'E')PinStatus[2] = true;
    if (incomingByte == 'R')PinStatus[2] = false;
  }
}

 

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Понял что проблема в br, но вот как их правильно вписать не знаю. Так не работает:

 client.println("<br><br><br><br><br><br>");
  if (PinStatus[0] == false) client.println("ArduinoPIN 1: <a href=\"/LED1=ON\">OFF</a><br>");
  if (PinStatus[0] == true) client.println("ArduinoPIN 1: <a href=\"/LED1=OFF\">ON</a><br>");
  if (PinStatus[1] == false) client.println("ArduinoPIN 2: <a href=\"/LED2=ON\">OFF</a><br>");
  if (PinStatus[1] == true) client.println("ArduinoPIN 2: <a href=\"/LED2=OFF\">ON</a><br>");
  if (PinStatus[2] == false) client.println("ArduinoPIN 3: <a href=\"/LED3=ON\">OFF</a><br>");
  if (PinStatus[2] == true) client.println("ArduinoPIN 3: <a href=\"/LED3=OFF\">ON</a><br>");
  if (PinStatus[3] == false) client.println("ArduinoPIN 4: <a href=\"/LED4=ON\">OFF</a><br>");
  if (PinStatus[3] == true) client.println("ArduinoPIN 4: <a href=\"/LED4=OFF\">ON</a><br>");
  if (PinStatus[4] == false) client.println("ArduinoPIN 5: <a href=\"/LED5=ON\">OFF</a><br>");
  if (PinStatus[4] == true) client.println("ArduinoPIN 5: <a href=\"/LED5=OFF\">ON</a><br>");
  if (PinStatus[5] == false) client.println("ArduinoPIN 6: <a href=\"/LED6=ON\">OFF</a><br>");
  if (PinStatus[5] == true) client.println("ArduinoPIN 6: <a href=\"/LED6=OFF\">ON</a><br>");
  client.println("</html>");

 

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

А что такое в строках 48-51? Наверно имеется в виду

for (int i=0; i<6; i++) PinStatus[i] = false;

хотя если присвоить true, полагаю будут видны все шесть кнопок...

В строках 181-184 только двум элементам массива присваивается значение, может надо расширить до шести....?

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Танци с бубнами и Ваша помощь, принесли пользу)))

Вот готовый рабочий скетч:


#include <ESP8266WiFi.h>


const char* ssid = "DIR-615RU";// ssid вашего роутера
const char* password = "15091966";// пароль вашего роутера

//int ledPin = 2; // GPIO2
WiFiServer server(80);


boolean PinStatus[] = {1, 2, 3, 4, 5, 6};
int incomingByte;

void setup() {
  Serial.begin(115200);
  delay(10);


  //pinMode(ledPin, OUTPUT);
  //digitalWrite(ledPin, LOW);

  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);

    Serial.print(".");

  }
  Serial.println("");
  Serial.println("WiFi connected");

  // Start the server
  server.begin();
  //Serial.println("Server started");

  // Print the IP address
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");
  for (int i=0; i<6; i++) PinStatus[i] = false;
}

void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }

  // Wait until the client sends some data
  //Serial.println("new client");
  while (!client.available()) {
    delay(1);
  }

  // Read the first line of the request
  String request = client.readStringUntil('\r');
  //Serial.println(request);
  client.flush();

  // Match the request

  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");

  //1 реле
  if (request.indexOf("/LED1=ON") != -1) {
    Serial.println("LED1-ON");
    PinStatus[0] = true;
  }
  if (request.indexOf("/LED1=OFF") != -1) {
    Serial.println("LED1-OFF");
    PinStatus[0] = false;
  }
  //2 реле
  if (request.indexOf("/LED2=ON") != -1) {
    Serial.println("LED2-ON");
    PinStatus[1] = true;
  }
  if (request.indexOf("/LED2=OFF") != -1) {
    Serial.println("LED2-OFF");
    PinStatus[1] = false;
  }
  //3 реле
  if (request.indexOf("/LED3=ON") != -1) {
    Serial.println("LED3-ON");
    PinStatus[2] = true;
  }
  if (request.indexOf("/LED3=OFF") != -1) {
    Serial.println("LED3-OFF");
    PinStatus[2] = false;
  }
  //4 реле
  if (request.indexOf("/LED4=ON") != -1) {
    Serial.println("LED4-ON");
    PinStatus[3] = true;
  }
  if (request.indexOf("/LED4=OFF") != -1) {
    Serial.println("LED4-OFF");
    PinStatus[3] = false;
  }
  //5 реле
  if (request.indexOf("/LED5=ON") != -1) {
    Serial.println("LED5-ON");
    PinStatus[4] = true;
  }
  if (request.indexOf("/LED5=OFF") != -1) {
    Serial.println("LED5-OFF");
    PinStatus[4] = false;
  }
  //6 реле
  if (request.indexOf("/STOP") != -1) {
    Serial.println("STOP");
    PinStatus[5] = true;
  }
  if (request.indexOf("/STOP") != -1) {
    Serial.println("STOP");
    PinStatus[5] = false;
  }
  // Set ledPin according to the request
  //digitalWrite(ledPin, value);




  // client.print("Led pin 1 is now: ");

  // if(PinStatus[1] == true) client.print("ON");

  //if(PinStatus[1] == false) client.print("OFF");

  //client.println("");

  //client.print("Led pin 2 is now: ");

  //if(PinStatus[2] == true) client.print("ON");

  //if(PinStatus[2] == false) client.print("OFF");



  client.println("<br><br><br><br><br><br>");
  if (PinStatus[0] == false) client.println("RELE 1: <a href=\"/LED1=ON\">OFF</a></br>");
  if (PinStatus[0] == true) client.println("RELE 1: <a href=\"/LED1=OFF\">ON</a></br>");
  if (PinStatus[1] == false) client.println("RELE 2: <a href=\"/LED2=ON\">OFF</a></br>");
  if (PinStatus[1] == true) client.println("RELE 2: <a href=\"/LED2=OFF\">ON</a></br>");
  if (PinStatus[2] == false) client.println("RELE 3: <a href=\"/LED3=ON\">OFF</a></br>");
  if (PinStatus[2] == true) client.println("RELE 3: <a href=\"/LED3=OFF\">ON</a></br>");
  if (PinStatus[3] == false) client.println("RELE 4: <a href=\"/LED4=ON\">OFF</a></br>");
  if (PinStatus[3] == true) client.println("RELE 4: <a href=\"/LED4=OFF\">ON</a></br>");
  if (PinStatus[4] == false) client.println("RELE 5: <a href=\"/LED5=ON\">OFF</a></br>");
  if (PinStatus[4] == true) client.println("RELE 5: <a href=\"/LED5=OFF\">ON</a></br>");
  if (PinStatus[5] == false) client.println("RELE 6: <a href=\"/STOP\">STOP</a></br>");
  if (PinStatus[5] == true) client.println("RELE 6: <a href=\"/STOP\">STOP</a></br>");
  client.println("</html>");

  delay(1);
  //Serial.println("Client disonnected");
  //Serial.println("");
  if (Serial.available() > 0)  //если есть доступные данные
  {

    incomingByte = Serial.read();

    if (incomingByte == 'Q')PinStatus[0] = true;
    if (incomingByte == 'W')PinStatus[0] = false;
    if (incomingByte == 'E')PinStatus[1] = true;
    if (incomingByte == 'R')PinStatus[1] = false;
    if (incomingByte == 'T')PinStatus[2] = true;
    if (incomingByte == 'Y')PinStatus[2] = false;
    if (incomingByte == 'U')PinStatus[3] = true;
    if (incomingByte == 'I')PinStatus[3] = false;
    if (incomingByte == 'O')PinStatus[4] = true;
    if (incomingByte == 'P')PinStatus[4] = false;
    if (incomingByte == 'A')PinStatus[5] = true;
    if (incomingByte == 'S')PinStatus[5] = false;
  }
}
Mestniy96
Offline
Зарегистрирован: 31.08.2015

А вот второй код, но его я еще не проверял)


HardwareSerial & ESPport = Serial3;
const int COM_BAUD = 9600;
String searching = "";
int readreley;
int Trig_pin = 2; // управляющий пин подключен к 2 пину на ардуино.
int Echo_pin = 3; // пин с данными от датчика подключен к 3 пин на ардуино.
int distacne_cm;//  переменная длины импульса.
int sm;// переменная расстояния к предмету.
#define RTIME1 1
#define RTIME2 1
#define RTIME3 1
#define RTIME4 1
#define RTIME5 1
int reley1 = 2;
int reley2 = 3;
int reley3 = 4;
int reley4 = 5;
int reley5 = 6;
int reley6 = 7;
bool y = false;
unsigned long currentTime;//переменные для времени
unsigned long loopTime;
void setup() {
  pinMode(Trig_pin, OUTPUT);//2 лапка - выход
  pinMode(Echo_pin, INPUT);//3 лапка - вход
  Serial.begin(9600);  // открываем сериал порт
  pinMode(reley1, OUTPUT);
  pinMode(reley2, OUTPUT);
  pinMode(reley3, OUTPUT);
  pinMode(reley4, OUTPUT);
  pinMode(reley5, OUTPUT);
  pinMode(reley6, OUTPUT);
  ESPport.begin(115200);
  Serial.begin(COM_BAUD);
  Serial.println("Setup done");
  currentTime = millis(); // считываем время
  loopTime = currentTime;
}

void loop() {
  if ( ESPport.available() > 0)
  {
    char ch = ESPport.read();
    if (ch == '\r' || ch == '\n')
    {
      //Реле 1
      if (searching == "LED1-ON")
      {
        digitalWrite(reley1, 1);
      }
      if (searching == "LED1-OFF")
      {
        digitalWrite(reley1, 0);
      }
      //Реле 2
      if (searching == "LED2-ON")
      {
        digitalWrite(reley2, 1);
      }
      if (searching == "LED2-OFF")
      {
        digitalWrite(reley2, 0);
      }
      //Реле 3
      if (searching == "LED3-ON")
      {
        digitalWrite(reley3, 1);
      }
      if (searching == "LED3-OFF")
      {
        digitalWrite(reley3, 0);
      }
      //Реле 4
      if (searching == "LED4-ON")
      {
        digitalWrite(reley4, 1);
      }
      if (searching == "LED4-OFF")
      {
        digitalWrite(reley4, 0);
      }
      //Реле 5
      if (searching == "LED5-ON")
      {
        digitalWrite(reley5, 1);
      }
      if (searching == "LED5-OFF")
      {
        digitalWrite(reley5, 0);
      }
      //Реле 6
      if (searching == "STOP")
      {
        y = false;
      }
      searching = "";
    }
    else searching += ch;
    Serial.write( ESPport.read());
  }
  digitalWrite(Trig_pin, HIGH);
  delayMicroseconds(10);
  digitalWrite(Trig_pin, LOW);
  distacne_cm = pulseIn(Echo_pin, HIGH);
  sm = distacne_cm / 29 / 2;
  if (sm >= 5)
  {
    y = true;
    if (y == true)
    {
    void timereley();
    }
  }
  Serial.println(sm);
  delay(100);
}
void timereley()
{
  currentTime = millis(); // считываем время
  if (currentTime - loopTime >=  RTIME1 * 60000)
  {
    digitalWrite(reley1, HIGH);
    ESPport.write('Q');
  }
  if (currentTime - loopTime >=  RTIME2 * 60000)
  {
    digitalWrite(reley2, HIGH);
    ESPport.write('E');
  }
  if (currentTime - loopTime >=  RTIME3 * 60000)
  {
    digitalWrite(reley3, HIGH);
    ESPport.write('T');
  }
  if (currentTime - loopTime >=  RTIME4 * 60000)
  {
    digitalWrite(reley4, HIGH);
    ESPport.write('U');
  }
  if (currentTime - loopTime >=  RTIME5 * 60000)
  {
    digitalWrite(reley5, HIGH);
    ESPport.write('O');
  }
}

 

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Если не трудно, то укажите на ошибки пожалуйста!!!

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

В строке 99 надо написать так:

Serial.write(ch);

Строка 108 лишняя.

В строке 111 "void" лишнее

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Я надеюсь остальное, в принцыпе должно работать?

Mestniy96
Offline
Зарегистрирован: 31.08.2015

И почему 108 лишняя? Как программа поймет, что y = true? Чет видать я вообще тупой(( Не пинайте сильно пожалуйста. 

Заранее спасибо.

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

В строке 20 y=false; Ты хочешь его где-то сделать true, добавь по аналогии с строками 92-95 searching="START" или строку 94 напиши так

y ^= 1;

Он будет включаться и выключаться одной командой. Но 108 строка однозначно там неуместна.

krepton85
Offline
Зарегистрирован: 02.02.2016

А зачем здесь применен ультрозвукавой датчик расстояния? Что вы замышляете? :)

Не ужели этот скетчь для самого модуля wi fi что я вам дал, стабильно работает особенно входящие данные через сериал порт - сразу ли обновляет данные эти на web страничке?

А еще здесь не удобно обновлять страницу что бы все го лишь обновить данные на ней, так как если нажать на ссылку (кнопку) на странице то в адресной строке уже появится прямая сцылка на эту кнопку  если нажать обновить страницу в браузере, то просто павторно выполнится эта команда и приходится стирать лишнее в адресной строке и нажимать Enter. 

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Кнопка старт не подходит. И выполнение запуска программы одной командой STOP тоже не подходит.

В строке 108, я хотел сказать, что если УЗ датчик принял показания больше и = 5 см, то y = true, и тогда нужно выполнить функцию! 

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Можете помочь добавить поле ввода и кнопку напротив каждого из реле! Хочу похимичить с отправлением тайминга!!!

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Хочеться что-то типа этого. Но не знаю как вставить это в код, чтобы она была напротив вкл/выкл.

<input type="number" id="Editbox1" style="position:absolute;left:125px;top:290px;width:47px;height:18px;line-height:18px;z-index:9;" name="Editbox1" value="" maxlength="3">

 

Mestniy96
Offline
Зарегистрирован: 31.08.2015

krepton85 я хочу похимичить немного. И пока это самый подходящий код)))

krepton85
Offline
Зарегистрирован: 02.02.2016

Ну тут как я понял если нужно что то написать на вэб странице нужно как и с сериал принт. Только вводить команду client.print(html код ваш) это если не нужен в конце переход на следующуюю строку, если нужен то clien.println(html код).

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Оооо. Спасибочки. Как раз этот совет мне и был нужен)))

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Попробовал вот так, но ничего не вышло((

  if (PinStatus[4] == true) {
    client.print("RELE 1: <a href=\"/LED1=ON\">OFF</a>");
    client.println("<input type="text" name="user1" />");
  }

 

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Mestniy96, генератор html кода при помощи 100500 client.print() откровенное УГ. Напиши свою страничку на html, и храни её целиком в виде html. в тех местах, где нужно её изменять вставляй свои теги, которые подменяй во время выдачи странички, как вариант используй javascript или ajax.

Mestniy96
Offline
Зарегистрирован: 31.08.2015

Можно подробнее? А куда зафигачить эту страничку?

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Полистай эту тему.