2031| 2
|
滑杆控制下灯带的不同效果(庆祝树莓派日)1 |
尽管在手柄等其它创客硬件中接触过滑杆,但在树莓派上却从没有试成功过,主要是因为滑杆移动产生的是一个模拟的值,我不知道应当怎样将其与模数转换器相连。 2020年3月份,在古德微树莓派的钉钉直播课堂上,有老师讲解模数转换器,于是在硬件编程方面我又有了新的收获。 首先,我们要知道数字信号与模拟信号的区别: ![]() 在没有连接模数转换器时,树莓派扩展板上24号接口为数字接口,连接红外传感器时,可测试有无障碍,所传递是“0”或“1”的信号。但是当扩展板上连接模数转换器后,再将滑杆连接,我们通过系统调试程序可以看到的滑杆变动的数值在0~32767之间,就起到模拟信号传递的作用了。 ![]() ![]() 我们只需要将模数转换器与树莓派扩展板上的端口相对应插入既可。 此后,我利用杜邦线将滑杆连接到24号接口。 ![]() ![]() (两组接线柱任意一组即可) 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秒 灯带刷新显示 重复结束 ![]() 运行效果如下 二、滑杆控制下的流水灯程序如下: 重复执行以下指令: 将滑杆值定义为“映射数字: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秒 灯带刷新显示 重复结束 重复结束 ![]() 运行效果如下: 注意:两段程序执行效果的相同是在程序执行的某一时刻有一盏小灯亮灭,前一段是滑杆位置对应数值就是相应灯带上的小灯亮,而后一程序 是从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秒 灯带刷新显示 重复结束 重复结束 ![]() 运行效果如下: 四、滑杆控制灯带前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秒 灯带刷新显示重复结束 ![]() 程序运行效果如下: 在这一实验中,硬件上我第一次运用了滑杆和模数转换器,在软件上,我深刻理解了同样几句指令,在循环语中“重复执行变量i从0到滑杆值每次增加1”语句的相对位置不同,程序的意义不同所产生的效果也有所不同。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed