KE0094 KEYES ARDUINO电子爱好者通用元件包套件503B

来自KEYES
跳转至: 导航搜索


KEYES ARDUINO电子爱好者通用元件包套件503B

KE0094.png


说明

这个套件包含我们玩单片机时使用到的常用元件,如不同阻值的电阻、不同颜色的LED灯、不同容值的电容、按键、红外遥控等。它适用于各种单片机和树莓派。我们还会根据这些元件,提供一些基于Arduino开发板的一些学习课程,包含接线方法,测试代码等,让你对这些电子元件和Arduino开发板有个初步的了解。


清单

编码 名称 描述 数量 图片
1 LED F5-红发红-短 10 Red-red.pngRed-red.png
2 LED F5-黄发黄-短 10 Yellow-yellow.pngYellow-yellow.png
3 LED F5-蓝发蓝-短 10 Blue-blue.pngBlue-blue.png
4 LED F5-绿发绿-短 10 Green-green.pngGreen-green.png
5 LED F5-全彩RGB透明共阴 2 RGB-.pngRGB-.png
6 电阻 碳膜色环 1/4W 1% 100R 编带 10 电阻10.jpg
7 电阻 碳膜色环 1/4W 1% 220R 编带 10 电阻10.jpg
8 电阻 碳膜色环 1/4W 1% 330R 编带 10 电阻10.jpg
9 电阻 碳膜色环 1/4W 1% 1K 编带 1 电阻10.jpg
10 电阻 碳膜色环 1/4W 1% 4.7K 编带 10 电阻10.jpg
11 电阻 碳膜色环 1/4W 1% 10K 编带 10 电阻10.jpg
12 电阻 碳膜色环 1/4W 1% 47K 编带 10 电阻10.jpg
13 电阻 碳膜色环 1/4W 1% 100K 编带 10 电阻10.jpg
14 陶瓷电容 22PF 2.54 10 22PF.png22PF.png22PF.png22PF.png22PF.png22PF.png22PF.png22PF.png22PF.png22PF.png
15 陶瓷电容 100PF 101 50V 10 100PF.png100PF.png100PF.png100PF.png100PF.png100PF.png100PF.png100PF.png100PF.png100PF.png
16 陶瓷电容 10NF 103 2.54 10 10NF.png10NF.png10NF.png10NF.png10NF.png10NF.png10NF.png10NF.png10NF.png10NF.png
17 陶瓷电容 100NF 104 2.54 10 104.png104.png104.png104.png104.png104.png104.png104.png104.png104.png
18 电解电容 470UF 16V 8*12MM 插件 5 Ke0094-18电解电容.pngKe0094-18电解电容.pngKe0094-18电解电容.pngKe0094-18电解电容.pngKe0094-18电解电容.png
19 电解电容 10UF 50V 5*11MM 插件 10 Ke0094电解电容.pngKe0094电解电容.pngKe0094电解电容.pngKe0094电解电容.pngKe0094电解电容.pngKe0094电解电容.pngKe0094电解电容.pngKe0094电解电容.pngKe0094电解电容.pngKe0094电解电容.png
20 白帽按键 12*12*7.3MM 1 白帽按键.jpg
21 红帽按键 12*12*7.3MM 1 红帽按键.jpg
22 蓝帽按键 12*12*7.3MM 1 蓝帽按键.jpg
23 黄帽按键 12*12*7.3MM 1 黄帽按键.jpg
24 蜂鸣器 有源 12*9.5MM 5V 普通分体 2300Hz 1 KE0080-8.png
25 蜂鸣器 无源 12*8.5MM 5V 普通分体 2K 1 KE0080-7.png
26 可调电位器 3386 MU 103(三针直排) 2 KE0080-27.pngKE0080-27.png
27 IC 74HC595 DIP 1 KE0080-28.png
28 传感器元件 红外接收 VS1838B 1 KE0080-13.png
29 遥控器 JMP-1 17键86*40*6.5MM 黑色 1 KE0080-1.png
30 面包板 ZY-60 400孔白色(纸卡包装) 1 面包板.png
31 面包线 面包板连接线30根 1 30面包线.png
32 电阻卡 100*70MM 1 KE0080-32.png


