Циклы настройки: никогда не входит в цикл - перезапуск?

Я загрузил в UNO через Wi-Fi следующее:

#include <SPI.h>
#include <Wire.h>
#include "Adafruit_CCS811.h"
      
Adafruit_CCS811 ccs; // Датчик качества воздуха
    
String Dataline = ""; 

void setup() {
  Wire.begin();

  Serial.begin(115200); 
  Serial.println("SET UP");
}

void loop() {
  // подождите секунду между измерениями.
  delay(1000);

  Dataline = "";
  Dataline = Dataline + getTime();
  Dataline = Dataline + AIRSensor();
  Dataline = Dataline + "...";
  Serial.println(Dataline); 
}

String getTime() {
  String OUT = "Tim::";
  OUT += String(millis());
  return OUT;
}

String AIRSensor() {
  if (ccs.available()) {
    if (!ccs.readData()) {
      float temp = ccs.calculateTemperature();
      String CO2 = (String)ccs.geteCO2();
      return "CO2::" + CO2 +"TAQ::" + (String)temp;
    }
  } else {
    return "CO2::-999,TAQ::-999";
  }
}

Вывод просто "НАСТРОЙКА" повторяется:

SET UP
SET UP
SET UP
...

Он никогда не входит в цикл и не выводит что-либо еще. Означает ли это, что UNO перезагружается? Как устранить неполадки?

, 👍1

Обсуждение

откуда вы знаете, что он не входит в loop()? ... у вас нет кода, который подтверждает, что, @jsotola


1 ответ


Лучший ответ:

3

Вы можете сказать, что что-то не так с вашим println. Небольшой совет на этот случай: полностью исключите String и замените println серией print. Это позволит вам определить, какая функция вызывает проблему. Это также может сэкономить немного памяти, что является приятным бонусом при программировании встраиваемых систем.

Я подозреваю, что в данном случае проблема заключается в использовании вами приведения в стиле C к String в AIRSensor(). (String)whatever и String(whatever) делают очень разные вещи, и первое не то, что вам нужно здесь, или то, что вы должны очень часто использовать в коде C++.

Код в loop работает, но происходит сбой, что приводит к перезагрузке оборудования. Поскольку он падает до того, как достигает первого видимого поведения в loop, похоже, что setup выполняется снова и снова.

,

Спасибо! Изменение с «(String)» на «String()» имело огромное значение. Теперь он работает около 6 циклов, а затем останавливается на некоторое время. В среде IDE я получаю сообщение «Ошибка при настройке параметров последовательного порта: 115 200 N 8 1». Затем он снова перезапускается. Есть ли способ остановить это?, @user1505631

проблема в том, что я не использовал 'ccs.begin()'. Спасибо за помощь!!, @user1505631