Windows 8

Схема управления ик лучами разными приборами. Ик, инфракрасное управление, путь, монтаж, поехж

Схема управления ик лучами разными приборами. Ик, инфракрасное управление, путь, монтаж, поехж

был сделан модуль управления роботом по ИК каналу. Вот о нём я бы и хотел написать поподробнее. Так как применений этому можно найти очень много.

Собственно, что такое ИК-управление - объяснять, думаю, не нужно. Сейчас более распространено управление по Wi-Fi, Bluetooth, ZigBee. Но если вам требуется простое устройство, которое можно собрать «на коленке» при минимальных затратах, то эта статья для вас. =)


Я не буду привязывать эту статью к определённому микроконтроллеру, а опишу общие принципы работы ИК прёмо-передатчика с AVR МК.

1. Что потребуется
При создании простого ИК-управления, негласным стандартом является использование приёмника от компании Vishay TSOPxxxx и диода TSALxxxx в качестве передатчика.

В обозначении приёмников TSOP последние две цифры означают частоту (в кГц) на которой воспринимается передаваемый сигнал. Сложностей в работе с этими компонентами особых нет. Можно писать свой протокол передачи, можно воспользоваться уже готовыми решениями. В моём случае я решил связать два микроконтроллера ИК-каналом, используя USART. Принцип такой же, как если бы мы соеденили два МК обычными проводами. Нюанс только в модулировании несущей частоты и в настройке таймера.

2. Схемки
Чтобы не городить огородов, воспользуемся схемой включения TSOP из его даташита:

Выход TSOPа нужно подключить напрямую к входу (RX) USART МК.

С подключением передатчика ситуация немного другая. Так как приёмник работает только на определённой частоте, то нужно задать эту же частоту на излучателе. Это сделать не сложно запрограммировав таймер. Для ATmega16 это будет выглядить вот так:
TCCR1A=0x40;
TCCR1B=0x09;
OCR1AH=0x00;
OCR1AL=0x84;

Нужную частоту можно выразить из формулы:

OCRn - будет искомое значение, которое нужно перевести в шестнадцатеричный формат и записать в регистр OCR1A (для случая с МК ATmega16).

Теперь TSOP будет принимать наш сигнал. Но чтобы можно было использовать USART, нужно промодулировать наш сигнал. Чтобы это можно было делать - подключим ИК-диод по схеме:

3. Немного кода
Прошивки я писал в CodeVision AVR.

Вот так будет выглядеть код для передатчика:
#include
#include

Void main(void)
{
PORTB=0x00;
DDRB=0x02;

DDRC=0x00;
PORTC=0xFF;

TCCR1A=0x40;
TCCR1B=0x09;
OCR1AH=0x00;
OCR1AL=0x84; // Сюда вписываем значение для вашей частоты

// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Mode: Asynchronous
// USART Baud Rate: 2400
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0xCF;

While (1)
{

If (PINC.4 == 0x00) { putchar("S");}/* В данном случае при нажатии на кнопку, которая висит на PINC.4 МК отсылает символ "S". Который передаётся на другой контроллер через ИК.*/
};
}

Код приёмника не привожу, т.к. занимает много места, а для восприятия общих принципов кода передатчика будет, думаю, достаточно.

Помимо дистанционного управления (хотя это и так обширная область применений), можно использовать этот метод для датчиков припятствий\прохождения объектва и если таковых датчиков у вас много, а работаю они на одной частоте, то чтобы они не засвечивали друг друга можно передавать разные пакеты.

Желаю удачи! Буду рад любым вопроса\критике\предложениям;)

UPD. Решил выложить фото самого пульта, чтобы было видно, что работает девайс не только как китайские приёмники, которые подключаются к ПК. Возможности гораздо шире и универсальнее.


был сделан модуль управления роботом по ИК каналу. Вот о нём я бы и хотел написать поподробнее. Так как применений этому можно найти очень много.

Собственно, что такое ИК-управление - объяснять, думаю, не нужно. Сейчас более распространено управление по Wi-Fi, Bluetooth, ZigBee. Но если вам требуется простое устройство, которое можно собрать «на коленке» при минимальных затратах, то эта статья для вас. =)


