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

Уроки по управлению светодиодами с помощью ИК-пульта дистанционного управления с использованием Arduino Uno R3 в качестве контроллера.

Комплектующие

Ниже перечислим все комплектующие для нашего урока.

Arduino Uno R3

Arduino Uno R3 - это плата, которая поможет вам обработать код и заставить вашу схему работать. Вы также можете купить данную плату в любом удобном магазине. Мы начали составлять рейтинг интернет-магазинов, где можно купить разнообразные детали для радиоэлектроники и робототехники.

Макетная плата

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

Кабель для Arduino

Этот кабель поможет вам подключить Ардуино к вашему ноутбуку.

ИК-приемник

ИК-приемник поможет вам получить ИК-сигнал и отправить информацию в Arduino.

ИК-пуль дистанционного управления

ИК-пульт отправляет ИК-сигнал на ИК-приемник.

Перемычки "мама-мама"

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

Светодиоды

Светодиод включается и светится, когда на него подается электричество.

Резисторы 1 КОм и 220 Ом

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

Схема соединения

Следуйте согласно схеме ниже для того, чтобы собрать всё вместе.

Код проекта

Для начала нам нужно сказать библиотеку для ИК-управления:

В первом варианте с несколькими светодиодами и 220 Ом резисторами наш код выглядеть будет таким образом:

#include <boarddefs.h><br>#include <IRremote.h>
#include <IRremoteInt.h>
#include <ir_Lego_PF_BitStreamEncoder.h>
int ledb = 13;
int ledg = 12;
int ledr = 8;
int ledy = 7;
int ledw = 2;
int r = 11;
IRrecv irrecv(r);
decode_results results;
long IRCode = 0;</p><p>void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
  pinMode(ledb,OUTPUT);
  pinMode(ledg,OUTPUT);
  pinMode(ledr,OUTPUT);
  pinMode(ledy,OUTPUT);
  pinMode(ledw,OUTPUT);
  pinMode(r,INPUT);</p><p>}</p><p>void loop()
{
  if (irrecv.decode(&results))
    {
     Serial.println(results.value);
     IRCode = results.value;
     irrecv.resume(); // Receive the next value
     
    }
    if (IRCode == 16724175){
      digitalWrite(ledb, !digitalRead(ledb));
    }
    if (IRCode == 16718055){
      digitalWrite(ledg, !digitalRead(ledg));
    }
    if (IRCode == 16743045){
      digitalWrite(ledr, !digitalRead(ledr));
    }
    if (IRCode == 16716015){
      digitalWrite(ledy, !digitalRead(ledy));
    }
    if (IRCode == 16726215){
      digitalWrite(ledw, !digitalRead(ledw));
    }
    
}

Во втором варианте с резисторами 1 КОм (схема выше) можно использовать следующий код:

#include <IRremote.h>

const int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;
const int redPin = 10;
const int greenPin = 11;


void setup(){
  irrecv.enableIRIn();
  irrecv.blink13(true);
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
}

void loop(){
    if (irrecv.decode(&results)){

        switch(results.value){
          case 0xFF38C7: //Keypad button "5"
          digitalWrite(redPin, HIGH);
          delay(2000);
          digitalWrite(redPin, LOW);
          }

        switch(results.value){
          case 0xFF18E7: //Keypad button "2"
          digitalWrite(greenPin, HIGH);
          delay(2000);
          digitalWrite(greenPin, LOW);
          }

        irrecv.resume(); 
    }
}

Добавление опций в схему

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

if (IRCode == 16712445){
digitalWrite(ledb,HIGH);

delay(100);
digitalWrite(ledb,LOW);
digitalWrite(ledg,HIGH);
delay(100);
digitalWrite(ledg,LOW);
digitalWrite(ledr,HIGH);
delay(100);
digitalWrite(ledr,LOW);
digitalWrite(ledy,HIGH);
delay(100);
digitalWrite(ledy,LOW);
digitalWrite(ledw,HIGH);
delay(100);
digitalWrite(ledw,LOW); 
}

Результат

Решения, если цепь не работает.

  1. Проверьте соединения в цепи, правильно ли вы все соединили.
  2. Если у вас нет ИК-пульта Elegoo, найдите коды кнопок вашего ИК-пульта и замените их на коды в IRCode == (ваш код).
  3. Проверьте, правильный ли код вы скопировали.

На этом наш урок закончен. Больше про работу с пультами дистанционного управления будет в следующих уроках.

11.12.2018 | Уроки | Теги статьи ,
Ардуино+