Приём передача ИК-сигнала reciv and send IR signal
- Войдите на сайт для отправки комментариев
Чт, 04/11/2021 - 04:36
Доброго времени, В программе отказ приём сигнала на ИК модуль после того как использована функция send, до этого момента ИК сигнал приёмник ик ловит и реагирует должным образом.
Подскажите пожалуйста, что может быть?
Может быть ошибка в скетче.
Точно, в 10 строке ошибка, и на схеме R5 надо на минус завести.
https://github.com/Arduino-IRremote/Arduino-IRremote/blob/master/example...
IrReceiver.stop() / IrReceiver.start()
1. работает раснараснепидарас, короче зависит. фаза луны там, месячные карины стримершы (ну или киттсан-некотян, короче вертел я этот твич на кожной оси).
2. как сказал Сэдмэн41, остановить приёмник перед началом передачи, вроде очевидно но новички имеют привычку забивать на доскональное чтение мануала на библиотеку, короче это неочевидный момент но важный, учитывайте его.
3. конфликты по таймерам/перерываниям.
4. иногда нехочет падла, просто никак. в этом случае по дубовому битбангом, я применяю два способа:
- то что сказала функция IRRecvDump, проклацать прямо в светодиод через digitalWrite() и delayMicroseconds(), в т. ч. и саму несущую (принято считать что она 38 кГц, это на микросекунды около 27 мкс). несущая докучи бывает ещё 36, 40, и вроде даже 32 и 44. дальше от реальной несущей датчика = хуже приём (меньше дальность), но всё равно работает. килогерцы несущей - две последних цифры на корпусе датчика, например tsop1738, vs1838 где 38 какбе намекаэ.
- всё то же самое но гнать не несущую а нули единицы по форме пачек, их видно если нарисовать график по цифрам или воспользоваться ослом/логаном. рисовать удобно в inkscape, мастхев программуля для DIYщика ящитаю. Есть из коробки в debian. Детский вопрос: стопшто, а как
какатьединицы, что формирует несущую? Правильно, снаружи прицеплен таймер 555 настроенный на несущую (например в обвязке 10k+1k+1n8), клацаем таймер выводом 4 (внешний reset, 1=запрет, 0=разреш)./p>- нельзя оптимизировать bitbang код, любые for while циклы искажают те микросекунды за которые родит digitalWrite() и сигнал уплывает. если есть сверхнеобходимость уменьшить код (щас бы экономить 100 байт ассемблера во флеше) то надо думать, как чо по конечным автоматам, чтобы прям строго контролировать, когда начинаются кончаются пачки, и чтобы в пачках было ровно плюсминус 27 мкс, иначе сигнал не читается. мне рефакторить такие коды впадлу, работает и ладно.
5. детские моменты типа воткнуть светик без транзистора яшнадеюсь не происходят, ИК светодиод рили прожорливый, запросто может схавать 300 мА.
моя тулза как перегнать вывод ирдумп в битбанг https://github.com/arleenlasleur/raw2dp
2 отдельные функции одна Reciv другая Send по библиотеке IRremote. h,
Вначале всё норм если получаю сигнал на приёмник, но стоит нажать клавишу отправки сигнала, после приёмник больше не работает, а Send продолжает работать по нажатию на клавишу.
После перезагрузки платы такая же картина.
Перечитайте что написано, на время ащще забудьте ради эксперимента что Send() существует, чисто на digitalWrite(). Чисто ради эксперимента чтобы выяснить, что именно виновно. Это называется "изоляция второй (третьей, и т п, всмысле, непервой) неизвестной переменной".
Voodoo Doll, нужно быть таким же наркоманом, что бы понимать ваш спич.)
Вспомнил историю. Со знакомым ехали к нему домой, общались. Водитель (тоже знакомый) потом спрашивал: "Слушай, о чём говорили? Я нихрена не понял!" Хотя он, вроде как, в МК шарил.)