Инвертация значения переменной при выводе в последовательный порт
- Войдите на сайт для отправки комментариев
Доброго времени суток.
Наставьте чайника на правильный путь и ткните носом в его ошибки.
Есть скетч (получился при поиске ошибок основного скетча)
boolean flag = 0; boolean butt_flag = 0; boolean open_flag = 1; boolean pir_flag = 0; boolean butt = 0; boolean pir = 0; void setup() { Serial.begin(9600); Serial.println(butt_flag);Serial.print("п.1 Флаг выключателя:"); Serial.println(pir_flag);Serial.print("п.2 Флаг датчика:"); Serial.println(flag);Serial.print("п.3 Свет:"); Serial.println(butt);Serial.print("п.4 выключатель:"); Serial.println(open_flag);Serial.print("п.5 Разрешение на работу датчика:"); Serial.println(pir);Serial.print("п.6 датчик:"); Serial.println("888888");Serial.print("п.8 ??????:"); } void loop() { }
При выводе в порт получаем:
Соответственно есть вопросы, на которые я в инете ответов не нашел:
1. Почему переменные «butt» и «open_flag» поменяли свое значение? Причем, если закомментировать строку «Serial.println(open_flag);Serial.print("п.5 Разрешение на работу датчика:");» значение переменной «butt» будет 0.
2. Почему чтобы в порт выводился сначала текст, а потом значение переменной код надо писать с право на лево?
3. Почему значения переменной «pir» вывелось в самом начале?
4. Почему строка «Serial.println("888888");Serial.print("п.8 ??????:");» вывелась как вывелась?
P.S. Всех с новым годом.
Потому что вы не понимаете разницы между print и println. Вкратце, print печатает, но не делает перевод строки после напечатанного и следующая печать пойдет не с новой строки, а в хвост уже напечатанному. А println напечатает и сделает перевод строки; таким образом, то, что будет печататься вслед за ним, напечатается с новой строки.
Ничего не поменялось. Справа налево не надо.
У тебя перый ноль - это butt_flag a дальше все как написано. Значения всех переменных на месте. Все нормально.
Вы правы, почему-то в голове сидело что префикс «ln» приводит к выполнению команды с новой строки, наверно наследие паскаля.
Спасибо, что наставили на путь истинный.
почему-то в голове сидело что префикс «ln» приводит к выполнению команды с новой строки, наверно наследие паскаля.
А разве в паскале WriteLn работает по-другому? Если не ошибаюсь, то он точно также после вывода сообщения переводит курсор в начало следующей строки.