💥 лодка на ардуино с ик управлением

Библиотеки для работы с IR

Для работы с ИК устройствами можно использовать библиотеку IRremote, которая позволяет упростить построение систем управления. Скачать библиотеку можно здесь.  После загрузки скопируйте файлы в папку \arduino\libraries. Для подключения в свой скетч библиотеки нужно добавить заголовочный файл #include <IRemote.h>.

Для чтения информации используется пример IRrecvDumpV2 из библиотеки. Если пульт уже существует в списке распознаваемых, то сканирование не потребуется. Для считывания кодов нужно запустить среду ARduino IDE и открыть пример IRrecvDemo из IRremote.

Существует и вторая библиотека для работы с ИК сигналами – это IRLib. Она похожа по своему функционалу на предыдущую. По сравнению с IRremote в IRLib имеется пример для определения частоты ИК датчика. Но первая библиотека проще и удобнее в использовании.

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

Оператор decode_results  нужен для того, чтобы присвоить полученному сигналу имя переменной results .

В коде нужно переписать «HEX» в «DEC».

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

Бывает, что при загрузке программы выдается ошибка «TDK2 was not declared In his scope». Для ее исправления нужно зайти в проводник, перейти в папку, в которой установлено приложение Arduino IDE и удалить файлы IRremoteTools.cpp и IRremoteTools.h. После этого нужно произвести перезагрузку программы на микроконтроллер.

Protocol=UNKNOWN

If you see something like as output of e.g. the ReceiveDemo example, you either have a problem with decoding a protocol, or an unsupported protocol.

  • If you have an odd number of bits received, it is likely, that your receiver circuit has problems. Maybe because the IR signal is too weak.
  • If you see timings like then one 450 µs space was split into two 150 and 100 µs spaces with a spike / error signal of 200 µs between. Maybe because of a defective receiver or a weak signal in conjunction with another light emitting source nearby.
  • If you see timings like , then marks are generally shorter than spaces and therefore (specified in your ino file) should be negative to compensate for this at decoding.
  • If you see it may be that the space after the initial mark is longer than . This was observed for some LG air conditioner protocols. Try again with a line e.g. before the line in your ino file.
  • To see more info supporting you to find the reason for your UNKNOWN protocol, you must enable the line in IRremoteInt.h.

Зажигаем светодиод … фоторезистором!

Всем привет! Давайте сразу же приступим к работе и не будем
отвлекаться о темы. Сначала нам нужно будет кое-какое оборудование (надеюсь,
что у вас это найдется): фоторезистор, резистор на 10 кОм и 240 Ом, светодиод,
макетная плата, и провода «П-П» (папа –папа). В последний раз мы исследовали
ШИМ сигнал, который позволял плавно менять яркость светодиода. Теперь давайте продолжим
развивать идею применения ШИМ.

Под действием света на фоторезистор у него будем меняться сопротивление.
Скажем чем ярче свет – тем сопротивление меньше. Наша задача состоит в том,
чтобы на данное световое воздействие реагировал и светодиод. Скажем чем света
меньше (например прикрыли окошко фоторезистора рукой) – тем ярче должен гореть
светодиод. Задача вроде бы простая, но здесь есть пара важных моментов: как
правильно подключить фоторезистор, и какой должен быть скетч?

Немного теории. Как вы уже догадались сигнал с фоторезистора
будет аналоговый (то есть он может принимать самые разные значения). А ведь наш
ардуино понимает эти сигналы (то есть ардуино содержит Аналогово-Цифровой
преобразователь АЦП). Arduino имеет 10 битный АЦП, т.е. подаваемый на вход
сигнал может быть преобразован в цифровые значения от 0 до 1023. Если к примеру
подключить микрофон к аналоговому входу Arduino и попасть в место с идеальной
тишиной, то будет значение 0, на улице днем -200-300, а если встать рядом с
взлетающим самолетом – 1023. Цифры абстрактные, но теперь должно быть понятно,
как это работает. Мы можем любой плавный
сигнал (звук, свет, напряжение) преобразовать в число от 0 до 1023.