Я не буду привязывать эту статью к определённому микроконтроллеру, а опишу общие принципы работы ИК прёмо-передатчика с AVR МК.

1. Что потребуется
При создании простого ИК-управления, негласным стандартом является использование приёмника от компании Vishay TSOPxxxx и диода TSALxxxx в качестве передатчика.

В обозначении приёмников TSOP последние две цифры означают частоту (в кГц) на которой воспринимается передаваемый сигнал. Сложностей в работе с этими компонентами особых нет. Можно писать свой протокол передачи, можно воспользоваться уже готовыми решениями. В моём случае я решил связать два микроконтроллера ИК-каналом, используя USART. Принцип такой же, как если бы мы соеденили два МК обычными проводами. Нюанс только в модулировании несущей частоты и в настройке таймера.

2. Схемки
Чтобы не городить огородов, воспользуемся схемой включения TSOP из его даташита:

Выход TSOPа нужно подключить напрямую к входу (RX) USART МК.

С подключением передатчика ситуация немного другая. Так как приёмник работает только на определённой частоте, то нужно задать эту же частоту на излучателе. Это сделать не сложно запрограммировав таймер. Для ATmega16 это будет выглядить вот так:
TCCR1A=0x40;
TCCR1B=0x09;
OCR1AH=0x00;
OCR1AL=0x84;

Нужную частоту можно выразить из формулы:

OCRn - будет искомое значение, которое нужно перевести в шестнадцатеричный формат и записать в регистр OCR1A (для случая с МК ATmega16).

Теперь TSOP будет принимать наш сигнал. Но чтобы можно было использовать USART, нужно промодулировать наш сигнал. Чтобы это можно было делать - подключим ИК-диод по схеме:

3. Немного кода
Прошивки я писал в CodeVision AVR.

Вот так будет выглядеть код для передатчика:
#include
#include

Void main(void)
{
PORTB=0x00;
DDRB=0x02;

DDRC=0x00;
PORTC=0xFF;

TCCR1A=0x40;
TCCR1B=0x09;
OCR1AH=0x00;
OCR1AL=0x84; // Сюда вписываем значение для вашей частоты

// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Mode: Asynchronous
// USART Baud Rate: 2400
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0xCF;

While (1)
{

If (PINC.4 == 0x00) { putchar("S");}/* В данном случае при нажатии на кнопку, которая висит на PINC.4 МК отсылает символ "S". Который передаётся на другой контроллер через ИК.*/
};
}

Код приёмника не привожу, т.к. занимает много места, а для восприятия общих принципов кода передатчика будет, думаю, достаточно.

Помимо дистанционного управления (хотя это и так обширная область применений), можно использовать этот метод для датчиков припятствий\прохождения объектва и если таковых датчиков у вас много, а работаю они на одной частоте, то чтобы они не засвечивали друг друга можно передавать разные пакеты.

Желаю удачи! Буду рад любым вопроса\критике\предложениям;)

UPD. Решил выложить фото самого пульта, чтобы было видно, что работает девайс не только как китайские приёмники, которые подключаются к ПК. Возможности гораздо шире и универсальнее.

Многоканальный автомат управления нагрузками собран на ATtiny2313 и позволяет в автоматическом режиме управлять состояниями 8-ми каналов (Out_0 — Out_7). На каждом из каналов формируется ШИМ-сигнал, скважность которого можно изменять по прописанному Вами алгоритму (программе). В устройстве можно использовать до 8-ми программ каналов. Программу можно зациклить (бесконечное воспроизведение) или можно воспроизвести только один раз. Программу можно…

Раздел: Метки:

Так как я начал понемногу создавать устройства с протоколом управления по ИК-каналу, пришло время создать ИК-излучатель, через который этими устройствами можно будет управлять. А еще, излучатель понадобится для ближайшего апдейта прошивки супер гирлянды для связи ее с компьютером. На самом деле, прошивку для излучателя я уже сделал раньше, как один из модулей Эффектора для умной…

Раздел: Метки: ,

