Bài 16: Điều khiển LED 7 đoạn bằng IR Remote Arduino

Bài 16: Điều khiển LED 7 đoạn bằng IR Remote Arduino

Trong nội dung bài trước mình đã giới thiệu các bạn làm thế nào để hiển thị dãy số lên LED 7 đoạn. Tiếp tục trong chuỗi bài viết hôm nay mình sẽ hướng dẫn các bạn cách dùng IR Remote để điều khiển LED 7 đoạn và để hiểu hơn về bài viết hôm nay các bạn có thể xem lại bài hôm trước để có thể thực hành một cách tốt nhất.

IR Remote

Sơ đồ đấu nối

Các linh kiện cần thiết cho dự án

Tên linh kiện Số lượng
Arduino Uno R3 1
Dây cắm 15
Breadboard 1
LED 7 đoạn 1
Trở 220R 8
IR Receiver 1
Điều khiển IR Remote 1

Code

#include <IRremote.h>      
int RECV_PIN = 11;         
IRrecv irrecv(RECV_PIN);   
decode_results results;   
int currentNumber = 0;     

long codes[12]=             // this array is used to store infrared codes
{
   0xFD30CF,0xFD08F7,               // 0 ,1
   0xFD8877,0xFD48B7,               // 2 ,3
   0xFD28D7,0xFDA857,               // 4 ,5
   0xFD6897,0xFD18E7,               // 6 ,7
   0xFD9867,0xFD58A7,               // 8 ,9
   0xFD20DF,0xFD609F,               // advance, move back
};

int number[10][8] =            //the array is used to store the number 0~9
{
  {0,0,0,1,0,0,0,1},//0
  {0,1,1,1,1,1,0,1},//1
  {0,0,1,0,0,0,1,1},//2
  {0,0,1,0,1,0,0,1},//3
  {0,1,0,0,1,1,0,1},//4
  {1,0,0,0,1,0,0,1},//5
  {1,0,0,0,0,0,0,1},//6
  {0,0,1,1,1,1,0,1},//7
  {0,0,0,0,0,0,0,1},//8
  {0,0,0,0,1,1,0,1} //9
};

void numberShow(int i) {                  //this function is used to display numbers
  for(int pin = 2; pin <= 9 ; pin++){
     digitalWrite(pin, number[i][pin - 2]);
  }
}

void setup(){
  Serial.begin(9600);            
  irrecv.enableIRIn();          
  
  for(int pin = 2 ; pin <= 9 ; pin++){   
      pinMode(pin, OUTPUT);
      digitalWrite(pin, HIGH);
  }
}

void loop() {
  if (irrecv.decode(&results)) {
      for(int i = 0; i <= 11; i++){
         
         if(results.value == codes[i]&& i <= 9){
               numberShow(i);  // display number 0~9 on the digital control
               currentNumber = i;  
               Serial.println(i);
               break;        
         }
         else if(results.value == codes[10]&& currentNumber != 0){
               currentNumber--;                 
               numberShow(currentNumber);       
               Serial.println(currentNumber);  
               break;        
         }
         else if(results.value == codes[11]&& currentNumber != 9){
               currentNumber++;                 
               numberShow(currentNumber);      
               Serial.println(currentNumber); 
               break;            
         }
    } 
    
   Serial.println(results.value, HEX); 
   irrecv.resume();   
  }
}

BÀI VIẾT LIÊN QUAN
Bài 1: Chớp tắt LED trên Arduino Uno Bài 8: Cảm biến góc nghiêng sử dụng ngắt (INTERRUPT) trong môi trường Arduino
Bài 2: Chớp tắt LED trên Arduino Uno (Phần 2) Bài 9: Cảm biến ánh sáng (Quang trở) cách chia điện áp trong môi trường Arduino
Bài 3: Sử dụng Arduino làm hệ thống đèn giao thông Bài 10: Điều khiển động cơ RC Servo sử dụng Arduino
Bài 4: PWM | Thay đổi ánh sáng của LED trên Arduino Bài 11: Điều khiển động cơ Servo bằng biến trở sử dụng Arduino
Bài 5: Thay đổi màu sắc Led RGB sử dụng Arduino Bài 12: Thay đổi màu sắc LED RGB bằng biến trở sử dụng Arduino
Bài 6: Tạo âm thanh (Còi) bằng Arduino Bài 13: Điều khiển động cơ quạt bằng nút nhấn sử dụng Arduino
Bài 7: Cảnh báo nhiệt độ (LM35) bằng còi báo sử dụng Arduino Uno Bài 14: Điều khiển LED bằng IR Remote sử dụng Arduino
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments