滑杆控制下灯带的不同效果(庆祝树莓派日)1

2020-03-132983
AI 快速预览详细 收起
本文介绍了如何通过滑杆和模数转换器在树莓派上实现灯带的多种动态效果。首先解释了数字信号与模拟信号的区别,然后详细说明了硬件连接方法和具体的编程步骤。通过映射数字:ADS(0)获取滑杆值从区间[0,32767]到区间[0,59],实现了滑杆值对灯带颜色的精确控制。适合初学者和STEM教育场景,能够帮助孩子理解基本的电子原理并动手实践。
    尽管在手柄等其它创客硬件中接触过滑杆,但在树莓派上却从没有试成功过,主要是因为滑杆移动产生的是一个模拟的值,我不知道应当怎样将其与模数转换器相连。
2020年3月份,在古德微树莓派的钉钉直播课堂上,有老师讲解模数转换器,于是在硬件编程方面我又有了新的收获。
    首先,我们要知道数字信号与模拟信号的区别:
滑杆控制下灯带的不同效果(庆祝树莓派日)1图1
       在没有连接模数转换器时,树莓派扩展板上24号接口为数字接口,连接红外传感器时,可测试有无障碍,所传递是“0”或“1”的信号。但是当扩展板上连接模数转换器后,再将滑杆连接,我们通过系统调试程序可以看到的滑杆变动的数值在0~32767之间,就起到模拟信号传递的作用了。

滑杆控制下灯带的不同效果(庆祝树莓派日)1图3
滑杆控制下灯带的不同效果(庆祝树莓派日)1图4
我们只需要将模数转换器与树莓派扩展板上的端口相对应插入既可。
此后,我利用杜邦线将滑杆连接到24号接口。

滑杆控制下灯带的不同效果(庆祝树莓派日)1图2
滑杆控制下灯带的不同效果(庆祝树莓派日)1图5
(两组接线柱任意一组即可)
GND与GND相线,VCC与VCC相连,OTA与A0相连;

一、滑杆控制下某一盏小灯亮(滑杆位置决定哪一盏灯亮)
编写 程序如下:
定义变量i=0;定义变量滑杆值=0设置GPIO(18号)可控灯带60个灯并设置亮度为60;
重复执行以下指令
       将滑杆值定义为“映射数字:ADS(0)获取滑杆值”从区间[0,32767]到区间[0,59]",并且为之取整;
       为查看程序运行情况,增加“调出调试信息”滑杆值“
       将变量i赋值为滑杆值;
      设置灯带第i盏小灯的颜色为:红色:50,绿色:30,蓝色:10
      等待0.1秒
      灯带刷新显示
      ####上面程序让第i盏小灯亮,下面3句为让第i盏小灯灭:
     设置灯带第i盏小灯的颜色为:红色:0,绿色:0,蓝色:0
      等待0.1秒
      灯带刷新显示
重复结束
滑杆控制下灯带的不同效果(庆祝树莓派日)1图6
运行效果如下

二、滑杆控制下的流水灯程序如下:
重复执行以下指令:
       将滑杆值定义为“映射数字:ADS(0)获取滑杆值”从区间[0,32767]到区间[0,59]",并且为之取整;
       为查看程序运行情况,增加“调出调试信息”滑杆值“
       将变量i赋值为滑杆值;

       重复执行变量i从0到滑杆值每次增加1##依次执行从0~滑杆位置
              设置灯带第i盏小灯的颜色为:红色:50,绿色:30,蓝色:10
              等待0.1秒
              灯带刷新显示
              ####上面程序让第i盏小灯亮,下面3句为让第i盏小灯灭:
              设置灯带第i盏小灯的颜色为:红色:0,绿色:0,蓝色:0
              等待0.1秒
              灯带刷新显示

       重复结束
重复结束

滑杆控制下灯带的不同效果(庆祝树莓派日)1图7
运行效果如下:

注意:两段程序执行效果的相同是在程序执行的某一时刻有一盏小灯亮灭,前一段是滑杆位置对应数值就是相应灯带上的小灯亮,而后一程序              是从0开始,到滑杆值,依次亮灭第i盏灯,向流水一样递推前行;
三、滑杆控制下的跑马灯
程序如下:
重复执行以下指令:
       将滑杆值定义为“映射数字:ADS(0)获取滑杆值”从区间[0,32767]到区间[0,59]",并且为之取整;
       为查看程序运行情况,增加“调出调试信息”滑杆值“
       将变量i赋值为滑杆值;

       重复执行变量i从0到滑杆值每次增加1##依次执行从0~滑杆位置
              设置灯带第i盏小灯的颜色为:红色:50,绿色:30,蓝色:10
              等待0.1秒
              灯带刷新显示

       重复结束
       重复执行变量i从0到滑杆值每次增加1##依次执行从0~滑杆位置              
####上面程序让前i盏小灯亮,下面为让前i盏小灯灭:
              设置灯带第i盏小灯的颜色为:红色:0,绿色:0,蓝色:0
              等待0.1秒
              灯带刷新显示

       重复结束
重复结束


滑杆控制下灯带的不同效果(庆祝树莓派日)1图8
运行效果如下:

四、滑杆控制灯带前N盏灯亮灭闪烁

程序如下:
重复执行以下指令:
       将滑杆值定义为“映射数字:ADS(0)获取滑杆值”从区间[0,32767]到区间[0,59]",并且为之取整;
       为查看程序运行情况,增加“调出调试信息”滑杆值“
       将变量i赋值为滑杆值;

       重复执行变量i从0到滑杆值每次增加1##依次执行从0~滑杆位置
              设置灯带第i盏小灯的颜色为:红色:50,绿色:30,蓝色:10

       重复结束
              等待0.1秒
              灯带刷新显示       重复执行变量i从0到滑杆值每次增加1##依次执行从0~滑杆位置              ####上面程序让前i盏小灯亮,下面为让前i盏小灯灭:
              设置灯带第i盏小灯的颜色为:红色:0,绿色:0,蓝色:0

       重复结束
              等待0.1秒
              灯带刷新显示重复结束
滑杆控制下灯带的不同效果(庆祝树莓派日)1图9
程序运行效果如下:

      在这一实验中,硬件上我第一次运用了滑杆和模数转换器,在软件上,我深刻理解了同样几句指令,在循环语中“重复执行变量i从0到滑杆值每次增加1”语句的相对位置不同,程序的意义不同所产生的效果也有所不同。

IMG_20200312_171911.jpg (60.03 KB, 下载次数: 2926)

STEM教育 · 滑杆控制下灯带的不同效果(庆祝树莓派日)_image_3.webp

1584005056908.jpg (90.73 KB, 下载次数: 2863)

STEM教育 · 滑杆控制下灯带的不同效果(庆祝树莓派日)_image_6.webp

滑杆控制灯带呈流水灯效果.png (171.41 KB, 下载次数: 2971)

STEM教育 · 滑杆控制下灯带的不同效果(庆祝树莓派日)_image_9.webp

滑杆控制灯带呈跑马灯效果.png (178.36 KB, 下载次数: 2787)

STEM教育 · 滑杆控制下灯带的不同效果(庆祝树莓派日)_image_12.webp

滑杆控制灯带灯珠亮的数量.png (189.87 KB, 下载次数: 2953)

STEM教育 · 滑杆控制下灯带的不同效果(庆祝树莓派日)_image_15.webp

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(2)
shijinxianzhe
shijinxianzhe
作者
谢谢鼓励!
DFrJ5KYVQaH
DFrJ5KYVQaH
滑杆控制灯带,真不错
- 没有更多了 -