Устройство этой статьи собрано на ATtiny13 и предназначено для управления тремя нагрузками 220 вольт при помощи бытового ИК-пульта. Сделано устройство на базе уже знакомой Вам универсальной платы ИК-драйвера. Устройство является ревизией ранее сделанного устройства управления нагрузками. На первый взгляд, функционал устройства остался прежним, но изменения есть — ниже я о них напишу. Предыстория создания…

Раздел: Метки: ,

Оглавление: Введение | Keypad_IR_to_UART | UART_to_Pin | SDC_Talking Устройство Keypad_IR_to_UART предназначено для формирования UART сообщений (заглавные буквы латиницы и цифры) по факту нажатий клавиш на кейпаде и/или любом бытовом ИК-пульте (от телевизора, например). Прежде всего, устройство ориентировано на совместную работу с устройствами управляемых по UART (в частности разрабатывалось для интерактивного стенда), но может быть использовано,…

Раздел: Метки:

Устройство этой статьи является, на самом деле, не совсем новым. Оно было сделано и отлажено довольно много времени назад, но я все никак не мог выбраться набрать статью. И вот теперь, когда в разработке новые устройства с применением ZiChip, в перспективе позволяющие более гибко работать с логикой работы, у меня вообще появились сомнения по поводу…

Раздел: Метки:

Сегодняшним устройством будет датчик приближения на инфракрасных лучах. Датчик собран на недорогом микроконтроллере Attiny13, прост в изготовлении и не нуждается в какой либо наладке. Видео работы датчика: Чем отличается такой датчик от, скажем, датчиков движения заводского исполнения (которые, кстати, стали очень доступными и недорогими)? Главное отличие – это область применения. Готовые датчики все-таки…

Раздел: Метки:

Давно хотел себе заиметь небольшой пульт для управления различной бытовой техникой. И вот, наконец, дошли руки, и хватило свободного времени для создания своего универсального пульта! Постарался сделать его поменьше, поудобней, покрасивей… в общем смотрите что получилось!

Раздел: Метки:

1 Сомнения. Я долго сомневался в необходимости написания программы для управления компьютером от IR-пульта. С одной стороны, существует много аналогичных устройств/программ (как платных, так и бесплатных) с хорошей функциональностью и ничего нового в эту область я добавить не смогу. С другой стороны, раз уж аппаратная часть нами собрана (преобразователь IR-to-UART) почему бы не использовать ее…

Раздел:

В общем случае пульт дистанционного управления (ПДУ, RCU) - беспроводное или проводное устройство, предназначенное для управления каким-либо механизмом, объектом или процессом на расстоянии. Все устройства ДУ подразделяются на группы:

  • по способу получения электропитания: по кабелю, автономное;
  • по используемому каналу для передачи управляющих сигналов: ИК, ультразвук, радио, провод, механический привод;
  • по функциональности: с одним набором команд, универсальный для нескольких устройств одного производителя, программируемый (обучаемый);
  • по мобильности и другим признакам.

Наиболее распространенный в настоящее время вид пультов ДУ - мобильное автономное беспроводное устройство с управлением объектами по инфракрасному каналу (ИК). Именно такой вид устройств ДУ используем в быту, когда передаем управляющие сигналы на телевизор, кондиционер, музыкальный центр, плеер и другую бытовую технику.

В первых моделях пультов присутствовал минимум управляющих элементов только для выполнения основных функций. Со временем подход изменился: современные изделия имеют полный комплект элементов управления, а сами управляемые устройства содержат их ограниченный набор.

Устройство пульта дистанционного управления

Гаджет представляет собой небольшую продолговатую пластиковую коробочку. На лицевой ее части располагаются кнопки, с помощью которых осуществляется выбор управляющей команды.

На торце устройства расположено отверстия для линзы ИК-излучателя, который непосредственно и отправляет команду на исполнение. С обратной стороны, под крышкой, располагается ниша для установки элементов питания. Как правило, это две батарейки AAA.

Если разобрать пульт, отсоединив верхнюю его часть от нижней, то мы увидим еще два элемента. Первый - печатная плата с контактными площадками и смонтированной электроникой.
Второй - выполненная из мягкого эластичного материала накладка с выпуклыми кнопками управления с проводящими дисками.