Arduino IDE和驱动的安装

当我们拿到Arduino开发板时,首先我们要安装Arduino IDE和驱动,相关文件我们可以在官网上找到,以下链接是包含各种系统、各种版本的Arduino IDE和驱动任你选择。
https://www.arduino.cc/en/Main/OldSoftwareReleases#1.5.x
下面我们介绍下Arduino-1.5.6 版本IDE在Windows系统的安装方法。
下载下来的文件是一个arduino-1.5.6-r2-windows.zip的压缩文件夹,解压出来到硬盘。
双击Arduino-1.5.6 .exe文件
001.png

然后点击下一步
002.png

再然后点击安装
003.png

等待安装完成.点击close,安装完成。
004.png

1.5.6版本安装后的样子
005.png

  • 接下来是开发板驱动的安装,这次我们安装的是Keyes UNO R3 开发板的驱动,Keyes 2560 R3 开发板安装驱动方法和这个类似,驱动文件可以用同一个文件。

不同的系统,安装驱动的方法也有一些细小的区别,下面我们介绍在WIN 7系统安装驱动的方法。
第一次Keyes UNO R3 开发板连接电脑时,点击计算机--属性--设备管理器,显示如下图。

006.png

点击 Unknown device 安装驱动,如下图

007.png
进入下图,选择

008.png
找到Arduino安装位置的drivers文件夹,

009.png
点击“Next”,进入下图选择,开始安装驱动

010.png
安装驱动完成,出现下图点击Close。

011.png

这样驱动就装好了。

点击计算机属性,进入设备管理器进入界面,我们可看见如下图。
012.png


Arduino IDE的使用方法

Keyes UNO R3 开发板的USB驱动安装成功之后,我们可以在Windows设备管理器中找到相应的串口。
下面示范第一个程序的烧写,串口监视器中显示“Hello World!”。
测试代码为:

int val;
int ledpin=13; 
void setup()
{
Serial.begin(9600);
pinMode(ledpin,OUTPUT);
}
void loop()
{
val=Serial.read();
if(val=='R')
{
digitalWrite(ledpin,HIGH);
delay(500);
digitalWrite(ledpin,LOW);
delay(500);
Serial.println("Hello World!");
}
}

我们打开Arduino 的软件,编写一段程序让Keyes UNO R3 开发板接受到我们发的指令就显示“Hello World!”字符串;我们再借用一下Keyes UNO R3 开发板上的 D13 的指示灯,让Keyes UNO R3 开发板接受到指令时指示灯闪烁一下,再显示“Hello World!”。 打开Arduino 的软件,设置板,如下:

013.png

设置COM端口,如下

014.png

点击015.png 编译程序,检查程序错误;点击016.png 上传程序;Uno板设置OK后右下脚显示如下图,和设备管理器中显示一致。

017.png

上传成功,输入R,点击发送,Arduino 自带的数字13 口LED闪烁一次,串口监视器中显示 Hello World! 如下图

018.png

那么恭喜你,你的第一个程序已经成功了!!!


实验课程

实验一 LED 闪烁实验

实验说明
LED 闪烁实验是比较基础的实验之一,上一个“ Hello World!”实验里已经利用到了Arduino 自带的LED,这次我们利用其他I/O 口和外接直插LED 灯来完成这个实验。

实验器材

  • 开发板*1
  • USB线*1
  • LED*1
  • 220Ω 电阻*1
  • 面包板*1
  • 面包板连接线若干

接线图
KE0093-1.png

测试代码

int led = 2;                     //定义数字口2
void setup()
{
  pinMode(led, OUTPUT);     //设置led为输出
}
void loop()
{
  digitalWrite(led, HIGH);   //开启led
   delay(1000); //延迟1秒               
  digitalWrite(led, LOW);    //关闭led
  delay(1000);//延迟1秒
}

测试结果
下载完程序就可以看到我们的IO口外接小灯在闪烁了,这样我们的实验现象为LED不停闪烁,间隔大约为1秒。

