Не могу побороть ELSE
- Войдите на сайт для отправки комментариев
Втр, 14/05/2019 - 22:45
void loop() { currentMillis = millis(); // текущее время в миллисекундах int msgType = processGPS(); if (msgType == MT_NAV_PVT) { // Это условие работает если внизу убрать ELSE. Как так ??? gpsSpeedKm = ubxMessage.navPvt.gSpeed * 0.0036; // Переводим в км/ч numSV = ubxMessage.navPvt.numSV; hAcc = ubxMessage.navPvt.hAcc; // Если движемся if (gpsSpeedKm > 0) { // Если это был старт if (!start) { start = true; startMillis = millis(); } meteringTime = (float)(currentMillis - startMillis) / 1000; // Время замера // Результаты замера if (0.0 == metering.accel30 && gpsSpeedKm >= 30) { metering.accel30 = meteringTime; // Разгон до 30км/ч } else if (0.0 == metering.accel60 && gpsSpeedKm >= 60) { metering.accel60 = meteringTime; // Разгон до 60км/ч } else if (0.0 == metering.accel100 && gpsSpeedKm >= 100) { metering.accel100 = meteringTime; // Разгон до 100км/ч } } else if (start && 0 == gpsSpeedKm) { // Если остановились start = false; } updateDisplay(); } else { Serial.println("?????????"); // Почему срабатывает ELSE ???? } }
Весь код не выкладывал думаю он не нужен. Почему срабатывает внизу ELSE? Если блок ELSE убрать, то первое условие выполняется. Суть в том что ELSE выполняется всегда в цикле loop, а условие верхнее не выполняется.
вставьте после 4 строки
и посмотрите что будет
Уже пробовал, реакции ноль. Не срабатывает блок
ну тогда проверяйте что перед условием творится после 3 строки
Хз что проверять, вроде все работает если ELSE убрать. Но в ELSE хочу проверять есть ли соединение со спутниками, а далее функцию вызвать. Если нужен остальной код могу скинуть.
вроде все работает если ELSE убрать.
здесь "вроде" не бывает, проверьте как я написал
Точно все работает без ELSE. Не знаю что проверять.
покажите что выдает то что я написал в 4 посте
а с else?
ничего, else начинает работать. Бред какой-то три часа голову ломаю.
Сдавай ардуину в утиль.
)))) тоже так думаю. Бывают такие чудеса?
С ардуинами - нет, а вот с теми, кто их мучает - постоянно.
так помоги ардуинке. чтоб не мучал ее сильно.
Здесь сериал выдает 0, в чем ошибка?
а если заменить 4 строку на
delay(500) в начале лупа воткни.
случайно не подсвечивается красным
"msgType"
случайно не подсвечивается красным
"msgType"
Черный
а если заменить 4 строку на
Што-то мне сдается, что в этой ситуации происходит какая-то хрень, связанная с интервалами опроса жпса.
все еще веселей. Можно вместо else оствить только строку 35
Serial
.println(
"?????????"
);
// <strong>Почему срабатывает ELSE ????</strong>
и условие уже не работаетпопробуйте так
попробуйте так
так не работает скетч
Выше писал, если Serial.println написанв место elso, уже не работает условие, а выводит serial.print
в сериал выводит msgType = 0.
так не работает скетч
в конце обработки if добавить
так не работает скетч
в конце обработки if добавить
после 32 строки
после 32 строки
после 32 строки
да static не забыли?
да static не забыли?
пост 26
у вас скорее всего не совпадают по времени даные
processGPS() и MT_NAV_PVT
у вас скорее всего не совпадают по времени даные
processGPS() и MT_NAV_PVT
попробуйте сделать
msgType глобальной переменой, и после обработки делать
А как объяснить не выполнения условия если написать строку Serial.print
все тоже самое, выполнение принта тоже занимает время
попробуйте сделать
msgType глобальной переменой, и после обработки делать
и еще можно попробовать переименовать переменую
msgType
и еще можно попробовать переименовать переменую
msgType
Сделал глобальную и изменил имя, не помогло
А какой у вас ЖПС модуль и как подключен?
В данной ситуации аппаратную часть тоже стоит описать. Какой GPS модуль, с каким интерфейсом? Может он тоже по serial шлет данные.