Но в нашем примере мы работаем со светом – то есть
используем фоторезистор. Как же его правильно подключить, чтобы ардуино смог
принимать от него сигналы? А все просто: мы будем использовать делитель
напряжения: то есть подключим к фоторезистору последовательно еще один резистор
(10 кОм). При таком включении, будет меняться напряжение в зависимости от сопротивления.
То есть таким образом мы сможем определить уровень освещенности: чем больше
света падает на фоторезистор, тем больше напряжения пойдет на вход. Под «входом»
мы подразумеваем конечно же аналоговый вход А1.

Теперь давайте посмотрим окно монитора последовательного
порта. Вызываем окно и в нем бегут цифры. При этом если накрыть фоторезистор
рукой я получаю максимально значение 600, при открытом окне фоторезистор идет
значение о. То есть размах от 0 до 600. Но интереснее же конечно не смотреть на
меняющиеся цифры, а подключить светодиод. Подключим его к 3 выходу. На ардуино
нет отдельных аналоговых выходов, просто некоторые цифровые могут работать как
аналоговые. На плате они помечены знаком «тильда». Третий выход как раз такой.

Для начала давайте определим, какие минимальные и
максимальные значения мы получаем. У меня получилось от 0 до 600. Помним, что
АЦП Ардуино может выдавать от 0 до 1024. Обрежем крайние значения

int a=0;

void
setup()

  Serial.begin(9600);

  pinMode(3, OUTPUT);

}

void
loop()

{

  a=analogRead(1);

  if(a<200)

    a=0;

  if (a>600)

    a=1024; 

  Serial.println(a); 

analogWrite(3, 256- (a / 4));

  delay(100);

}

В итоге что-то получилось. Если прикрыть фоторезистор
рукой – то зажигается светодиод. Иными словами если значения на входе падают ниже 200, светодиод гаснет, а если выше 600, горит на полную

Обратите внимание, что значения аналогового выхода лежат в диапазоне 0-256, поэтому мы делим приходящие с входа значения на 4. Все это работает и как работает и схему
подключения вы можете увидеть в видеоролике:

Мерцающий светодиод

Всем моим читателям привет. Сегодня мы продолжим изучение
ардуино. В этом уроке мы постараемся разобраться как заставить светодиод
мерцать. До этого он просто мигал, то есть иными словами на него приходили
периодические импульсы тока, заставляя его зажигаться, и затем некоторое время
на светодиод не поступало напряжение – он гас. А можно сделать так, чтобы
светодиод зажигался по нарастающей яркостью и так же гас? Оказывается да! Вам
интересно? Тогда читаем дальше…

Все что нам нужно будет сделать – только написать скетч. Да
разобраться как работает одна команда, которая будет отправлять на пин разное
напряжение, тем самым заставляя светиться светодиод по разному. Схема остается
та же: светодиод подключен к резистору на 220-240 Ом, оставшиеся выводы светодиода
подключим к 7 пину, а вывод резистора на землю.

Теперь давайте выясним с помощью какой команды можно на пин
подавать разное напряжение. В нашем случае мы будем использовать аналоговый
сигнал (который может менять свои параметры, например напряжение) командой analogWrite (пин, 0-255).
Тогда выбранный нами пин будет выдавать напряжение от 0 до 5 вольт в
зависимости от значения (которое можно изменять от 0 до 255).

Скетч привожу ниже

Но обратите внимание что этот скетч я
написал для платы WEMOS D1. Если у вас плата Arduino Uno то замените в скетче
имя пина с D7 на 7 и у
вас все обязательно заработает

Я пока временно использую плату WEMOS D1, но
как появиться у меня Arduino Uno то скетчи буду писать именно для нее. Но пока
что давайте попробуем разобраться со скетчем.

int LED
= D7;

int x=5;

void setup()

{

  // пин со
светодиодом — выход, как и раньше…

  pinMode(LED, OUTPUT);

}

 void loop()

{

    // цикл
управления яркостью 0 до 255

  x=x+x;

 if (x >
255)x=-10;    // плавное нарастание

if (x < 20)x=10;   
// плавное угасание

  // выдаём
результат на светодиод

 // delay (200);

  analogWrite(D7, x);

   delay (200);

}