实验二 呼吸灯实验

实验说明
上一课程中我们只是控制LED的亮和灭,那么我们可以怎么控制LED的亮度呢?本课程中我们把LED接到PWM口中,然后通过改变PWM数值,调节LED亮度,使LED逐渐变亮,和逐渐变暗,从而达到呼吸灯的效果。

实验器材

  • 开发板*1
  • USB线*1
  • LED*1
  • 220Ω 电阻*1
  • 面包板*1
  • 面包板连接线若干

接线图
KE0093-2.png

测试代码

int ledPin = 3; // 定义数字口3
void setup()
{
pinMode(ledPin, OUTPUT);// 将ledPin设置为输出
}
void loop()
{
for (int a=0; a<=255;a++)// 设置使LED逐渐变亮
{
analogWrite(ledPin,a); // 开启led,调节亮度,范围是0-255,在255时led最亮
delay(10); // 延迟0.01S
}
for (int a=255; a>=0;a--) // 设置使LED逐渐变暗
{
analogWrite(ledPin,a); // 开启led,调节亮度,范围是0-255,在255时led最亮
delay(10); // 延迟0.01秒
}
delay(1000);// 延迟1秒
}

测试结果
下载完程序就可以看到我们的IO口外接小灯显示出呼吸灯的效果,小灯先逐渐变亮,后逐渐变暗,循环交替。

实验三 广告灯实验

实验说明
在生活中我们经常会看到一些由各种颜色的led灯组成的广告牌,广告牌上各个位置上癿led灯不断的变话,形成各种效果。本节实验就是利用led灯编程模拟广告灯效果。

实验器材

  • 开发板*1
  • USB线*1
  • LED*5
  • 220Ω 电阻*5
  • 面包板*1
  • 面包板连接线若干

接线图
KE0093-3.png

测试代码

int BASE = 2 ;  //第一个 LED 接的 I/O 口
int NUM = 5;   //LED 的总数
void setup()
{
   for (int i = BASE; i < BASE + NUM; i ++) 
   {
     pinMode(i, OUTPUT);   //设定数字I/O口为输出
   }
}
void loop()
{
   for (int i = BASE; i < BASE + NUM; i ++) 
   {
     digitalWrite(i, HIGH);    //设定数字I/O口输出为"高",即逐渐开灯
     delay(200);        //延迟
   }
   for (int i = BASE; i < BASE + NUM; i ++) 
   {
     digitalWrite(i, LOW);    //设定数字I/O口输出为"低",即逐渐关灯
     delay(200);        //延迟
   }  
}

测试结果
下载完程序就可以看到我们的IO口外接小灯先逐渐变亮,然后逐渐变暗,循环交替。

实验四 交通灯实验

实验说明
前面我们已经完成了单个小灯的控制实验,接下来我们就来做一个稍微复杂一点的交通灯实验,其实聪明的朋友们可以看出来这个实验就是将上面单个小灯的实验扩展成3 个颜色的小灯,就可以实现我们模拟交通灯的实验了。

实验器材

  • 红色LED*1
  • 黄色LED*1
  • 绿色LED*1
  • 220Ω电阻*3
  • 面包板*1
  • 面包板连接线若干

接线图
KE0094-4.png

测试代码

int redled =10; //定义数字10 接口
int yellowled =7; //定义数字7 接口
int greenled =4; //定义数字4 接口
void setup()
{
pinMode(redled, OUTPUT);//定义红色小灯接口为输出接口
pinMode(yellowled, OUTPUT); //定义黄色小灯接口为输出接口
pinMode(greenled, OUTPUT); //定义绿色小灯接口为输出接口
}
void loop()
{
digitalWrite(greenled, HIGH);////点亮 绿灯
delay(5000);//延时5秒
digitalWrite(greenled, LOW); //熄灭 绿灯
for(int i=0;i<3;i++)//闪烁交替三次,黄灯闪烁效果
{
delay(500);//延时0.5 秒 
digitalWrite(yellowled, HIGH);//点亮  黄灯
delay(500);//延时0.5 秒
digitalWrite(yellowled, LOW);//熄灭  黄灯
} 
delay(500);//延时0.5 秒
digitalWrite(redled, HIGH);//点亮 红灯
delay(5000);//延时5 秒
digitalWrite(redled, LOW);//熄灭 红灯
}

