Почему значения моего люксметра на последовательном мониторе Arduino пусты?
Я пытался отобразить значения датчика освещенности TSL 2591 Adafruit на моем последовательном мониторе Arduino, но по какой-то причине мне не удалось этого сделать. Последовательный монитор Arduino просто вводит несколько пустых значений и прокручивает вниз. Вот код:
uint16_t x = tsl.getLuminosity(TSL2591_VISIBLE);
y = float(tsl.getLuminosity(TSL2591_VISIBLE));
z = (y, DEC);
Serial.write((byte)z);
x
, y
и z
изначально являются числами с плавающей запятой.
1 ответ
Лучший ответ:
Используйте Serial.println(x); чтобы напечатать число в виде текста. Функция write() отправляет необработанный байт, а Serial Monitor показывает символ с этим кодом ASCII, который не является допустимым или является невидимым управляющим символом.
Для z = (y, DEC);
из Википедии:
В языках программирования C и C++ оператор запятая (представленный токеном ) — это бинарный оператор, который оценивает свой первый операнд и отбрасывает результат, а затем оценивает второй операнд и возвращает это значение (и тип).
поэтому z
всегда равно 10 (значение константы DEC), что является кодом ASCII для символа новой строки
Комментарии не предназначены для расширенного обсуждения; этот разговор был [перенесен в чат](https://chat.stackexchange.com/rooms/85853/discussion-on-answer-by-juraj-why-my-light-meters-values-are-blank-on- ардуино-с)., @Majenko
- Как связаться с датчиком через порты RX/TX Arduino?
- Как получить ненулевой выход из HX711 и ячейки загрузки?
- Когда дело доходит до связи UART-RS485, в чем разница между модулем "MAX485" и модулем "HW-0519"?
- Интерфейс RS422 с Arduino
- Печатать на serial monitor, когда он обнаруживает изменение значения
- Arduino показывает "avrdude: ser_open(): can't open device ”\\.\COM3" после последней загрузки
- Несколько датчиков, подключенных к последовательным портам Arduino MEGA 2560
- Используя датчик веса Arduino, он не удовлетворяет циклу while, не могу понять, почему
Вы включили последовательную связь на Arduino с помощью Serial.begin(9600)?, @svtag
Что должен делать
z = (y, DEC);
?, @GerbenДа, я включил его. Что если я изменю 9600 на другое значение? @svtag, @Асмир Абдимажитов
Я думаю, он преобразует значения в десятичные дроби @Gerben, @Асмир Абдимажитов