У нас задействованы два оператора if. Именно они и заставляют светодиод
мерцать. Достигается это двумя циклами с условиями. Первый цикл с условием
проверяет чтобы величина х не стала больше 255 (как только это произойдет, то х
станет равным «минус 10» и величина х пойдет на убыль. Второй цикл
контролирует, чтобы во время работы «на убыль» величина х не стала меньше 20
(когда это произойдет то х будет присвоено значение «плюс 10» и величина х
снова начнет увеличиваться, пока не достигнет верхнего порога, контролируемого
первым циклом. И так будет крутиться до бесконечности. 

Надеюсь что у вас все тоже получиться, тем более что это все элементарно просто. Пожелаю моим читателям успеха, и увидимся очень скоро в следующем уроке по набору ардуино. А пока давайте посмотрим как мигает светодиод (или даже несколько — включим их параллельно) уже в реале, а не на симуляторе. 

Z- IR receiver. Модуль ИК приемника

Опубликовано 05.05.2014 8:44:00

Модуль ИК Приемника в связке и ИК пультом дистанционного управления позволит легко реализовать дистанционное управление платой Arduino.

Он представляет из себя не что иное, как ИК приемник VS1838B с установленной на плате рекомендуемой производителем обвязкой.

Для работы с данным модулем “из коробки” необходим ПДУ с частотой 38 кГц.

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

• Напряжение питания: 2.7 – 5.5В

• Частота модуляции: 38кГц

• Диапазон температур: – 20 … +  80°C

• Интерфейс: Цифровой

Подключение к Arduino

Модуль оборудован трехпиновым разъемом стандарта 2.54мм

 : подключается к выводу GND

 подключается к выводу +5V

 : подключается к цифровому выводу ( в примере D2 )

Пример работы в среде Arduino

Для работы с данным модулем необходимо установить библиотеку IRRemote

Скачиваем, распаковываем и закидываем в папку libraries в папке Arduino. В случае, если на момент добавления библиотеки, Arduino IDE была открытой, перезагружаем среду.

Считывание показаний кнопок ПДУ

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

В качестве примера будем использовать пульт, как на картинке, т.к. пульт такого типа идет в наборе ИК пульт + ИК модуль приемник

Пример программного кода:

// Тестировалось на Arduino IDE 1.0.3
#include 
int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN); //Создаем объект получения сигнала с определенного порта
decode_results results; //Переменная, хранящая результат void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Начинаем прием
} void loop() {
  if (irrecv.decode(&results)) //При получении сигнала…
  { 
    Serial.println(results.value); //…выводим его значение в последовательный порт
    irrecv.resume(); // Получаем следующее значение
  }
}

В мониторе порта должны увидеть слудущее:

При почти секундном удержании каждой кнопки, мы получаем около 10 кодов. Первый из них и является кодом кнопки. А после него начинает идти стандартный код, который сообщает о залипании кнопки.

Управление платой Arduino c ПДУ

Заставим светодиод на плате Arduino (D13) загораться при получении кодировки первой кнопки и выключаться при получении кодировки второй.

Пример программного кода:

// Тестировалось на Arduino IDE 1.0.3
#include  int RECV_PIN = 2;
int LED = 13;
IRrecv irrecv(RECV_PIN);
decode_results results; void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Запуск приемника
  pinMode(LED, OUTPUT);
} void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value);
    if (results.value == 16769565) // При получении кодировки 1
    {
      digitalWrite(LED, HIGH); // Включаем светодиод
    }
    if (results.value == 16761405) // При получении кодировки 2
    {
      digitalWrite(LED, LOW); // Выключаем светодиод
    }
    irrecv.resume(); // Получаем следующее значение
  }
}

Купить в России  Z- Модуль ИК приемника

В данный момент еще реализованы не все элементы нашего сообщества. Мы активно работаем над ним и в ближайшее время возможность комментирования статей будет добавлена.

Content

Introduction

IR, or infrared, communication is a common, inexpensive, and easy to use wireless communication technology. IR light is very similar to visible light, except that it has a slightlty longer wavelength. This means IR is undetectable to the human eye – perfect for wireless communication. For example, when you hit a button on your TV remote, an IR LED repeatedly turns on and off, 38,000 time a second, to transmit information (like volume or channel control) to an IR photo sensor on your TV.

This tutorial will first explain the inner workings of common IR communication protocols. Then we will go over three examples that will allow you to transmit and receive IR data using an Arduino. In the first example, we will read incoming IR data from a common remote control using the 1838B IR photo sensor. The next example will show you how to test the IR remote and print the corrsponding button name on the Serial Monitor. The third example will show you how to transmit data from an IR receiver to control a common appliance, such as turn on an LED.

