Циклы настройки: никогда не входит в цикл - перезапуск?
Я загрузил в 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 перезагружается? Как устранить неполадки?
@user1505631, 👍1
Обсуждение1 ответ
Лучший ответ:
Вы можете сказать, что что-то не так с вашим 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
- Отправка и получение различных типов данных через I2C в Arduino
- Как выбрать альтернативные контакты I2C на ESP32?
- Wire.h не найден!
- Альтернативы библиотеке Wire для I2C
- Библиотека Wire.h работает на Uno, но не компилируется для ATtiny85
- Вызов I2C во время Wire.requestFrom
- Ошибка при загрузке кода в esp8266 через arduino (FatalError('Failed to connect to %s: %s' % (self.CHIP_NAME, last_error)))
- I2C связь между Arduino Uno и Nodemcu32-s (ESP32)
откуда вы знаете, что он не входит в
loop()
? ... у вас нет кода, который подтверждает, что, @jsotola