Инфракрасный беспроводной пульт дистанционного управления: принцип действия

Устройство пульта и работа дистанционного управления основаны на односторонней или двусторонней передаче информации между пультом и объектом управления с помощью лучей света в инфракрасном диапазоне. Для приема и передачи сигналов применяются ИК-приемники и передатчики.

Схему с двусторонним каналом передачи информации имеют пульты, управляющие кондиционерами: на кондиционер отправляется управляющий сигнал, а обратно возвращаются параметры работы агрегата и данные о температуре.

Все остальные модели в подавляющем большинстве случаев одноканальные.

Передача и прием команд

Возьмем операцию, которая наиболее часто встречается в быту: дистанционное беспроводное управление телевизором. Первое, что делает схема пульта, определяет, какая кнопка была нажата. Принцип определения тот же, что и в компьютерной клавиатуре: сканирование матрицы размещенных кнопок. Но, в отличие от клавиатуры ПК, на ПДУ генератор сканирования находится в режиме ожидания и включается только при нажатии кнопок на пульте. Этим достигается экономное использование элементов питания.

Затем производится кодирование управляющего сигнала (команды) и передача его ИК-светодиодом. Перед передачей основного сигнала производится синхронизация передающего и приемного устройств, также на приемной стороне производится проверка соответствия кода пульта. Сама же передача будет осуществляться в течение всего времени, пока нажата управляющая кнопка.

Следует заметить, что производители электронных устройств ничем не ограничены в создании алгоритмов кодирования управляющих сигналов и используемых частот модуляции. Это приводит к тому, что часто даже однотипные модели одного производителя требуют для управления разные пульты управления.

Схема пульта дистанционного управления

Большинство схем пультов ДУ TV и других бытовых устройств в своей основе имеют основную микросхему , формирующую сигнал управления после нажатия соответствующей клавиши, усилитель сигнала и ИК-светодиод . Разница заключается лишь в наименовании и компоновке радиоэлементов внутри корпуса устройства и на печатной плате.

Микросхема представляет собой специализированный микроконтроллер, в который в процессе производства записывается программный код. Записанная программа затем уже не изменяется в течение эксплуатации. На плате располагается также кварцевый резонатор для синхронизации частоты приемника и передатчика. Усилитель сигнала входит в состав микросхемы или выполнен на отдельном элементе.

Для самостоятельного создания такого устройства, кроме радиолюбительских навыков, вам необходимо также уметь создавать программный код для микроконтроллеров.

Пульт ДУ для ПК

Пульт дистанционного управления для персонального компьютера может оказаться полезным при работе с интерфейсом, как самой операционной системы, так и при управлении функционированием различных программ. Например, управление презентациями в Power Point или воспроизведением медиа-контента в Media Center . Иногда такие пульты уже входят в комплект ПК.

Производители пультов для ПК, в отличие от TV, реализовали 2 решения: ИК и радиопульты. Дело в том, что устойчиво при управлении в инфракрасном диапазоне взаимодействует с устройством при прямой видимости и на расстоянии до 10 м, что достаточно для TV, но может оказаться неудобным для управления ПК, особенно во время презентаций. Радиопульт увеличивает это расстояние до 30 м независимо от препятствий на пути сигнала.

Внешне радиопульт от ИК будет отличаться только наличием небольшой антенны. Но для того, чтобы можно было осуществлять управление, ПК необходим еще один элемент: приемник радио- или ИК- сигнала, установленный в компьютер или ноутбук. Это может быть, как встроенное устройство, так и модуль, подключаемый к порту USB. Второй вариант предпочтительней.

Универсальный и/или программируемый пульт ДУ

Универсальный пульт дистанционного управления может потребоваться в двух случаях:

  1. Не найдена замена для утерянного или вышедшего из строя старого пульта управления TV или другой бытовой техники.
  2. Множество различной бытовой техники в одном помещении делает управление ею с разных пультов чрезвычайно неудобным, так как понятие «правильного дизайна» и «оптимальной эргономичности» у всех производителей свое.