测试结果
按照接线图接好线,上传完程序,上电后,我们就可以看到我们自己设计控制的交通灯了。实验效果为绿灯亮5秒,绿灯熄灭,黄灯循环闪烁3次,红灯亮5秒,依次循环。

实验五 按键控制LED实验

实验说明
I/O 口的意思即为INPUT 接口和OUTPUT 接口,到目前为止我们设计的小灯实验都还只是应用到Arduino 的I/O 口的输出功能,这个实验我们来尝试一下使用Arduino的I/O 口的输入功能即为读取外接设备的输出值,我们用一个按键和一个LED 小灯完成一个输入输出结合使用的实验,让大家能简单了解I/O 的作用。

实验器材

  • 开发板*1
  • USB线*1
  • LED*1
  • 轻触按键*1
  • 220Ω 电阻*1
  • 10KΩ 电阻*1
  • 面包板*1
  • 面包板连接线若干

接线图
KE0093-4.png

测试代码

int ledPin = 11;  //定义数字口11
int inputPin = 3; //定义数字口3
void setup() 
{
pinMode(ledPin, OUTPUT);   //将ledPin设置为输出 
pinMode(inputPin, INPUT); //将inputPin设置为输入 
}
void loop()
{
int val = digitalRead(inputPin);
//设置数字变量val,读取到数字口3的数值,并赋值给 val 
if (val == LOW) //当val为低电平时,LED变暗
{ 
digitalWrite(ledPin, LOW); // LED变暗
}
 else 
{
digitalWrite(ledPin, HIGH); // LED亮起
}
}

测试结果
下载完程序,上电后,当按键按下时小灯亮起,否则小灯不亮。

实验六 抢答器实验

实验说明
完成上面的实验以后相信已经有很多朋友可以独立完成这个实验了,我们可以将上面的按键控制小灯的实验扩展成4个按键对应3 个小灯,占用7个数字I/O 接口。为方便接线,我们把3个小灯用一个RGB灯代替。RGB灯可通过 R、 G、 B三个引脚的PWM电压输入可以调节三种基色(红/蓝/绿)的强度从而实现全彩的混色效果。
本实验中我们利用4个按键控制3个PWM口,控制RGB模块发光颜色从而达到抢答器的效果。
RGB灯接口说明如下图。
KE0093-5.png

实验器材

  • 开发板*1
  • USB线*1
  • RGB灯*1
  • 轻触按键*4
  • 10KΩ 电阻*4
  • 330Ω 电阻*1
  • 面包板*1
  • 面包板连接线若干
  • 杜邦线若干

