VSCode против Arduino IDE - та же программа, другое поведение
У меня есть эта простая программа для тестирования датчиков температуры DS18B20.
#include "OneWire.h"
#include "DallasTemperature.h"
#define ONE_WIRE_BUS D3
// Настройка экземпляра OneWire для связи с любыми устройствами OneWire (не только с температурными микросхемами Maxim / Dallas)
OneWire oneWire(ONE_WIRE_BUS);
// Передайте нашу ссылку OneWire на температуру в Далласе.
DallasTemperature sensors(&oneWire);
void setup()
{
Serial.begin(19200);
sensors.begin();
delay(1000); //время для последовательного подключения
Serial.print(sensors.getDeviceCount());
Serial.println(" sensors found");
Serial.print(sensors.getDS18Count());
Serial.println(" DS18 sensors found");
}
void loop()
{
sensors.requestTemperatures(); // Отправить команду для получения температуры
Serial.print("Temperature for Device 1 is: ");
Serial.println(sensors.getTempFByIndex(0));
Serial.print("Temperature for Device 2 is: ");
Serial.println(sensors.getTempFByIndex(1));
delay(5000);
}
Я компилирую для Wemos D1 mini. Когда я компилирую на Arduino IDE, код выполняется, как и ожидалось. Он сообщает о двух устройствах, а затем выдает показания температуры от каждого устройства. Когда я компилирую с использованием VSCode и расширения Arduino, код успешно компилируется и загружается, программа сообщает о 2 устройствах, точно так же, как это делает компиляция Arduino IDE, но затем выводит -196,60 для показаний температуры, что является значением "нет устройства".
Та же макетная плата, тот же главный компьютер - разница лишь в IDE. Я бы предпочел придерживаться VSCode, но если результирующий исполняемый файл неправильный, то это не стартер.
Почему такие разные результаты? Что еще более важно, как мне заставить VSCode выдавать тот же (правильный) вывод, что и Arduino IDE?
Обновить: По-видимому, проблема как-то связана с последовательным монитором. Проект, который я на самом деле пытаюсь создать, имеет OLED-дисплей для измерения температуры. Температура является правильной, если последовательный монитор VSCode закрыт. Откройте монитор, и появятся неправильные значения. Закройте монитор, и снова появятся правильные значения.
ОБНОВЛЕНИЕ 2: Проблема остается в диапазоне скоростей последовательного порта от 19200 до 115200. Я не пытался выйти за пределы этого диапазона.
ОБНОВЛЕНИЕ 3: Код, скомпилированный с использованием VSCode, но выполняемый с помощью последовательного монитора Arduino IDE, имеет правильное поведение, то есть показывает правильные температуры.
@Llaves, 👍5
Обсуждение1 ответ
Дальнейшее тестирование с помощью OP выявило ошибку в расширении Arduino для VSCode, которая была зарегистрирована как проблема на https://github.com/microsoft/vscode-arduino/issues/1467
- Установка значения float до двух знаков после запятой
- Wemos D1R2 - переход Onewire 2 DS18B20 на переменную
- Использование Visual Studio Code для программирования Arduino
- Как назвать датчики температуры вместо адреса печати с помощью датчиков ds2482-100 и ds18b20 - Справка
- C++ против языка Arduino?
- avrdude ser_open() can't set com-state
- Как читать и записывать EEPROM в ESP8266
- Float печатается только 2 десятичных знака после запятой
в чем заключается ваш вопрос?, @jsotola
Что вы хотите знать? -- "Почему это так?" _ может быть, довольно сложно ответить, в то время как "Как избежать?" на это уже ответили вы сами. -- Поскольку вы не показали исходный ** с ** кодом отображения, мы ничего не можем сказать по этому делу. Пожалуйста, [отредактируйте] ваш вопрос., @the busybee
Похоже, о проблеме стоит сообщить тому, кто поддерживает расширение Arduino для VSCode., @Edgar Bonet
Первоначально разработанное Microsoft, расширение Arduino для vscode, как сообщается, появилось с открытым исходным кодом около 2017 года. Похоже, что репозиторий на GitHub принимает сообщения об ошибках https://github.com/Microsoft/vscode-arduino/issues, @RowanP
В некоторых отчетах об ошибках в репозитории GitHub обсуждается продолжающаяся нестабильность с последовательным монитором VSCode и некоторые "довольно значительные" изменения кода, над которыми они работают., @RowanP
@EdgarBonet - я отправил проблему в репозиторий github для проекта., @Llaves
@RowanP - я отправил проблему в репозиторий github для проекта, @Llaves