Различают два вида таких устройств: пульты, запоминающие команды (обучающиеся), и программируемые универсальные ПДУ. В первом случае, для ввода нужных кодов используется штатный ПДУ TV или другого устройства. Во втором, список доступных кодов и моделей техники, которыми можно управлять, находится в инструкции к прибору управления. Разница в том, что, несмотря на тысячи моделей устройств, поддерживаемых универсальными пультами, нужного устройства в этом перечне может не оказаться.

«Обучение» запоминающих пультов производится в соответствии с руководством пользователя и с использованием оригинального ПДУ. Если приобретенный пульт имеет на своей передней панели меньшее количество клавиш, чем у «родного», то в первую очередь следует программировать только те, которые необходимы.

После приобретения универсального многофункционального пульта не стоит выбрасывать старые штатные. Во-первых, они могут потребоваться, если новый внезапно выйдет из строя. Во-вторых, на универсальном может не оказаться некоторых нужных элементов. И в-третьих, они могут потребоваться для перепрограммирования в случае сбоя или смены элементов питания.

Смартфон в качестве ПДУ

Еще один вариант ПДУ практически для любого устройства - использование в качестве управляющего устройства смартфона. При этом в нем может быть, а может и не быть реализована передача сигналов в ИК диапазоне (технология IrDA ). В последнем случае управление осуществляется через Bluetooth или Wi-Fi. Единственное ограничение состоит в том, что управляемое устройство должно также поддерживать эти протоколы обмена информацией, что реализовано не на всей технике.

Более интересен в качестве ПДУ вариант смартфона с ИК-портом. Рассмотрим это на примере модели Xiaomi Redmi 3 и довольно старого телевизора Daevoo . Нам потребуется установить из Google Play специальное приложение. Оно может быть любым, главное, чтобы в перечне поддерживаемого оборудования присутствовала нужна модель объекта управления. Для этого телефона с оболочкой от MIUI оно называется Mi Remote (русский язык присутствует).

Микросхема контроллера коллекторного электродвигателя, ИК-пульт дистанционного управления, Радиомодуль NRF24L01, OKI 120A2, SD Card Module, Микросхема контроллера коллекторного электродвигателя, Модем M590E GSM GPRS, Часы реального времени DS 3231/DS 1307, Mini 360 на схеме LM2596, L293D, Инфракрасные датчики расстояния, Часы реального времени, HC-SR501, блок питания Mini 360 на схеме LM2596, Контроллер L298N, HC-SR501, GSM GPRS, Модем M590E GSM GPRS, Часы реального времени DS 3231/DS 1307, Модуль Wi-Fi ESP8266-12E, Card Module, Блок питания, Mini 360, L293D, блок питания Mini 360 на схеме LM2596, Радиомодуль, ИК-пульт, Ethernet shield, Микросхема контроллера коллекторного электродвигателя, Микросхема контроллера коллекторного электродвигателя, ИК-пульт дистанционного управления, SD Card Module, Радиомодуль NRF24L01, двигатель OKI, L293D, Шаговый двигатель, Блок питания, L293D, блок питания Mini 360 на схеме LM2596, Карта памяти SD, Ethernet shield, датчик движения HC-SR501, Модуль Wi-Fi ESP8266-12E, Шаговый двигатель OKI 120A2, Шаговый двигатель,

Обмен данными в инфракрасном диапазоне

Для обеспечения надежного приема и гарантированной защиты от помех используется модуляция сигнала и кодирование. Передача данных производится в близком к видимому инфракрасном спектре. Длина волны в большинстве реализованных систем варьируется в пределах 800–950 нм. Самый простой способ избавиться от фонового шума - модулировать (заполнить) сигнал при передаче одной из стандартных частот: 30, 33, 36, 37, 38, 40, 56 кГц. Именно на эти частоты настроены все современные интегральные приемники.

Для обеспечения достаточной дальности при передаче кодовой последовательности необходимо сформировать мощный сигнал. Ток через ИК-светодиод может достигать 1 А - такие токи вполне допустимы в импульсном режиме, при этом средняя рассеиваемая мощность не должна превышать предельно допустимую, указанную в документации.