9.4 Передача ИК сигналов между двумя Arduino

9.4.3 Программируем ИК-передатчик

void setup()
{
  pinMode(4, OUTPUT);
}
 
void loop()
{
  digitalWrite(4, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(4, LOW);
  delay(1000); // Wait for 1000 millisecond(s)
}

9.4.4 Программируем ИК-приемник

#include "IRremote.h" 	//подключаем библиотеку
IRrecv irrecv(2);    	// указываем вывод, к которому подключен приемник
decode_results results; //создаем переменную, хранящую результат
int led = 6;         	//объявляем светодиод
 
void setup() {
  pinMode(led, OUTPUT);	//настраиваем пин светодиода как выход
  Serial.begin(9600); 	//настраиваем работу с монитором порта
  irrecv.enableIRIn();	//запускаем прием ИК сигнала
}
 
void loop() {
  if ( irrecv.decode( &results )) {        //если данные пришли
    digitalWrite(led, HIGH);
  else {
    digitalWrite(led, LOW);
  }    
  irrecv.resume();        	//принимаем следующую команду
}

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

После этого необходимо подключить заголовочный файл библиотеки в программу.

Arduino

#include <IRremote.h>

1 #include <IRremote.h>

Затем в программе необходимо указать контакт платы Arduino, к которому подключен контакт данных (Data pin) инфракрасного приемника. В нашем случае он подключен к контакту D2 платы Arduino.

Arduino

int IRPIN = 2;

1 intIRPIN=2;

После этого необходимо создать объект для работы с инфракрасным приемником.

Arduino

IRrecv irrecv(IRPIN);

1 IRrecvirrecv(IRPIN);

Далее объявим объект класса decode_results – он будет использоваться инфракрасным приемником для передачи декодированной информации.

Arduino

decode_results result;

1 decode_resultsresult;

Внутри функции setup() инициализируем последовательную связь и инфракрасный приемник при помощи вызова функции irrecv.enableIRIn().

Arduino

void setup()
{
Serial.begin(9600);
Serial.println(«Enabling IRin»);
irrecv.enableIRIn();
Serial.println(«Enabled IRin»);
Initialize_streamer();
}

1
2
3
4
5
6
7
8

voidsetup()

{

Serial.begin(9600);

Serial.println(«Enabling IRin»);

irrecv.enableIRIn();

Serial.println(«Enabled IRin»);

Initialize_streamer();

}

В функции loop() мы с помощью функции irrecv.decode будем непрерывно проверять наличие нового сигнала и если новый сигнал был принят, то его код мы будем сохранять в переменной result.value.

Arduino

void loop()
{
if (irrecv.decode(&result))
{
Serial.print(«Value: «);
Serial.println(result.value, HEX);
Write_streamer();
irrecv.resume();
}
delay(500);
}

1
2
3
4
5
6
7
8
9
10
11

voidloop()

{

if(irrecv.decode(&result))

{

Serial.print(«Value: «);

Serial.println(result.value,HEX);

Write_streamer();

irrecv.resume();

}

delay(500);

}

Для передачи данных из Arduino в лист Excel мы будем использовать плагин PLX-DAQ (ранее мы его уже использовали в проекте логгера данных температуры и влажности на основе Arduino). С помощью функции Write_streamer() мы будем передавать данные последовательно в специальном формате (фактически, это формат файлов .csv, которые можно считать с помощью Excel), которые нам будут затем необходимы для вывода информации в лист Excel.

Arduino

void Write_streamer()
{
Serial.print(«DATA»); //всегда передавайте «DATA» чтобы показать что следующая информация будет представлять собой данные
Serial.print(«,»); // переходим к следующему столбцу используя символ «,»
Serial.print(result.value, HEX); //сохраняем данные в Excel
Serial.print(«,»); // переходим к следующему столбцу используя символ «,»
Serial.print(button); // сохраняем данные в Excel
Serial.print(«,»); // переходим к следующему столбцу используя символ «,»
Serial.println(); //конец строки, переходим к следующей строке
}

1
2
3
4
5
6
7
8
9
10

voidWrite_streamer()

{

Serial.print(«DATA»);//всегда передавайте «DATA» чтобы показать что следующая информация будет представлять собой данные

Serial.print(«,»);// переходим к следующему столбцу используя символ «,»

Serial.print(result.value,HEX);//сохраняем данные в Excel

Serial.print(«,»);// переходим к следующему столбцу используя символ «,»

Serial.print(button);// сохраняем данные в Excel

Serial.print(«,»);// переходим к следующему столбцу используя символ «,»

Serial.println();//конец строки, переходим к следующей строке

}

После того как аппаратная и программная части проекта будут готовы, можно будет загружать программу в плату Arduino. После загрузки кода в плату направьте пульт ДУ на спроектированный нами декодер и начинайте нажимать на нем кнопки. Шестнадцатеричный код (hex code) каждой кнопки будет печататься в окне монитора последовательной связи (serial monitor).

Пример

Вы можете использовать функцию DECODE в SQL запросе следующим образом:

Oracle PL/SQL

SELECT supplier_name,
DECODE(supplier_id, 10000, ‘IBM’,
10001, ‘Microsoft’,
10002, ‘Hewlett Packard’,
‘Gateway’) result
FROM suppliers;

1
2
3
4
5
6

SELECTsupplier_name,

DECODE(supplier_id,10000,’IBM’,

10001,’Microsoft’,

10002,’Hewlett Packard’,

‘Gateway’)result

FROMsuppliers;

Запрос с использованием DECODE эквивалентен конструкции IF-THEN-ELSE.

Oracle PL/SQL

IF supplier_id = 10000 THEN
result := ‘IBM’;

ELSIF supplier_id = 10001 THEN
result := ‘Microsoft’;

ELSIF supplier_id = 10002 THEN
result := ‘Hewlett Packard’;

ELSE
result := ‘Gateway’;

END IF;

1
2
3
4
5
6
7
8
9
10
11
12
13

IFsupplier_id=10000THEN

result:=’IBM’;
 
ELSIFsupplier_id=10001THEN

result:=’Microsoft’;
 
ELSIFsupplier_id=10002THEN

result:=’Hewlett Packard’;
 
ELSE
result:=’Gateway’;
 

ENDIF;

Функция DECODE будет сравнивать каждое значение supplier_id, одно за другим.

Как подключить ИК приемник к Ардуино

Для этого занятия нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • макетная плата;
  • IR приемник;
  • пульт ДУ;
  • 1 светодиод и резистор 220 Ом;
  • провода «папа-папа» и «папа-мама».

Корпуса инфракрасных приемников содержат оптический фильтр для защиты прибора от внешних электромагнитных полей, изготавливаются они специальной формы для фокусировки принимаемого излучения на фотодиоде. Для подключения IR приемника к Arduino UNO используют три ножки, которые соединяют с — GND, 5V и A0. Советуем для начала использовать 3,3 Вольта, чтобы не сжечь ИК датчик при настройке.

Схема подключения ИК приемника к аналоговому порту Ардуино

Скетч для ИК приемника Arduino со светодиодом

#include <IRremote.h> // подключаем библиотеку для IR приемника

IRrecv irrecv(A0); // указываем пин, к которому подключен IR приемник
decode_results results;

void setup() {
   irrecv.enableIRIn();  // запускаем прием инфракрасного сигнала
   Serial.begin(9600); // подключаем монитор порта

   pinMode(12, OUTPUT); // пин 12 будет выходом (англ. «output»)
   pinMode(A0, INPUT); // пин A0 будет входом (англ. «intput»)
  
}

void loop() {
   if (irrecv.decode(&results)) // если данные пришли выполняем команды
   {
      Serial.println(results.value); // отправляем полученные данные на порт
    
      // включаем и выключаем светодиод, в зависимости от полученного сигнала  
      if (results.value == 16718055) { 
      digitalWrite(12, HIGH);
   }
      if (results.value == 16724175) { 
      digitalWrite(12, LOW);
   }
      irrecv.resume(); // принимаем следующий сигнал на ИК приемнике
   }
}

Пояснения к коду:

  1. библиотека содержит набор команд и позволяет упростить скетч;
  2. оператор  присваивает получаемым сигналам от пульта дистанционного управления имя переменной .

ИК датчик можно применять во многих устройствах на микроконтроллере Ардуино, в том числе, можно сделать дистанционное управление сервоприводом на Ардуино от ИК приемника. При настройке следует включить монитор порта Arduino IDE и узнать какой сигнал отправляет та или иная кнопка на пульте ДУ. Полученные коды следует использовать в скетче после знака двойного равенства в условиях .

Скетч для ИК приемника Ардуино и серовомотора

#include <IRremote.h> // подключаем библиотеку для IR приемника
IRrecv irrecv(A0);         // указываем пин, к которому подключен IR приемник
decode_results results;

#include <Servo.h> // подключаем библиотеку для серво
Servo myservo;       // создаем объект для управления серво

void setup() {
   irrecv.enableIRIn();  // запускаем прием инфракрасного сигнала
   Serial.begin(9600); // подключаем монитор порта

   myservo.attach(9); // указываем пин для подключения серво
}

void loop() {
   if (irrecv.decode(&results)) // если данные пришли выполняем команды
   {
      Serial.println(results.value); // отправляем полученные данные на порт
    
      // поворачиваем серво, в зависимости от ИК сигнала
      if (results.value == 16718055) { 
      myservo.write(0);
   }
      if (results.value == 16724175) { 
      myservo.write(90);
   }
     irrecv.resume(); // принимаем следующий сигнал на ИК приемнике
  }
}

Пояснения к коду:

  1. в условиях следует поставить свои значения, они будут появляться на мониторе порта при нажатии кнопок на пульте ду.

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

Исходный код программы (скетча)

Arduino

#include <IRremote.h>
int IRPIN = 2;
IRrecv irrecv(IRPIN);
decode_results result;
int button = 0;
void setup()
{
Serial.begin(9600);
Serial.println(«Enabling IRin»);
irrecv.enableIRIn();
Serial.println(«Enabled IRin»);
Initialize_streamer();
}
void loop()
{
if (irrecv.decode(&result))
{
button = button+1;
Serial.print(«Value: «);
Serial.println(result.value, HEX);
Write_streamer();
irrecv.resume();
}
delay(500);
}
void Initialize_streamer()
{
Serial.println(«CLEARDATA»); //очищаем все данные, оставшиеся от предыдущих проектов
Serial.println(«LABEL,Hex Code, Button»); //всегда вначале передавайте LABEL, чтобы показать что это первая строка
}
void Write_streamer()
{
Serial.print(«DATA»); //всегда передавайте «DATA» чтобы показать что следующая информация будет представлять собой данные
Serial.print(«,»); // переходим к следующему столбцу используя символ «,»
Serial.print(result.value, HEX); //сохраняем данные в Excel
Serial.print(«,»); // переходим к следующему столбцу используя символ «,»
Serial.print(button); // сохраняем данные в Excel
Serial.print(«,»); // переходим к следующему столбцу используя символ «,»
Serial.println(); //конец строки, переходим к следующей строке
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

#include <IRremote.h>

intIRPIN=2;

IRrecvirrecv(IRPIN);

decode_resultsresult;

intbutton=;

voidsetup()

{

Serial.begin(9600);

Serial.println(«Enabling IRin»);

irrecv.enableIRIn();

Serial.println(«Enabled IRin»);

Initialize_streamer();

}

voidloop()

{

if(irrecv.decode(&result))

{

button=button+1;

Serial.print(«Value: «);

Serial.println(result.value,HEX);

Write_streamer();

irrecv.resume();

}

delay(500);

}

voidInitialize_streamer()

{

Serial.println(«CLEARDATA»);//очищаем все данные, оставшиеся от предыдущих проектов

Serial.println(«LABEL,Hex Code, Button»);//всегда вначале передавайте LABEL, чтобы показать что это первая строка

}

voidWrite_streamer()

{

Serial.print(«DATA»);//всегда передавайте «DATA» чтобы показать что следующая информация будет представлять собой данные

Serial.print(«,»);// переходим к следующему столбцу используя символ «,»

Serial.print(result.value,HEX);//сохраняем данные в Excel

Serial.print(«,»);// переходим к следующему столбцу используя символ «,»

Serial.print(button);// сохраняем данные в Excel

Serial.print(«,»);// переходим к следующему столбцу используя символ «,»

Serial.println();//конец строки, переходим к следующей строке

}

Как определить цоколевку инфракрасного приёмника

Для примера я взял совершенно неизвестную мне микросхему, которая лежал в коробке с элементами, «минус», был определён, по точке, которая имеется на обратной стороне элемента, «плюс», опытным путём через резистор. Я ни чем, не рисковал, в то, что он изначально рабочий, надежды не было.

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

схема из журнала «Юный Техник».

Интересное направление радиоэлектроники, которая дополнила эту электронику новыми преимуществами «невидимого» света (инфракрасный свет). Вот я и предлагаю схему простого (для примера) приемника и передатчика основанного на инфракрасных лучах. Основа: операционный усилитель к140уд7 (у меня тут уд708), излучающий и принамющие ИК-фотодиоды, УНЧ (к548ун1а(б,в — индексами)- на два канала)(правда куда второй канал усилителя «включите» решать вам — схема предатчика рассчитана на один канал, т.е. моно). Питание устройства: вообще рекомендую с приличной стабилизацией токов (а так «дендюшный» адаптер раздражает фоном «сети»). Способ: амплитудно-модулированный сигнал передатчика усиливается приемником в 1000 раз.

Как работает устройство. Предлагаю Вам просмотреть небольшой видеоролик тестирование ИК-пульта «на слух». Можно быстро проверить работоспособность и мощность сигнала по звуку.

Схема ИК-приемника и ИК-передатчика

При сборке конденсаторы С1 и С2 должны быть как можно ближе к усилителю! К выходу можно подключить высокоомные наушники (для низкоомных нужен отдельный УНЧ). Фотодиод ФД7(у меня ФД5.. какой-то: «таблетка» такая с фокусирующей линзой — не помню точно наименование); 0.125Вт резисторы: R1 с R4 задают коэффициент услиния сигнала в 1000 раз. Приемник налаживается просто: фотодиод направляется на источник ИК-излучения, например, лампу 220в-50Гц: нить накала будет фонит с частотой 50Гц или пульт ДУ от телевизора (видео и т.д.).Чувствителность приемника большая: нормально принимает сигналы отражённые от стен.

На передатчике ИК светодиоды АЛ107а: подойдёт любой. R2 2 кОм, С1 1000мкФх25в, С2 200мкФх25В, трансформатор тоже любой. Хотя вполне можно обойтись без трансфорсматора — подать усиленный аудиосигнал на конденсатор С2.

Схема устройств

Недавно по необходимости собрал ИК приемник для проверки ИК пультов (телевизоров и DVD). После доработки схемы — установил моно УНЧ TDA7056. Данный усилитель имеет хорошие харакетеристики усиления около 42 дБ; работает в диапазоне напряжении от 3В до 18В, что позволило ИК приемнику работать даже при напряжении 3В; диапазон усиления TDA от 20 Гц до 20кГц (УД708 проспукает до 800 кГц) вполне достаточно для использования приемника в качетсве аудио сопровождения; имеет защиту от короткого замыкания на всех «ножках»; защиту от «перегрева»; слабый коэффициент собственных помех. В целом мне понравился этот компактный и надежный УНЧ (у нас он стоит 90р.).
Есть к нему с . На рис.1 отображен пример использования усилителя.

Фото TDA7056

Рис.1. Схема усилителя с TDA7056

В итоге получился ИК приемник рис.2, который работает в диапазоне напряжении от 3В до 12В. Рекомендую применять для питания приемника батареи, либо аккумуляторы. При использованиии блока питания необходим стабилизированный источник, иначе будет слышен фон сети 50Гц, который усиливает УД708. Если устройство находится вблизи источника сетевого напряжения или радиоизлучения, то могут возникнуть наводки. Для уменьшения помех в схему необходимо включить конденсатор С5. TDA7056 рассчитан на выходной динамик в 16 Ом, к сожалению у меня такого нет. Пришлось использовать 4-омный динамик на 3 Вт, который был подключен через одноваттный резистор 50 Ом. Слишком низкое сопротивление катушки динамика вызывает избыток мощности и перегревает усилитель. В целом из-за дополнительного резистора УНЧ не греется, но обеспечивает вполне приемлемое усиление.

Рис.2. Схема ИК приемника с УНЧ

Фото ИК приемника

Рассмотрим на этом занятии подключение ИК приемника к Ардуино. Расскажем какую библиотеку следует использовать для IR приемника, продемонстрируем скетч для тестирования работы инфракрасного приемника от пульта дистанционного управления и разберем команды в языке C++ для получения управляющего сигнала.