постоянно выполняется 1 команда
- Войдите на сайт для отправки комментариев
Чт, 06/12/2018 - 22:51
Доброго дня!Не нашел на форуме своей проблемы,поэтому решил написать первое свое сообщение;)
Суть такова-не могу разобраться что глючит-ик приемник ли,зависает на 1 команде при подаче сигнала с ик пульта,иногда при перезапуске вообще не реагирует на ик команды,потом на 1 реагирует и крутит ее бесконечно...
void loop() { if ( irrecv.decode( &results )) switch ( results.value ) { case 0xFFA25D: myStepper.step(stepsPerRevolution); // 32 шага в одном направлении delay(50); stopen(); break; case 0xFF629D: digitalWrite (Laser_Pin, HIGH); delay (1000); // Задержка 1 секунду digitalWrite (Laser_Pin, LOW); // Выключить лазер delay (1000); break; case 0xFFE21D: myStepper.step(-stepsPerRevolution); stopen();// 32 шага в обратную сторону delay(50); break; case 0xFF18E7: digitalWrite(is1, HIGH); digitalWrite(is2, LOW); analogWrite(enA, 110); // устанавливаем скорость 200 из доступного диапазона 0~255 // запуск двигателя B digitalWrite(is3, LOW); digitalWrite(is4, HIGH); analogWrite(enB, 110); break; case 0xFF4AB5: digitalWrite(is1, LOW); //стоп машина digitalWrite(is2, LOW); digitalWrite(is3, LOW); digitalWrite(is4, LOW); break; } irrecv.resume(); // принимаем следующую команду }
До этого работало все норм,перепрошил и пошла дичь...Без ик применика команды выполняются нормально....
зависает на 1 команде при подаче сигнала с ик пульта,иногда при перезапуске вообще не реагирует на ик команды,потом на 1 реагирует и крутит ее бесконечно...
1 - это "первая" или "одна"? Какая именно? Вообще, потрудитесь изъсняться так, чтобы Вас мог понять тот, кто не сидел рядом с Вами и не видел все Ваши тесты. Опишите, что именно Вы посылаете, и что срабатывает.
Поставьте печать в монитор порта переменной results.value после строки №4, чтобы Вы хоть сами-то видели, что к Вам приходит и могли понять кто виноват - передатчик или приёмник. Вот и разберётесь " что глючит", это совсем нетрудно.
Кроме того, скетч неполный. Никто не знает, как назначены пины, что делает функция stopen, Когда задаёте вопрос, старайтесь выделить как можно более короткий, но полный скетч на котором проявляется проблема, чтобы всё было видно и можно было его запустить у себя.
Спасибо,я новичек в этой теме,да попробую посмотреть и отпишусь
Проверил...Если вот так
Все команды принимаются и правильно распознаются
так тоже все работает
однако вот так не работает...Команду принимает приемник,светится,но как будто все висит...Остальные переменные те же(setup и т.д.)
о структуре switch почитайте см. справочник в программировании http://arduino.ru/Reference/SwitchCase
однако вот так не работает
А что делает пятая строка?
однако вот так не работает
А что делает пятая строка?
Экономит progmem space.
однако вот так не работает
А что делает пятая строка?
Экономит progmem space.
Ничего она не экономит. Убери её и не смеши комьюнити)
Ключевое слово break является командой выхода из оператора case и обычно используется в конце каждого case. Без оператора break оператор switchбудет продолжать вычислять следующие выражения, пока не достигнет break или конец оператора switch.
----------------
Иными словами, твой свич прекратил свою работу не успев начаться.
VaDoSiQ - смотрите, кому отвечаете :)
VaDoSiQ - смотрите, кому отвечаете :)
А как посмотреть и что это значит?)
VaDoSiQ - смотрите, кому отвечаете :)
Смотрите, кому советуете ;) Человек 220в ардуиной мерял...
VaDoSiQ - смотрите, кому отвечаете :)
Смотрите, кому советуете ;) Человек 220в ардуиной мерял...
Я сюда забегаю очень редко к сожалению, по этому не особо слежу за такими эксперементами. А так, по делу же написал:)
А что делает пятая строка?
Экономит progmem space.
Ничего она не экономит.
Как это не экономит? Ещё как экономит! Всё, что после неё до конца свитча идёт оптимизатор радостно выбросит. Разве это не экономия памяти?
Всем спасибо за комментарии,дело в том,что вчера данный скетч работал,потом я добавил пару команд и он перестал...Ладно,попробую не использовать такой вид кода,раз с if все работает...подумал может ардуинка сломалась...
Ардуинка не сломалась, код сломался. Недоудаляли ветку свича. Подотрите то, на что ЕвгенийП указал.
Ахаха,точно)Вот я неряха,слона то и не заметил...Спасибо большое!
Эх,не помогло,даже в монитор порта ничего не выводит...
а так все выводит и работает
В первом фрагменте не вижу никакого криминала. Комментируйте свич целиком, смотрите - будет ли выводится. Там уже нечему сбоить.
В первом фрагменте нет открывающей фигурной скобки в строке №3. Вы бы поаккуратнее. Программирование - оно такой вид деятельности.
Вот теперь все заработало,спасибо,буду все перепроверять(к сожалению все нюансы начинаещему запомнить тяжело)=)
А запоминать и не надо - надо только всегда отдавать себе отчет: что именно и с какой целью делаешь.