arduion利用红外接收和全彩灯模块制作遥控小夜灯

arduion利用红外接收和全彩灯模块制作遥控小夜灯

本次arduino遥控器控制全彩灯珠主要是用到一个名为Adafruit_NeoPixel库和IRremote库,你可以在https://download.csdn.net/download/m0_37738838/10580805下载到这两个库文件及下面提到的源码案例。

#include <Adafruit_NeoPixel.h>//全彩LED库文件
#define PIN 13    //设置全彩LED引脚为13 可自己调整
#define MAX_LED 9
Adafruit_NeoPixel strip = Adafruit_NeoPixel( MAX_LED, PIN, NEO_RGB + NEO_KHZ800 );//Adafruit_NeoPixel实例化,通过构造函数初始化
#include <IRremote.h>//红外接收库文件
int PIN_RECV = 2;//红外接收引脚为2
int init_light=100;//初始亮度
int init_color = 0;//初始颜色
IRrecv irrecv(PIN_RECV);//定义IR接收对象
decode_results results;//定义IR接收到的编码结果
uint32_t color_green = strip.Color(255,0,0); //GRB
uint32_t color_red = strip.Color(0,255,0); 
uint32_t color_blue = strip.Color(0,0,255); 
uint32_t color_yellow = strip.Color(255,255,0); 
uint32_t color_white = strip.Color(255,255,255); 
uint32_t color[] = {color_red,color_green,color_blue,color_yellow,color_white};
int length = sizeof(color)/sizeof(color[0])-1;//颜色数组长度
void setup() {
          Serial.begin(9600);
          strip.begin();           //初始化Adafruit_NeoPixel;
          irrecv.enableIRIn();    //开启IR接收
          Rgb();    //初始颜色亮度

}
void loop() {
 if (irrecv.decode(&results)) {
    Serial.println(results.value,HEX);//16进制输出红外码值
  switch(results.value)
  {
     //up 增加亮度
     case 0xFF18E7: RgbLight_add();
        break;
     //down 降低亮度
      case 0xFF4AB5:RgbLight_sub();
        break;
     //left 上个颜色
      case 0xFF10EF:color_add();
        break;
      //right 下个颜色
      case 0xFF5AA5: color_sub();
        break;
  }
    irrecv.resume();
  } 
}
void Rgb(){  //初始颜色亮度 
   strip.setPixelColor(0, color[init_color]);
   strip.setPixelColor(1, color[init_color]);
   strip.setBrightness(init_light);
   strip.show();
}
void RgbLight_add(){          //增加亮度
 init_light = init_light+50;
 Serial.println(init_light);
  if(init_light>250){init_light=250;}
  strip.setBrightness(init_light);
   delay(100);
   strip.show();
}
void RgbLight_sub(){         //降低亮度
  init_light = init_light-50;
  Serial.println(init_light);
  if(init_light==0){init_light=50;}//最低亮度
  strip.setBrightness(init_light);
  delay(100);
   strip.show();
}
void color_add(){      //上个颜色
     init_color++;
     if(init_color>length) init_color=0;
     strip.setPixelColor(0, color[init_color]);
     strip.setPixelColor(1, color[init_color]);
     strip.show();
}
void color_sub(){      //下个颜色
      init_color--;
      if(init_color<0) init_color=length;
      strip.setPixelColor(0, color[init_color]);
      strip.setPixelColor(1, color[init_color]);
      strip.show();

}

strip对象使用到的函数均可在库文件中查找原型,代码运行前导入库文件,下面链接有介绍
https://jingyan.baidu.com/article/bad08e1eec82f909c8512187.html
本程序编写时是两个全彩LED的集成模块
这里写图片描述
全彩LED电路图:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/m0_37738838/article/details/81383081