接线图
KE0093-5(1.png

测试代码

int redled=9;     
int greenled=10; 
int blueled=11;  
int redpin=5;    
int greenpin=4; 
int bluepin=3;   
int restpin=2;   
int red;
int green;
int blue;
void setup()
{
pinMode(redled,OUTPUT);
pinMode(greenled,OUTPUT);
pinMode( blueled,OUTPUT);
pinMode(redpin,INPUT);
pinMode(greenpin,INPUT);
pinMode(bluepin,INPUT);
}
void loop() 
{
red=digitalRead(redpin);
green=digitalRead(greenpin);
blue=digitalRead(bluepin);
if(red==LOW)RED_YES();    
if(green==LOW)GREEN_YES();
if(blue==LOW)BLUE_YES();
}

void RED_YES() 
{
  while(digitalRead(restpin)==1)
  {
color(255, 0, 0); 
 }
  clear_led();
}
void GREEN_YES()
{
  while(digitalRead(restpin)==1)
  {
color(0, 255, 0); 
  }
  clear_led();
}
void BLUE_YES()
{
  while(digitalRead(restpin)==1)
  {
 color(0, 0, 255); 

  }
  clear_led();
}
void clear_led()
{
 color(0, 0, 0); 
}
void color (unsigned char red, unsigned char green, unsigned char blue)  //颜色控制函数 
{    
  analogWrite(redled, red);   
  analogWrite(greenled,green); 
  analogWrite(blueled, blue); 
} 

测试结果
下载完程序,上电后,一个简单的抢答器就做好了,我们根据RGB灯显示的颜色判断是谁抢答成功。在复位后。RGB灯关闭。

实验七 电位器调控灯光亮度实验

实验说明
在第二课程中我们直接通过PWM口控制灯的亮度,从而达到呼吸灯的效果。在这课程中我们通过一个电位器,利用电位器调节PWM值,从而控制灯的亮度。

实验器材

  • 开发板*1
  • USB线*1
  • LED*1
  • 220Ω 电阻*1
  • 可调电位器*1
  • 面包板*1
  • 面包板连接线若干

接线图
KE0093-6.png

测试代码

int ledpin=11;//定义数字接口11(PWM 输出)
void setup()
{
pinMode(ledpin,OUTPUT);//定义数字接口11 为输出
Serial.begin(9600);//设置波特率为9600
}
void loop()
{
int val=analogRead(0);//读取模拟口A0口的值
val = map(val, 0, 1023, 0, 255);//从0-1023映射到0-255
Serial.println(val);//显示val 变量
analogWrite(ledpin,val);// 打开LED 并设置亮度
delay(100);//延时0.1 秒
}

测试结果
下载完程序后。我们可以通过旋转可调电位器控制小灯的亮度,打开串口监视器,设置波特率为9600,就可看到调节LED亮度的PWM值。

实验八 有源蜂鸣器实验

实验说明
蜂鸣器可分为有源蜂鸣器和无源蜂鸣器两种。本课程中主要用到了有源蜂鸣器,有源蜂鸣器内部有一简单的振荡电路,能将恒定的直流电转化成一定频率的脉冲信号。实验中中我们只需要给蜂鸣器输入一个高电平信号,蜂鸣器响起。

实验器材

  • 开发板*1
  • USB线*1
  • 有源蜂鸣器*1
  • 面包板*1
  • 面包板连接线若干

接线图
KE0093-8.png

测试代码

int buzzer = 2;                     //定义数字口2
void setup()
{
  pinMode(buzzer, OUTPUT);     //设置buzzer为输出
}
void loop()
{
  digitalWrite(buzzer, HIGH);   //开启buzzer
  delay(1000); //延迟1S               
  digitalWrite(buzzer, LOW);    //关闭buzzer
  delay(1000);//延迟1S
}

测试结果
下载完程序后,我们可以听到蜂鸣器响1秒,停止响起1秒,循环交替。

实验九 无源蜂鸣器实验

实验说明
蜂鸣器可分为有源蜂鸣器和无源蜂鸣器两种。本课程中主要用到了无源蜂鸣器,无源蜂鸣器内部不带振荡源,直流信号无法令其鸣叫,须用方波驱动。

实验器材

  • 开发板 *1
  • USB线*1
  • 无源蜂鸣器*1
  • 面包板*1
  • 正标线若干

接线图
KE0094-9.png

测试代码
代码1:

int buzzer=3;          //定义数字口3
void setup() 
{ 
pinMode(buzzer,OUTPUT);//将buzzer设置为输出
} 
void loop() 
{ 
unsigned char i,j;//定义变量i,j
while(1) 
{ 
for(i=0;i<80;i++)// 输出一个频率的声音
{ 
digitalWrite(buzzer,HIGH);
delay(1);//延迟1ms 
digitalWrite(buzzer,LOW);
delay(1);//延迟1ms 
} 
for(i=0;i<100;i++)//  输出另一个频率的声音
{ 
digitalWrite(buzzer,HIGH); 
delay(2);//延迟2ms 
digitalWrite(buzzer,LOW); 
delay(2);//延迟2ms 
}
} 
} 

代码 2:

#define D0 -1
#define D1 262
#define D2 293
#define D3 329
#define D4 349
#define D5 392
#define D6 440
#define D7 494
#define M1 523
#define M2 586
#define M3 658
#define M4 697
#define M5 783
#define M6 879
#define M7 987
#define H1 1045
#define H2 1171
#define H3 1316
#define H4 1393
#define H5 1563
#define H6 1755
#define H7 1971
//列出全部D调的频率
#define WHOLE 1
#define HALF 0.5
#define QUARTER 0.25
#define EIGHTH 0.25
#define SIXTEENTH 0.625
//列出所有节拍
int tune[]=        //根据简谱列出各频率
{
  M3,M3,M4,M5,
  M5,M4,M3,M2,
  M1,M1,M2,M3,
  M3,M2,M2,
  M3,M3,M4,M5,
  M5,M4,M3,M2,
  M1,M1,M2,M3,
  M2,M1,M1,
  M2,M2,M3,M1,
  M2,M3,M4,M3,M1,
  M2,M3,M4,M3,M2,
  M1,M2,D5,D0,
  M3,M3,M4,M5,
  M5,M4,M3,M4,M2,
  M1,M1,M2,M3,
  M2,M1,M1
};
float durt[]=       //根据简谱列出各节拍
{
  1,1,1,1,
  1,1,1,1,
  1,1,1,1,
  1+0.5,0.5,1+1,
  1,1,1,1,
  1,1,1,1,
  1,1,1,1,
  1+0.5,0.5,1+1,
  1,1,1,1,
  1,0.5,0.5,1,1,
  1,0.5,0.5,1,1,
  1,1,1,1,
  1,1,1,1,
  1,1,1,0.5,0.5,
  1,1,1,1,
  1+0.5,0.5,1+1,
};
int length;
int tonepin=3;   //得用3号接口
void setup()
{
  pinMode(tonepin,OUTPUT);
  length=sizeof(tune)/sizeof(tune[0]);   //计算长度
}
void loop()
{
  for(int x=0;x<length;x++)
  {
    tone(tonepin,tune[x]);
    delay(500*durt[x]);   //这里用来根据节拍调节延时,500这个指数可以自己调整,在该音乐中,我发现用500比较合适。
    noTone(tonepin);
  }
  delay(2000);
}

测试结果
实验中我们提供了两个例程,上传例程1代码后,蜂鸣器会发出两种不同的声音,实验中,两种声音循环交替。上传例程2中代码后,蜂鸣器会想响起《欢乐颂》的曲子。

实验十 74HC595实验

实验说明
74HC595 简单说来就是具有8 位移位寄存器和一个存储器,以及三态输出功能。 这里我们用它来控制8 个LED 小灯。我们为什么要用74HC595 来控制小灯呢?一定会有 很多朋友会问这个问题,我想问的是我们要是单纯的用Arduino 控制8 个小灯的话要占用多少个I/O 呢?答案是8 个,但是我们的Arduino 168 有几个I/O 口呢?加上模拟接口也就20 个吧,这8 个小灯占用了太多的资源了,我们用74HC595 的目的就是减少I/O 口的使用数量。用74HC595 以后我们可以用3 个数字I/O 口控制8 个LED 小灯岂不美哉。

实验器材

  • 开发板 *1
  • USB线*1
  • 74HC595 DIP*1
  • 红色LED*8
  • 220Ω 电阻*8
  • 面包板*1
  • 面包板连接线若干

接线图
KE0094-10.png

测试代码

int data = 2;//74HC595的2脚 数据输入引脚SI 
int clock = 5;//74hc595的4脚 时钟线 SCK
int latch = 4;//74hc595的5脚 输出存储器锁存线RCK 
int ledState = 0;
const int ON = HIGH;
const int OFF = LOW;
void setup()
{
pinMode(data, OUTPUT);
pinMode(clock, OUTPUT);
pinMode(latch, OUTPUT);
}
void loop()
{
for(int i = 0; i < 256; i++)
{
updateLEDs(i);
delay(500);
}
}
void updateLEDs(int value)
{
digitalWrite(latch, LOW);//
shiftOut(data, clock, MSBFIRST, ~value);//串行数据输出,高位在先
digitalWrite(latch, HIGH);//锁存
}

测试结果
下载完程序大家就可以看到8 个小灯闪烁的美妙场景了。实验现象是看到八位LED显示八位二进制数,循环自加1。

实验十一 红外遥控器实验

实验说明
红外遥控器发出的信号是一连串的二进制脉冲码。为了使其在无线传输过程中免受其他红外信号的干扰,通常都是先将其调制在特定的载波频率上,然后再经红外发射二极管发射出去,而红外线接收装置则要滤除其他杂波,叧接收该特定频率的信号并将其还原成二进制脉冲码,也就是解调.
实验中我们用一个红外遥控和一个红外接收头控制6个LED灯的亮和灭。实验前,我们要对红外遥控进行解码。
13-1.png

实验器材

  • 开发板*1
  • USB线*1
  • 红外遥控*1
  • 红外接收 VS1838B*1
  • 红色LED*6
  • 220Ω 电阻*6
  • 面包板*1
  • 面包板连接线若干

接线图
红外解码接线
KE0094-11.png

红外控灯实验接线
KE0094-11(2.png

测试代码
红外解码

#include <IRremote.h>
int RECV_PIN = 11; //define input pin on Arduino
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}
}

