大数跨境
0
0

【Arduino中级系列教程】项目五 灯光调节器

【Arduino中级系列教程】项目五 灯光调节器 DF创客社区
2020-12-22
2
导读:先做个小型的灯光调节器吧!


【点击上方「蓝字」关注DF,一起成为技术颜控!】


上一课:【Arduino中级系列教程】项目四 呼吸灯

友情提示:搭配Gravity:新版Arduino中级套件食用更佳!

在前面几章中,我们知道了如何控制LED亮灭。

所谓灯光调节器,就是可以自由控制灯的亮度,我们这里通过一个模拟角度传感器来 LED灯的亮度。随着旋转角度的变化, LED亮度也发生相应改变。角度越大,LED灯也就越亮,相反,角度越小,LED灯也就越暗。这里只是用了小小的 LED来做演示效果,如果想运用到我们的生活之中的话,也是同样的原理。那就先做个小型的灯光调节器吧!

模拟角度传感器还能用到很多地方,比如我们后面会接触的舵机,可以通过这个传感器来控制转动角度,又或者以后有机会接触直流电机的小伙伴,可以尝试下用角度传感器来控制转速等等,用处很多!

所需元件

  • 1×  数字食人鱼红色LED发光模块
  • 1×  模拟角度传感器

硬件连接

  • 硬件连接
  • 模拟角度传感器
  • 连接模拟引脚0
  • 数字食人鱼红色LED发光模块
  • 连接数字引脚10

硬件分析(模拟输入—模拟输出)

在呼吸灯一节,我们已经学会了如何用数字引脚的PWM口来做模拟输出。这一节将加入互动元素,通过模拟输入来控制模拟输出。

输入代码

样例代码6-1:

//项目六 —— 灯光调节器
int potPin = 0;                   //电位器连接到模拟0
int ledPin = 10;                  //LED连接到数字10
void setup() {
       pinMode(ledPin, OUTPUT);
}
void loop() {
  int sensorValue = analogRead(potPin);    //读取模拟口0的值      
  //通过map()把0~1023的值转换为0~255
int outputValue = map(sensorValue,010230255);   
analogWrite(ledPin,outputValue);   //给LED写入对应值        
  delay(2);                     
}  

缓慢旋转电位器,仔细观察LED的亮度是否发生变化。

代码回顾

这里主要讲下map函数。函数格式如下:

map(value, fromLow, fromHigh, toLow, toHigh)

map函数的作用是将一个数从一个范围映射到另外一个范围。也就是说,会将 fromLow 到 fromHigh 之间的值映射到 toLow 在 toHigh 之间的值。

map函数参数含义:

  • value:需要映射的值
  • fromLow:当前范围值的下限
  • fromHigh:当前范围值的上限
  • toLow:目标范围值的下限
  • toHigh:目标范围值的上限

map的神奇之处还在于,两个范围中的“下限”可以比“上限”更大或者更小,因此map()函数可以用来翻转数值的范围,可以这么写:

y = map(x, 1,50, 50, 1);

这个函数同样可以处理负数,请看下面这个例子:

y = map(x, 1,50, 50, -100);

回到代码中,

int outputValue = map(sensorValue, 0, 1023, 0, 255);

我们是想将模拟口读到的 0~1023的值,转换为PWM口的0~255。

- END -

小伙伴们在之后的Arduino学习之旅中,不管你遇到奇奇怪怪的问题,都希望你与我们交流,你可以选择登陆我们的DFRobot创客社区!mc.dfrobot.com.cn 发帖提问!

也可以加我们的Arduino官方群:369301430,大家一起交流学习。

硬件军火库


新版Arduino中级套件


点击了解详情👆


大家有什么想法,或是对文章的指正,都欢迎在下方留言

学有余力的小伙伴,可以点击阅读原文,到社区继续学习!




 往期回顾 



▼ Arduino基础系列教程


点击阅读👆

【声明】内容源于网络
0
0
DF创客社区
我们是专注于创新和开源硬件开发的公司——DFRobot成立的创客社区,无论你是资深创客还是小白,这里都有你的一席之地。一个人玩自己的项目,你只是寂寞宅;一群人看你玩项目,你就是技术牛!快来分享你的项目吧!
内容 1282
粉丝 0
DF创客社区 我们是专注于创新和开源硬件开发的公司——DFRobot成立的创客社区,无论你是资深创客还是小白,这里都有你的一席之地。一个人玩自己的项目,你只是寂寞宅;一群人看你玩项目,你就是技术牛!快来分享你的项目吧!
总阅读2.4k
粉丝0
内容1.3k