EVE 发表于 2019-6-4 15:25:36

【Mind+】Arduino Uno入门 项目五 可调灯

【Mind+】Arduino Uno入门 项目五 可调灯
-DFRobot官方出品

上一篇:【Mind+】Arduino Uno入门教程04简易入侵检测仪
下一篇:【Mind+】Arduino Uno入门教程06智能灯
      灯光在微电脑控制之下完成由暗到亮再由亮到暗的逐渐变化,感觉像是在呼吸,所以称为呼吸灯。呼吸灯广泛应用于手机、无线路由器之上,如你的手机里面有未处理的通知,比如说未接来电,未查收的短信等等,呼吸灯就会由暗到亮的变化,像呼吸一样那么有节奏,起到一个通知提醒的作用。
*项目示例
      可以通过以下三个小任务进行实践:
   ■ 任务一:简易呼吸灯
   ■ 任务二:制作 5 档可调灯
   ■ 任务三:制作旋钮可调灯
任务一:简易呼吸灯 1.实现功能灯的亮度逐渐变化。
2. 硬件连接LED—10。注意插线时的颜色对应。3. 程序编写      这段程序中我们接触到了两个新的模块——函数以及模拟输出。
      函数:我们最初见到函数是在数学当中。y=f(x)是函数的一种一般形式,它接受变量 x 的值,经过对应法则 f 的处理,向人返回结果值 y。Mind+ 程序中的函数,可以类比理解。      函数的内部,也可以定义变量(如图中的 value),这个变量只在函数执行的时候起作用,一旦函数执行结束,value 也就不存在了。函数的一次执行叫做函数的调用,在一个函数中,可以调用其他函数,甚至可以调用自己。

模拟输出:脉宽调制(PWM:Pulse Width Modulation)
      输出:它是一种对模拟信号电平进行数字编码的方法,简单来说就是通过一个时钟周期内高低电平的不同占空比来表征模拟信号,如右图就是一个具体的编码样例。Arduino 使用 analogWrite(int value)输出 PWM 信号,其中的 value 取值范围是 0-255,效果如下图所示。

      Arduino 主控板只有有限个 GPIO 管脚支持 PWM。       观察一下 Arduino 板,查看数字引脚,你会发现其中 6 个引脚(3、5、6、9、10、11)旁标有“~”,这些引脚不同于其他引脚,因为它们可以输出 PWM 信号。       不难看出,上面这个函数的功能是让 LED 灯逐渐变亮。要实现任务要求,还需要一个让 LED 逐渐变暗的函数。

完整的程序如下图:      上图左侧为定义两个函数。程序的主体是右侧主程序,它们是对左侧的函数的调用。
任务二:制作 5 档可调灯
1. 实现功能通过按钮,让灯的亮度发生变化。
2.硬件连接按钮—2;LED—10。注意插线时的颜色对应。
3.程序编写
任务三:制作旋钮可调灯
      这里,我们用到了一个新的元件——模拟角度电位器,也叫“滑动变阻器”或”电位器”。通过调节旋钮,可以改变它接入电路的阻值大小。将其连到主控板支持模拟输入的接口上,就可以把阻值作为模拟信号输入到主控板上。主控板根据输入值的大小,确定输出的值(在这里,输入值大,输出值也大;也可能另外一些程序希望输出值随着输入值变大而减小。)
1.硬件连接      模拟角度电位器—A0;LE—10。注意插线时的颜色对应。    需要注意的是,主控板支持的模拟输入信号的大小范围是 0~1023。然而,模拟输出大小是 0~255。      因此,模拟输入的数值,不能直接进行模拟输出,我们需要一种办法,能够把0~1023 内的数,按比例缩小,转化成 0~255 之间的数,再模拟输出。方法如下:
2. 程序编写知识点小结元件
[*]模拟角度电位器
Mind+ 程序模块
[*]模拟输入
[*] 函数
[*]映射


Rae 发表于 2019-7-17 09:21:20

太好了

dfl 发表于 2020-10-31 15:18:55

本帖最后由 dfl 于 2020-10-31 15:22 编辑

老师,你好!为什么我在任务2中显示烧录失败?

EVE 发表于 2020-11-3 09:39:21

dfl 发表于 2020-10-31 15:18
老师,你好!为什么我在任务2中显示烧录失败?

小黑窗看不清不确定失败原因下次截图截一张能看清小黑窗的

DFB1tXFFiKD 发表于 2020-11-13 12:20:45

本帖最后由 DFB1tXFFiKD 于 2020-11-13 13:10 编辑

请问老师,这个是两个变量嘛?后面的没有看的很明白为什么51×变量/6的余数啊?

EVE 发表于 2020-11-13 14:01:51

DFB1tXFFiKD 发表于 2020-11-13 12:20
请问老师,这个是两个变量嘛?后面的没有看的很明白为什么51×变量/6的余数啊? ...

变量state是按钮按下的次数,因为是5挡可调灯,所以把按下次数除以6,得到余数为0-5,再乘以51,就会让灯按照5档变化亮度了,(建议按完加个延时0.5秒,按钮消抖)

初心1 发表于 2020-12-29 13:12:02

实现5档调节灯

小可爱变大可爱 发表于 2022-11-26 19:31:23

EVE 发表于 2020-11-13 14:01
变量state是按钮按下的次数,因为是5挡可调灯,所以把按下次数除以6,得到余数为0-5,再乘以51,就会让灯 ...

老师,请问您,电脑怎么知道我设置的变量state是“按钮按下的次数呢?”
还有,积木脚本里面brigtness是不是指的灯的亮度。
还望你给我解答,谢谢了。

小可爱变大可爱 发表于 2022-11-26 19:34:07

EVE 发表于 2020-11-13 14:01
变量state是按钮按下的次数,因为是5挡可调灯,所以把按下次数除以6,得到余数为0-5,再乘以51,就会让灯 ...

老师,电脑怎么知道我的变量state指的是按钮按下的次数呢?

EVE 发表于 2022-11-28 10:40:27

小可爱变大可爱 发表于 2022-11-26 19:31
老师,请问您,电脑怎么知道我设置的变量state是“按钮按下的次数呢?”
还有,积木脚本里面brigtness ...

在程序里面,判断了按钮是否按下,每按下一次,变量“state”就加一了

EVE 发表于 2022-11-28 10:52:25

小可爱变大可爱 发表于 2022-11-26 19:31
老师,请问您,电脑怎么知道我设置的变量state是“按钮按下的次数呢?”
还有,积木脚本里面brigtness ...

积木脚本里面brigtness是指什么?没明白

501769527 发表于 2023-2-6 11:17:43

EVE 发表于 2022-11-28 10:52
积木脚本里面brigtness是指什么?没明白

感觉brightness改成state是不是也可以,state没有初始值

guiyuan 发表于 2023-4-2 14:44:59

本帖最后由 guiyuan 于 2023-4-2 15:15 编辑


第二个实验的brightness在这里似乎没什么用呀,设置了初始值,但是在后面根本就没有用呀。这个我修改后的,考虑了按钮的抖动,我的按钮按下为“0”,各位小伙伴可以自己适当修改根据自己的按钮情况。

没东追逐理想 发表于 2024-3-15 21:46:48

试着做了一下改进,用三个电位器控制一个三色led模块,做成了一个可调色的变色灯
页: [1]
查看完整版本: 【Mind+】Arduino Uno入门 项目五 可调灯