две программы отдельно работают, а вместе нет, arduino shield and uno

Тема в разделе "Arduino & Shields", создана пользователем Алексей132, 14 ноя 2017.

Метки:
?

В чем может быть причина, если по отдельности все работает

  1. код менял, ставил в разные места программы, и в while и веб интерфейса

    1 голосов
    100,0%
  2. Делал delay, очистку экрана, без результата

    0 голосов
    0,0%
Можно выбрать сразу несколько вариантов.
  1. Товарище, коллеги, подскажите пожалуйста, в чем может быть причина.
    Есть девайс - arduino uno и ethernet shield

    Написал код для АЦП и код веб страницы, вывел данные на экран без проблем, все работает
    но необходимо было еще эти же данные вывести на дисплей,
    написал отдельно код и вывел, проверил - работает

    но когда соединил эти две программы, данные на дисплее не отображаются а на веб странице все работает, как так может быть?
    Интересно, что АЦП работает
    а строки которые идут под ним, уже нет!


    не работают эти строки
    в setup
    lcd.begin(16, 2);
    lcd.print("permanent name");

    в loop
    lcd.setCursor(7, 1);
    lcd.print(Value_volt);



    #include <LiquidCrystal.h> // дисплей

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

    LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //дисплей

    // #define DHTPIN 3 //Обозначаем номер пина, к которому подключен датчик


    int PotenciometrPin = A0; // АЦП
    int Value=0; // АЦП
    float Value_volt=0; //АЦП

    boolean newInfo = 0; //переменная для новой информации
    byte mac[] = {
    0x90, 0xA2, 0xDA, 0x10, 0xF9, 0xBE
    };

    EthernetClient client;
    EthernetServer server(80);


    void setup() {

    Serial.begin(9600);

    // начало !! это постоянная надпись - не так важно
    сейчас не работает, хотя появляется иногда, но когда начинаю управлять через веб то проподает
    lcd.begin(16, 2);
    lcd.print("permanent name");
    // конец

    pinMode (8, OUTPUT); // управление дискретным выводом с веб

    while (!Serial) {
    }
    // start the Ethernet connection:
    if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    for (;;)
    ;
    }
    // print your local IP address:


    Serial.print("My IP address: ");
    for (byte thisByte = 0; thisByte < 4; thisByte++) {
    // print the value of each byte of the IP address:
    Serial.print(Ethernet.localIP()[thisByte], DEC);
    Serial.print(".");
    }


    // start the Ethernet connection and the server:
    // Ethernet.begin(mac, ip);
    server.begin();
    Serial.print("server is at ");
    Serial.println(Ethernet.localIP());
    }


    void loop() {
    Value = analogRead(PotenciometrPin);
    Value_volt=(float)5/1025*Value;


    // начало - вот самое важно - не работает совсем, причем если закинуть это в setup то на экране отобразится но понятно, что данные менять не будут
    lcd.setCursor(7, 1);
    lcd.print(Value_volt);
    // конец


    EthernetClient client = server.available(); //принимаем данные, посылаемые клиентом
    if (client){ //если запрос оканчивается пустой строкой
    boolean currentLineIsBlank = true;
    //ставим метку об окончании запроса (дословно: текущая линия чиста)
    while (client.connected()) { //пока есть соединение с клиентом

    if (client.available()) { //если клиент активен

    char c = client.read(); //считываем посылаемую информацию в переменную "с"
    if (newInfo && c == ' '){
    //если переменная новой информации = 1 и "с", в которой записан запрос, равен пустой строке
    newInfo = 0; //то обнуляем переменную поступления новой информации
    }
    if (c == '$'){
    // если переменная "с", несущая отправленный нам запрос, содержит символ $
    // "$" подразумевает разделение получаемой информации (символов)
    newInfo = 1; //то пришла новая информация, ставим метку новой информации в 1
    }
    //Проверяем содержание URL - присутствует $1 или $2
    if (newInfo == 1){ //если есть новая информация
    Serial.println (c);
    if (c == '1'){ //и "с" содержит 1
    Serial.println ("turn on");

    digitalWrite (8, HIGH); //то зажигаем светодиод
    }

    if (c == '2'){ //если "с" содержит 2
    Serial.println ("turn off");
    digitalWrite (8, LOW); //гасим светодиод
    }
    }
    if (c == '\n') { //если "с" равен символу новой строки
    currentLineIsBlank = true; //то начинаем новую строку
    }
    else if (c != '\r') {
    //иначе, если "с" не равен символу возврата курсора на начало строки
    currentLineIsBlank = false; //то получаем символ на текущей строке
    }

    if (c == '\n' && currentLineIsBlank) { //выводим HTML страницу



    // web inerface

    client. println ("HTTP/1.1 200 OK"); //заголовочная информация
    client. println ("Content-Type: text/html");
    client. println ("Connection: close");
    client. println ("Refresh: 1"); //автоматическое обновление каждые 5 сек
    client. println (); //Это не ошибка, так должно быть
    client. println ("<!DOCTYPE HTML>"); //HTML тип документа
    client. println ("<html>"); //открытие тега HTML
    client. println ("<head> "); //открытие тега Head
    client. println ("<meta http-equiv='Content-Type' content='text/html ; charset=utf-8'/> ");
    client. print ("<title>test web</title>"); //название страницы
    client. println ("</head>"); //заголовочная информация
    client. println ("<body>");
    client. print ("<H1>web interface for test</H1>"); //заголовк на странице
    client. print ("<a href=\"/$1\"><button><font size=128>turn on</button></a>"); // <font size=32> - КОМАНДА ДЛЯ УВЕЛИЧЕНИЯ ШРИФТА
    //кнопка включить
    client. print ("<a href=\"/$2\"><button><font size=128>turn off</button></a>");
    //кнопка выключить
    client. println ("<br>"); //перенос на след. строчку
    client. println ("<hr/>"); //линия=====================================
    client. println ("Voltage"); //
    // client. println (t); //переменная температуры
    client. println (" V");
    client. println ("<br> "); //перенос на след. строчку
    client. println (Value_volt); // мое напряжение на экран
    // client. println (h); //переменная влажности
    // client. println (" %\t");
    // client. println ("<br> "); //перенос на след. строчку
    client. println ("<hr/>"); //линия=====================================
    client. println ("</body>");
    client. println ("</html>"); //закрываем тег HTML
    break; //выход
    }
    }
    }
    delay (1); //время на получение новых данных
    client. stop(); //закрываем соеднение
    }
    }
     
  2. DetSimen

    DetSimen Guest

    патамуш, ошибка в ХЗ какой строке.
     
  3. по отдельности та работает,
    а вместе дисплей отказывает а веб работает