Разработано большое количество специализированных микросхем (SAA3010, GS8489, KS51840 и т. п), генерирующих готовую кодовую последовательность и потребляющих минимальный ток в ждущем режиме, что немаловажно при питании от батарей. Эти микросхемы существенно упрощают схему пультов дистанционного управления (ПДУ). Когда мы нажимаем кнопку пульта, микросхема передатчика активизируется и генерирует кодовую последовательность с заданным заполнением. Светодиод преобразуют эти сигналы в ИК-излучение. Излученный сигнал принимается фотодиодом, который снова преобразует ИК-излучение в электрические импульсы. Эти импульсы усиливаются и демодулируются микросхемой приемника. Затем они подаются на декодер. Декодирование обычно осуществляется программно с помощью микроконтроллера.

Приемник ИК ПДУ должен восстанавливать данные с двухфазным кодированием и реагировать на большие быстрые изменения уровня сигнала независимо от помех. Ширина импульсов на выходе приемника должна отличаться от номинальной не более чем на 10 %. Приемник также должен быть нечувствительным к постоянным внешним засветкам. Удовлетворить всем этим требованиям достаточно непросто. Старые реализации приемника ИК ДУ, даже с применением специализированных микросхем, содержали десятки компонентов. Такие приемники часто использовали резонансные контуры, настроенные на частоту заполнения. Все это делало конструкцию сложной в изготовлении и настройке, требовало применения хорошего экранирования.

В последнее время большое распространение получили трехвыводные интегральные приемники ИК ПДУ (SFH5110-xx, TSOP17xx, TFMS5хх0 и т. п.). В одном корпусе они объединяют фотодиод, предусилитель и формирователь. На выходе формируется обычный ТТЛ-сигнал без заполнения, пригодный для дальнейшей обработки микроконтроллером. Наиболее важный параметр при выборе приемника - частота заполнения.

Внутренний усилитель интегрального приемника имеет высокий коэффициент усиления, поэтому для исключения самовозбуждения и устранения влияния наводок по цепям питания необходимо использовать электролитический конденсатор емкостью не менее 4,7 мкФ, подключенный максимально близко к выводу VCC.

Подключение ИК-приемника

В качестве приемника ИК ПДУ применим микросхему TSOP31236. В одном корпусе она объединяют фотодиод, предусилитель и формирователь. На выходе формируется обычный ТТЛ-сигнал без заполнения, пригодный для дальнейшей обработки микроконтроллером. Несущая частота 36 кГц, выход инверсный, т. е. при отсутствии сигнала на пин приходит логическая "1", при появлении сигнала он посылает логический "0".

Библиотека IRremote

Можно узнать протокол вашего пульта и написать скетч для получения кодов, от- правляемых с пульта. К счастью, уже написана универсальная библиотека для приема и обработки кодов с любого пульта - IRremote.

Файлы библиотеки вы можете найти в папке libraries/IrRemote сопровождающего книгу электронного архива. Для использования библиотеки в своих проектах поместим их в папку libraries каталога установки Arduino. Скетч для получения кода и отправки в последовательный порт представлен в примере.

#include

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN); decode_results results;

void setup()

Serial.begin(9600);

irrecv.enableIRIn(); // включить приемник

void loop()

if (irrecv.decode(&results))

Serial.println(results.value, HEX); irrecv.resume(); // получить следующее значение

Можно и передавать ИК-команды. Поддерживаемые протоколы: NEC, Sony SIRC, Philips RC5, Philips RC6. Передающий ИК-светодиод должен быть подключен к pin 3. Скетч для отправки ИК-кода представлен в примере.

#include IRsend irsend;

void setup()

Serial.begin(9600);

void loop()

if (Serial.read() != -1)

for (int i = 0; i < 3; i++)

irsend.sendSony(0xa90, 12); // Sony TV power code delay(100);

Скетч для получения кодов ИК-пульта

Первая задача - получить список кодов клавиш нашего пульта.

Определим список клавиш пульта для управления:

<> - движение вперед;

<↓> - движение назад;

<←> - поворот влево;

<→> - поворот вправо;

<–CH> - увеличение скорости при движении вперед/назад;

