最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

Arduino中级教程 项目六 灯光调节器

Arduino 少儿编程 1841浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

本教程由DFRobot提供。

该教程为中级套件教程。购买地址:

https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-12108364412.9.uh4s3j&id=44531434864

 

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

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

 

所需元件

  • 1× 数字食人鱼红色LED 发光模块

Arduino中级教程 项目六 灯光调节器

  • 1× 模拟角度传感器

Arduino中级教程 项目六 灯光调节器

 

硬件连接

模拟角度传感器 -> 模拟0

数字食人鱼红色 LED发光模块 -> 数字 10

Arduino中级教程 项目六 灯光调节器

输入代码

样例代码 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, 0, 1023, 0, 255);

analogWrite(ledPin, outputValue); //给 LED 写入对应值

delay(2);

}

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

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

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

Arduino中级教程 项目六 灯光调节器

代码回顾

这里主要讲下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。

本期教程就到此结束了

您必须 登录 才能发表评论!