Ошибка компилятора, помогите!

Тема в разделе "Arduino & Shields", создана пользователем intel174, 29 мар 2017.

  1. intel174

    intel174 Нерд

    Доброго времени суток, задача получить показания с сонара sr04 через esp8266 по wifi Arduino Mega есть скетч

    001 #include <NewPing.h>
    002 HardwareSerial & ESPport = Serial1;
    003
    004 const int ledPin = 13;
    005 int ledState = HIGH;
    006 #define BUFFER_SIZE 128
    007 char buffer[BUFFER_SIZE];
    008 String vklotkl;
    009
    010 #define TRIGGER_PIN 9
    011 #define ECHO_PIN 8
    012 #define MAX_DISTANCE 200
    013 NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
    014
    015 void setup()
    016 {
    017
    018 pinMode(ledPin, OUTPUT);
    019 Serial.begin(115200); // Терминал
    020 ESPport.begin(115200); // ESP8266
    021 Serial.println(GetResponse("AT+CIOBAUD=9600",100));
    022 Serial.begin(9600); // Терминал
    023 ESPport.begin(9600); // ESP8266
    024 clearSerialBuffer();
    025 Serial.println("RESET 3,5 sek");
    026 Serial.println(GetResponse("AT+RST",3400)); // перезагрузка ESP
    027 Serial.println(GetResponse("AT+CWMODE=1",300)); // режим клиента
    028 connectWiFi("****","****"); // подключаемся к домашнему роутеру (имя точки, пароль)
    029 Serial.println(GetResponse("AT+CIPMODE=0",300)); // сквозной режим передачи данных.
    030 Serial.println(GetResponse("AT+CIPMUX=1",300)); // multiple connection.
    031 Serial.print("Start TCP-server: ");
    032 Serial.println(GetResponse("AT+CIPSERVER=1,88", 300)); // запускаем ТСР-сервер на 88-ом порту
    033 Serial.println(GetResponse("AT+CIPSTO=2", 300)); // таймаут сервера 2 сек
    034 Serial.println(GetResponse("AT+CIFSR", 300)); // узнаём адрес
    035 digitalWrite(ledPin,ledState);
    036
    037 Serial.print(sonar.ping_cm());
    038 }
    039
    040 ///////////////////основной цикл, принимает запрос от клиента///////////////////
    041 void loop()
    042 {
    043
    044 Serial.print(sonar.ping_cm());
    045
    046 int ch_id, packet_len;
    047 char *pb;
    048
    049
    050
    051 ESPport.readBytesUntil('\n', buffer, BUFFER_SIZE);
    052
    053 if(strncmp(buffer, "+IPD,", 5)==0)
    054 {
    055
    056 sscanf(buffer+5, "%d,%d", &ch_id, &packet_len);
    057 if (packet_len > 0)
    058 {
    059 pb = buffer+5;
    060 while(*pb!=':') pb++;
    061 pb++;
    062 if((strncmp(pb, "GET / ", 6) == 0) || (strncmp(pb, "GET /?", 6) == 0))
    063 {
    064
    065 Serial.println(buffer);
    066 Serial.print("get led from ch :");
    067 Serial.println(ch_id);
    068 delay(100);
    069 clearSerialBuffer();
    070
    071 if(ledState == LOW)
    072 {
    073 ledState = HIGH;
    074 vklotkl = "VKL";
    075 }
    076
    077 else
    078 {
    079 ledState = LOW;
    080 vklotkl = "OTKL";
    081 }
    082
    083 digitalWrite(ledPin, ledState);
    084
    085
    086
    087 otvet_klienty(ch_id);
    088 }
    089 }
    090 }
    091 clearBuffer();
    092 }
    093
    094 //////////////////////формирование ответа клиенту////////////////////
    095 void otvet_klienty(int ch_id)
    096 {
    097 String Header;
    098
    099 Header = "HTTP/1.1 200 OK\r\n";
    100 Header += "Content-Type: text/html\r\n";
    101 Header += "Connection: close\r\n";
    102
    103 String Content;
    104 //float d_1 = us_1.Ranging(CM); // get distance
    105 //float d_2 = us_2.Ranging(CM); // get distance
    106 //float d_3 = us_3.Ranging(CM); // get distance
    107
    108
    109 Content = "<body><form action='' method='GET'><input type='submit' value='VKL/OTKL'> "+vklotkl;
    110 Content += "</form></body></html>";
    111
    112 Header += "Content-Length: ";
    113 Header += (int)(Content.length());
    114 Header += "\r\n\r\n";
    115
    116 ESPport.print("AT+CIPSEND="); // ответ клиенту
    117 ESPport.print(ch_id);
    118 ESPport.print(",");
    119 ESPport.println(Header.length()+Content.length());
    120 delay(20);
    121
    122 if(ESPport.find(">"))
    123 {
    124 ESPport.print(Header);
    125 ESPport.print(Content);
    126 delay(200);
    127 }
    128 }
    129 /////////////////////отправка АТ-команд/////////////////////
    130 String GetResponse(String AT_Command, int wait)
    131 {
    132 String tmpData;
    133
    134 ESPport.println(AT_Command);
    135 delay(wait);
    136 while (ESPport.available() >0 )
    137 {
    138 char c = ESPport.read();
    139 tmpData += c;
    140
    141 if ( tmpData.indexOf(AT_Command) > -1 )
    142 tmpData = "";
    143 else
    144 tmpData.trim();
    145
    146 }
    147 return tmpData;
    148 }
    149 //////////////////////очистка ESPport////////////////////
    150 void clearSerialBuffer(void)
    151 {
    152 while ( ESPport.available() > 0 )
    153 {
    154 ESPport.read();
    155 }
    156 }
    157 ////////////////////очистка буфера////////////////////////
    158 void clearBuffer(void) {
    159 for (int i =0;i<BUFFER_SIZE;i++ )
    160 {
    161 buffer=0;
    162 }
    163 }
    164 ////////////////////подключение к wifi/////////////////////
    165 boolean connectWiFi(String NetworkSSID,String NetworkPASS)
    166 {
    167 String cmd = "AT+CWJAP=\"";
    168 cmd += NetworkSSID;
    169 cmd += "\",\"";
    170 cmd += NetworkPASS;
    171 cmd += "\"";
    172 Serial.println(cmd);
    173 Serial.println(GetResponse(cmd,6500));
    174 }
    веб сервер запускается и работает, с сонара данные получает и пишет в setup блоке,



    Serial.print(sonar.ping_cm());



    переношу в loop - отказывается компилировать и выдает кучу ошибок:

    C:\Users\intel\Documents\Arduino\wifi_super\wifi_super.ino: In function 'void otvet_klienty(int)': C:\Users\intel\Documents\Arduino\wifi_super\wifi_super.ino:130:22: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] if(ESPport.find(">")) ^ C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\main.cpp: In function 'main': C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\main.cpp:51:1: error: unable to find a register to spill in class 'NO_REGS' } ^ C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\main.cpp:51:1: error: this is the insn: (insn 562 559 565 15 (set (mem:QI (post_dec:HI (reg/f:HI 32 __SP_L__)) [0 S1 A8]) (subreg:QI (reg/f:HI 369) 1)) C:\Users\intel\Documents\Arduino\wifi_super\wifi_super.ino:64 1 {pushqi1} (expr_list:REG_ARGS_SIZE (const_int 7 [0x7]) (nil))) C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\main.cpp:51: confused by earlier errors, bailing out lto-wrapper: C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-gcc returned 1 exit status c:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.9.2/../../../../avr/bin/ld.exe: lto-wrapper failed collect2.exe: error: ld returned 1 exit status exit status 1 Ошибка компиляции для платы Arduino/Genuino Mega or Mega 2560.

    как победить?
     
  2. ИгорьК

    ИгорьК Гуру

  3. intel174

    intel174 Нерд

    прошу прощения!
    Код (C++):
    #include <NewPing.h>
    HardwareSerial & ESPport = Serial1;

    const int ledPin =  13;    
    int ledState = HIGH;          
    #define BUFFER_SIZE 128
    char buffer[BUFFER_SIZE];
    String vklotkl;

    #define TRIGGER_PIN  9
    #define ECHO_PIN     8
    #define MAX_DISTANCE 200
    NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

    void setup()
    {
     
      pinMode(ledPin, OUTPUT);      
      Serial.begin(115200); // Терминал
      ESPport.begin(115200); // ESP8266
      Serial.println(GetResponse("AT+CIOBAUD=9600",100));
      Serial.begin(9600); // Терминал
      ESPport.begin(9600); // ESP8266
      clearSerialBuffer();
      Serial.println("RESET 3,5 sek");
      Serial.println(GetResponse("AT+RST",3400)); // перезагрузка ESP
      Serial.println(GetResponse("AT+CWMODE=1",300)); // режим клиента  
      connectWiFi("****","****"); // подключаемся к домашнему роутеру (имя точки, пароль)
      Serial.println(GetResponse("AT+CIPMODE=0",300)); // сквозной режим передачи данных.
      Serial.println(GetResponse("AT+CIPMUX=1",300)); // multiple connection.
      Serial.print("Start TCP-server: ");
      Serial.println(GetResponse("AT+CIPSERVER=1,88", 300)); // запускаем ТСР-сервер на 88-ом порту
      Serial.println(GetResponse("AT+CIPSTO=2", 300)); // таймаут сервера 2 сек
      Serial.println(GetResponse("AT+CIFSR", 300)); // узнаём адрес
      digitalWrite(ledPin,ledState);

      Serial.print(sonar.ping_cm());
    }

    ///////////////////основной цикл, принимает запрос от клиента///////////////////
    void loop()
    {

      Serial.print(sonar.ping_cm());

    int ch_id, packet_len;
    char *pb;



    ESPport.readBytesUntil('\n', buffer, BUFFER_SIZE);
     
    if(strncmp(buffer, "+IPD,", 5)==0)
      {

       sscanf(buffer+5, "%d,%d", &ch_id, &packet_len);
       if (packet_len > 0)
        {
          pb = buffer+5;
          while(*pb!=':') pb++;
          pb++;
          if((strncmp(pb, "GET / ", 6) == 0) || (strncmp(pb, "GET /?", 6) == 0))
           {
           
            Serial.println(buffer);
            Serial.print("get led from ch :");
            Serial.println(ch_id);
            delay(100);
            clearSerialBuffer();
           
            if(ledState == LOW)
              {
                ledState = HIGH;
                vklotkl = "VKL";
              }
           
            else
              {
                ledState = LOW;
                vklotkl = "OTKL";
              }
           
            digitalWrite(ledPin, ledState);


           
            otvet_klienty(ch_id);
           }
        }
      }
      clearBuffer();
    }

    //////////////////////формирование ответа клиенту////////////////////
    void otvet_klienty(int ch_id)
    {
      String Header;

      Header =  "HTTP/1.1 200 OK\r\n";
      Header += "Content-Type: text/html\r\n";
      Header += "Connection: close\r\n";
     
      String Content;
      //float d_1 = us_1.Ranging(CM);   // get distance
      //float d_2 = us_2.Ranging(CM);   // get distance
      //float d_3 = us_3.Ranging(CM);   // get distance


      Content = "<body><form action='' method='GET'><input type='submit' value='VKL/OTKL'> "+vklotkl;
      Content += "</form></body></html>";
      Header += "Content-Length: ";
      Header += (int)(Content.length());
      Header += "\r\n\r\n";
     
      ESPport.print("AT+CIPSEND="); // ответ клиенту
      ESPport.print(ch_id);
      ESPport.print(",");
      ESPport.println(Header.length()+Content.length());
      delay(20);

      if(ESPport.find(">"))
        {
          ESPport.print(Header);
          ESPport.print(Content);
          delay(200);
        }
    }
    /////////////////////отправка АТ-команд/////////////////////
    String GetResponse(String AT_Command, int wait)
    {
      String tmpData;
     
      ESPport.println(AT_Command);
      delay(wait);
      while (ESPport.available() >0 )
       {
        char c = ESPport.read();
        tmpData += c;
       
        if ( tmpData.indexOf(AT_Command) > -1 )        
          tmpData = "";
        else
          tmpData.trim();      
             
       }
      return tmpData;
    }
    //////////////////////очистка ESPport////////////////////
    void clearSerialBuffer(void)
    {
           while ( ESPport.available() > 0 )
           {
             ESPport.read();
           }
    }
    ////////////////////очистка буфера////////////////////////
    void clearBuffer(void) {
           for (int i =0;i<BUFFER_SIZE;i++ )
           {
             buffer[i]=0;
           }
    }
    ////////////////////подключение к wifi/////////////////////      
    boolean connectWiFi(String NetworkSSID,String NetworkPASS)
    {
      String cmd = "AT+CWJAP=\"";
      cmd += NetworkSSID;
      cmd += "\",\"";
      cmd += NetworkPASS;
      cmd += "\"";
      Serial.println(cmd);
      Serial.println(GetResponse(cmd,6500));
    }
     
     
  4. ИгорьК

    ИгорьК Гуру

    Понять это сходу сложно, но у Вас там есть esp-8266, а загрузки библиотеки для нее не видно.
     
  5. intel174

    intel174 Нерд

    работает через ат команды без библиотеки
     
  6. intel174

    intel174 Нерд

    есть два рабочих скетча. один с веб сервером который по запросу включает или выключает лампочку и может выводить данные. второй скетч читает данные с сонара. попытка объединить не привела к желаемому результату, чтобы на веб странице отобразилось расстояние с сонара. могу выложить оба рабочих скетча если надо
     
  7. intel174

    intel174 Нерд

    беру первый скетч отсюда https://istarik.ru/blog/esp8266/29.html он создает веб сервер выводит адрес. по адресу в браузере можно подключится к esp8266 видеть состояние лампочки и включать выключать ее.
    Второй скетч любой с сонаром sr04. Причем что с библиотекой что без. например :
    Код (C++):
    int echoPin = 9; int trigPin = 8;  void setup() {   Serial.begin (9600);   pinMode(trigPin, OUTPUT);   pinMode(echoPin, INPUT); }  void loop() {   int duration, cm;   digitalWrite(trigPin, LOW);   delayMicroseconds(2);   digitalWrite(trigPin, HIGH);   delayMicroseconds(10);   digitalWrite(trigPin, LOW);   duration = pulseIn(echoPin, HIGH);   cm = duration / 58;  Serial.print(cm);   Serial.println(" cm");   delay(100);}
    задача: данные сонара (второго скетча) вывести в первом скетче в ответе клиенту:
    Код (C++):
    Content = "<body><form action='' method='GET'><input type='submit' value='VKL/OTKL'> " + vklotkl;
      Content += "</form></body></html>";
    вместо переменной vklotkl
     
  8. intel174

    intel174 Нерд

    Произошла странная вещь. Отключил модуль и датчик. Отключил ардуино. Включил ардуино без всего, и о чудо скомпилировался скетч без ошибок и залился. Подключил назад датчик и модуль есп все прекрасно работает. Немного меняя код , через время вылезти те же ошибки компиляции, и отключение уже не помогает. Отпишусь завтра, ибо уже не соображаю.
     
  9. intel174

    intel174 Нерд

    и снова здравствуйте
    вот скетч который не компилируется:
    Код (C++):
    #include <SoftwareSerial.h>
    SoftwareSerial ESPport(10, 11);
    #define BUFFER_SIZE 128
    char buffer[BUFFER_SIZE];
    int echoPin = 9;
    int trigPin = 8;
    void setup()
    {
      pinMode(trigPin,OUTPUT);
      pinMode(echoPin,INPUT);

    //  Serial.begin(115200); // Терминал
    //  ESPport.begin(115200); // ESP8266

      webserver();


    }
    ///////////////////основной цикл, принимает запрос от клиента///////////////////
    void loop()
    {
    //getDistance();
    int ch_id, packet_len, d;
    char *pb;



    ESPport.readBytesUntil('\n', buffer, BUFFER_SIZE);

    if(strncmp(buffer, "+IPD,", 5)==0){
       sscanf(buffer+5, "%d,%d", &ch_id, &packet_len);
       if (packet_len > 0)
        {
          pb = buffer+5;
          while(*pb!=':') pb++;
          pb++;
          if((strncmp(pb, "GET / ", 6) == 0) || (strncmp(pb, "GET /?", 6) == 0))
           {
            Serial.println(buffer);
            Serial.print("get led from ch :");
            Serial.println(ch_id);
            delay(100);
            clearSerialBuffer();
         
            otvet_klienty(ch_id);
           }
        }
      }
      clearBuffer();
    }




    //////////////////////формирование ответа клиенту////////////////////
    void otvet_klienty(int ch_id)
    {
        float duration,cm;
        digitalWrite(trigPin, LOW);
        delayMicroseconds(2);
        digitalWrite(trigPin, HIGH);
        delayMicroseconds(10);
        digitalWrite(trigPin, LOW);
        duration = pulseIn(echoPin, HIGH);
        cm = duration / 58;
        //cm=50;
     
      String Header;

      Header =  "HTTP/1.1 200 OK\r\n";
      Header += "Content-Type: text/html\r\n";
      Header += "Connection: close\r\n";

      String Content;
     
      Content = "<body><form action='' method='GET'><input type='submit' value='VKL/OTKL'> "+String(cm);
      Content += "</form></body></html>";
      Header += "Content-Length: ";
      Header += (int)(Content.length());
      Header += "\r\n\r\n";

      ESPport.print("AT+CIPSEND="); // ответ клиенту
      ESPport.print(ch_id);
      ESPport.print(",");
      ESPport.println(Header.length()+Content.length());
      delay(20);

      if(ESPport.find(">"))
        {
          ESPport.print(Header);
          ESPport.print(Content);
          delay(200);
        }
    }
    /////////////////////отправка АТ-команд/////////////////////
    String GetResponse(String AT_Command, int wait)
    {
      String tmpData;

      ESPport.println(AT_Command);
      delay(wait);
      while (ESPport.available() >0 )
       {
        char c = ESPport.read();
        tmpData += c;
     
        if ( tmpData.indexOf(AT_Command) > -1 )      
          tmpData = "";
        else
          tmpData.trim();    
           
       }
      return tmpData;
    }
    //////////////////////очистка ESPport////////////////////
    void clearSerialBuffer(void)
    {
           while ( ESPport.available() > 0 )
           {
             ESPport.read();
           }
    }
    ////////////////////очистка буфера////////////////////////
    void clearBuffer(void) {
           for (int i =0;i<BUFFER_SIZE;i++ )
           {
             buffer[i]=0;
           }
    }
    ////////////////////подключение к wifi/////////////////////    
    boolean connectWiFi(String NetworkSSID,String NetworkPASS)
    {
      String cmd = "AT+CWJAP=\"";
      cmd += NetworkSSID;
      cmd += "\",\"";
      cmd += NetworkPASS;
      cmd += "\"";
      Serial.println(cmd);
      Serial.println(GetResponse(cmd,6500));
    }

    void webserver(){
       Serial.println(GetResponse("AT+CIOBAUD=9600",100));
      Serial.begin(9600); // Терминал
      ESPport.begin(9600); // ESP8266
      clearSerialBuffer();
      Serial.println("RESET 3,5 sek");
      Serial.println(GetResponse("AT+RST",3400)); // перезагрузка ESP
      Serial.println(GetResponse("AT+CWMODE=1",300)); // режим клиента
      Serial.println(GetResponse("AT+CWDHCP=1,0",300)); // режим клиента
      Serial.println(GetResponse("AT+CIPSTA=\"*.209\",\"*.1\",\"255.255.255.0\"",300)); // ip
      connectWiFi("**","**pas"); // подключаемся к домашнему роутеру (имя точки, пароль)
      Serial.println(GetResponse("AT+CIPMODE=0",300)); // сквозной режим передачи данных.
      Serial.println(GetResponse("AT+CIPMUX=1",300)); // multiple connection.
      Serial.print("Start TCP-server: ");
      Serial.println(GetResponse("AT+CIPSERVER=1,88", 300)); // запускаем ТСР-сервер на 88-ом порту
      Serial.println(GetResponse("AT+CIPSTO=2", 300)); // таймаут сервера 2 сек
      Serial.println(GetResponse("AT+CIFSR", 300)); // узнаём адрес
      }

     
    пишет:
    Код (Text):
    C:\Users\Intel\Documents\Arduino\wifi_super\wifi_super.ino: In function 'void otvet_klienty(int)':
    C:\Users\Intel\Documents\Arduino\wifi_super\wifi_super.ino:90:22: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
       if(ESPport.find(">"))
                          ^
    C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\main.cpp: In function 'main':
    C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\main.cpp:51:1: error: unable to find a register to spill in class 'NO_REGS'
    }
    ^
    C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\main.cpp:51:1: error: this is the insn:
    (insn 671 668 674 37 (set (mem:QI (post_dec:HI (reg/f:HI 32 __SP_L__)) [0  S1 A8])
            (subreg:QI (reg/f:HI 450) 1)) C:\Users\Intel\Documents\Arduino\wifi_super\wifi_super.ino:32 1 {pushqi1}
         (expr_list:REG_ARGS_SIZE (const_int 7 [0x7])
            (nil)))
    C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\main.cpp:51: confused by earlier errors, bailing out
    lto-wrapper: C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-gcc returned 1 exit status
    c:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.9.2/../../../../avr/bin/ld.exe: lto-wrapper failed
    collect2.exe: error: ld returned 1 exit status
    exit status 1
    Ошибка компиляции для платы Arduino/Genuino Uno.
    если в блоке:
    Код (C++):
    //////////////////////формирование ответа клиенту////////////////////
    void otvet_klienty(int ch_id)
    {
        float duration,cm;
        digitalWrite(trigPin, LOW);
        delayMicroseconds(2);
        digitalWrite(trigPin, HIGH);
        delayMicroseconds(10);
        digitalWrite(trigPin, LOW);
        duration = pulseIn(echoPin, HIGH);
        cm = duration / 58;
        //cm=50;
       
      String Header;

      Header =  "HTTP/1.1 200 OK\r\n";
      Header += "Content-Type: text/html\r\n";
      Header += "Connection: close\r\n";

      String Content;
       
      Content = "<body><form action='' method='GET'><input type='submit' value='VKL/OTKL'> "+String(cm);
      Content += "</form></body></html>";

      Header += "Content-Length: ";
      Header += (int)(Content.length());
      Header += "\r\n\r\n";
     
      ESPport.print("AT+CIPSEND="); // ответ клиенту
      ESPport.print(ch_id);
      ESPport.print(",");
      ESPport.println(Header.length()+Content.length());
      delay(20);

      if(ESPport.find(">"))
        {
          ESPport.print(Header);
          ESPport.print(Content);
          delay(200);
        }
    }
    вместо
    Код (C++):
    float duration,cm;
       digitalWrite(trigPin, LOW);
       delayMicroseconds(2);
       digitalWrite(trigPin, HIGH);
       delayMicroseconds(10);
       digitalWrite(trigPin, LOW);
       duration = pulseIn(echoPin, HIGH);
       cm = duration / 58;
       //cm=50;
    написать например
    Код (C++):
    float duration,cm;

        cm=50;
       
    то все компилируется и работает. Запускается веб сервер, по адресу пишет растояние 50.

    отдельно скетч определения расстояния откуда копирую код
    Код (C++):
    int echoPin = 9;
    int trigPin = 8;
    void setup(){
      Serial.begin(9600);
      pinMode(trigPin,OUTPUT);
      pinMode(echoPin,INPUT);
       }

       void loop(){
        int duration,cm;
        digitalWrite(trigPin, LOW);
        delayMicroseconds(2);
        digitalWrite(trigPin, HIGH);
        delayMicroseconds(10);
        digitalWrite(trigPin, LOW);
        duration =pulseIn(echoPin, HIGH);
        cm = duration / 58;
        Serial.print(cm);
        Serial.println(" cm");
        delay(100);
        }

     
     
    тоже работает. Что я не так связываю? И что за ошибки?
     
  10. ИгорьК

    ИгорьК Гуру

    Доберусь до компа - посмотрю.
     
  11. rkit

    rkit Гуру

    Это ошибка именно в компиляторе. Пробуйте другие версии.

    Ну и сам код не очень.
    Почему не проверяете, что вам функция возвращает? Она терминатор в буфер не добавляет сама по себе. Кроме того, если вы читаете в строку. вам надо оставить один байт для терминатора, то есть читать до BUFFER_SIZE-1.

    То же самое. sccanf может вернуть неполный результат.

    Это вообще что за бред? Бесполезный выброс циклов.

    Еще куча ошибок наверняка, надо садиться и каждую строчку проверять.
     
    arkadyf нравится это.
  12. intel174

    intel174 Нерд

    Попробую другую версию компилятора. По функциям не скажу, не мои, только пытался совместить два скетча.
     
  13. rkit

    rkit Гуру

    Чтобы совмещать, надо сперва хотя бы прочитать код.
     
  14. intel174

    intel174 Нерд

    Прочитал, но не вникал. С есп8266 долго искал рабочий скетч, нашел этот, работает, алгоритм понятен, про очистки буфера не думал, решил что так и надо. До оптимизации не добрался, так как тормознулся с компилятором.
     
  15. intel174

    intel174 Нерд

    Поставил 1.6.5 скомпилировал - отказался вгружать.

    1.6.3 скомпилировал вгрузил но работает не коректно.

    веб страница не всегда отображается, но чаще отображается. А данные с датчика хоть и меняются от изменения расстояния, но не пропорционально и совсем не похожи на сантиметры
     
  16. rkit

    rkit Гуру

    Ну вот это уже к вопросу об ошибках в скетче.
     
  17. intel174

    intel174 Нерд

    Спасибо реально помог!
    - Я знаю в чем ошибка!
    - в чем?
    - в коде!
     
  18. rkit

    rkit Гуру

    Я вам перечислил кучу ошибок. Вы их исправили? Покажите исправленный код.
     
  19. intel174

    intel174 Нерд

    Это не куча, а три не критичные ошибки. Даже не ошибки а не совсем корректно написаные функции. Не думаю что они влияют на код и тем более на компилятор
     
  20. intel174

    intel174 Нерд

    ИгорьК и arkadyf нравится это.