红外控灯实验

#include <IRremote.h>
int RECV_PIN = 11;
int LED1 = 2;
int LED2 = 3;
int LED3 = 4;
int LED4 = 5;
int LED5 = 6;
int LED6 = 7;
long on1  = 0x00FF6897;
long off1 = 0x00FF9867;
long on2 = 0x00FFB04F;
long off2 = 0x00FF30CF;
long on3 = 0x00FF18E7;
long off3 = 0x00FF7A85;
long on4 = 0x00FF10EF;
long off4 = 0x00FF38C7;
long on5 = 0x00FF5AA5;
long off5 = 0x00FF42BD;
long on6 = 0x00FF4AB5;
long off6 = 0x00FF52AD;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
 {
  pinMode(RECV_PIN, INPUT);   
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(LED5, OUTPUT);
  pinMode(LED6, OUTPUT);  
   irrecv.enableIRIn(); // Start the receiver
 }
int on = 0;
unsigned long last = millis();

void loop() 
{
  if (irrecv.decode(&results)) 
   {
    // If it's been at least 1/4 second since the last
    // IR received, toggle the relay
    if (millis() - last > 250) 
      {
       on = !on;
      }
    if (results.value == on1 )
       digitalWrite(LED1, HIGH);
    if (results.value == off1 )
       digitalWrite(LED1, LOW); 
    if (results.value == on2 )
       digitalWrite(LED2, HIGH);
    if (results.value == off2 )
       digitalWrite(LED2, LOW); 
    if (results.value == on3 )
       digitalWrite(LED3, HIGH);
    if (results.value == off3 )
       digitalWrite(LED3, LOW);
    if (results.value == on4 )
       digitalWrite(LED4, HIGH);
    if (results.value == off4 )
       digitalWrite(LED4, LOW); 
    if (results.value == on5 )
       digitalWrite(LED5, HIGH);
    if (results.value == off5 )
       digitalWrite(LED5, LOW); 
    if (results.value == on6 )
       digitalWrite(LED6, HIGH);
    if (results.value == off6 )
       digitalWrite(LED6, LOW);        
    last = millis();      
   irrecv.resume(); // Receive the next value
  }
}

注意:在上传程序前,要把IRremote 文件夹放到 编译器安装目录下的\Arduino\libraries里。不然编译不过。
例如我的:C:\Program Files\Arduino\libraries

测试结果
按照接线图接好线,上传好代码,上电后,红外解码时,红外遥控对准红外接收头按下按键,即可在Arduino IDE的串口监视器中看到对应的编码,详细编码如下图。 KE0094-11(3.png
红外控灯实验时,我们将遥控器对准红外接收头,按下1 2 3 4 5 6 7 8 9 * 0 #共12个按键就可控制6个LED灯的亮与灭。

相关资料链接

    https://pan.baidu.com/s/1eTrAaT8
  英文资料下载: https://share.weiyun.com/5FU2rMj