- уменьшение скорости при движении вперед/назад;

<–VOL> - круговое движение на месте влево;

- круговое движение на месте вправо;

<0> - остановка робота.

Запускаем скетч из примера и получаем коды нужных клавиш для вашего пульта. Значения кодов выводятся в последовательный порт.

#include

void setup()

// прерывания для ИК

void loop()

// обработка кода нажатия if(ir_kod>0)

ir_go(ir_kod); Serial.println(ir_kod); ir_kod=0;

// получить код, переданный с ИК-пульта void get_ir_kod()

detachInterrupt(0); // отключить прерывание 0 if (irrecv.decode(&results))

if (results.value > 0 && results.value < 0xFFFFFFFF)

// прошла 1 сек?

if (ir_time2-ir_time1>1000)

{ir_kod = ir_dt;ir_time1=ir_time2;}

else

ir_kod = 0;

irrecv.resume();

Оформим их в виде констант

#define FORWARD 1936 //

#define BACK 3984 // ↓

#define SPEED_UP 144 //ch+

#define LEFT 3472 // ←

#define RIGHT 1424 // →

#define STOP 2320 // 0 - стоп

Определять поступление команды с пульта мы будем по прерыванию 0 (на digital pin2). По прерыванию запускается процедура get_ir_kod(), которая определяет код, поступающий с пульта, и записывает его в переменную ir_kod. Процедура loop() проверяет переменную ir_kod, и в случае ненулевого значения переменной (получения кода с пульта) вызывает процедуру вывода действия ir_go(). На данном этапе - это вывод в последовательный порт предполагаемого по нажатию клавиши действия.

Данный скетч представлен в примере.

Результат команды с пульта выводитсяна монитор последовательного порта.

#include

// вход ИК-приемника int RECV_PIN = 2;

IRrecv irrecv(RECV_PIN); decode_results results; unsigned long ir_dt, old_ir; long ir_kod;

unsigned long ir_time1, ir_time2;

// коды клавиш ИК-пульта (marmitek)

#define FORWARD 1936

#define BACK 3984

#define SPEED_UP 144 //ch+

#define SPEED_DOWN 2192 //ch-

#define LEFT 3472

#define RIGHT 1424

#define CIRCLE_LEFT 3216 //vol+

#define CIRCLE_RIGHT 1168 //vol-

#define STOP 2320 //0

void setup()

// последовательный порт Serial.begin(9600);

// включить приемник irrecv.enableIRIn(); ir_time1=0;ir_time2=0;

// прерывания для ИК

// FALLING – вызов прерывания при изменении уровня напряжения

// с высокого (HIGH) на низкое (LOW) attachInterrupt(0, get_ir_kod, FALLING);

void loop()

// обработка кода нажатия if(ir_kod>0)

ir_go(ir_kod); ir_kod=0;

// получить код переданный с ИК-пульта void get_ir_kod()

detachInterrupt(0); // отключить прерывание 0

if (irrecv.decode(&results))

if (results.value > 0 && results.value < 0xFFFFFFFF)

ir_dt = results.value; ir_time2=millis();

// прошла 1 сек?

if (ir_time2-ir_time1>1000)

{ir_kod = ir_dt;ir_time1=ir_time2;} else

ir_kod = 0;

irrecv.resume();

// активировать процедуру прерывания 0 attachInterrupt(0, get_ir_kod, FALLING);

// действие по полученному коду void ir_go(kod)

switch(kod)

case FORWARD: // направление вперед Serial.print("forward\n");

break;

case BACK: // направление назад Serial.print("back\n");

break;

case SPEED_UP: // скорость++ Serial.print("speed++\n"); break;

case SPEED_DOWN: // скорость-- Serial.print("speed--\n"); break;

case LEFT: // влево Serial.print("left\n"); break;

case RIGHT: // вправо Serial.print("right\n"); break;

case CIRCLE_RIGHT: // кружение вправо Serial.print("circle_right\n"); break;

case CIRCLE_LEFT: // кружение влево Serial.print("circle_left\n"); break;

case STOP: // стоп Serial.print("stop\n"); break;