Почему значения моего люксметра на последовательном мониторе 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 изначально являются числами с плавающей запятой.

, 👍0

Обсуждение

Вы включили последовательную связь на Arduino с помощью Serial.begin(9600)?, @svtag

Что должен делать z = (y, DEC);?, @Gerben

Да, я включил его. Что если я изменю 9600 на другое значение? @svtag, @Асмир Абдимажитов

Я думаю, он преобразует значения в десятичные дроби @Gerben, @Асмир Абдимажитов


1 ответ


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

3

Используйте 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