shijinxianzhe 发表于 2020-3-13 19:07:04

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

    尽管在手柄等其它创客硬件中接触过滑杆,但在树莓派上却从没有试成功过,主要是因为滑杆移动产生的是一个模拟的值,我不知道应当怎样将其与模数转换器相连。
2020年3月份,在古德微树莓派的钉钉直播课堂上,有老师讲解模数转换器,于是在硬件编程方面我又有了新的收获。
    首先,我们要知道数字信号与模拟信号的区别:

       在没有连接模数转换器时,树莓派扩展板上24号接口为数字接口,连接红外传感器时,可测试有无障碍,所传递是“0”或“1”的信号。但是当扩展板上连接模数转换器后,再将滑杆连接,我们通过系统调试程序可以看到的滑杆变动的数值在0~32767之间,就起到模拟信号传递的作用了。



我们只需要将模数转换器与树莓派扩展板上的端口相对应插入既可。
此后,我利用杜邦线将滑杆连接到24号接口。



(两组接线柱任意一组即可)
GND与GND相线,VCC与VCC相连,OTA与A0相连;
一、滑杆控制下某一盏小灯亮(滑杆位置决定哪一盏灯亮)
编写 程序如下:
定义变量i=0;定义变量滑杆值=0设置GPIO(18号)可控灯带60个灯并设置亮度为60;
重复执行以下指令:
       将滑杆值定义为“映射数字:ADS(0)获取滑杆值”从区间到区间",并且为之取整;
       为查看程序运行情况,增加“调出调试信息”滑杆值“
       将变量i赋值为滑杆值;
      设置灯带第i盏小灯的颜色为:红色:50,绿色:30,蓝色:10
      等待0.1秒
      灯带刷新显示
      ####上面程序让第i盏小灯亮,下面3句为让第i盏小灯灭:
   设置灯带第i盏小灯的颜色为:红色:0,绿色:0,蓝色:0
      等待0.1秒
      灯带刷新显示
重复结束

运行效果如下
https://v.youku.com/v_show/id_XNDU4NTMyNTgwOA==.html
二、滑杆控制下的流水灯程序如下:
重复执行以下指令:
       将滑杆值定义为“映射数字:ADS(0)获取滑杆值”从区间到区间",并且为之取整;
       为查看程序运行情况,增加“调出调试信息”滑杆值“
       将变量i赋值为滑杆值;
       重复执行变量i从0到滑杆值每次增加1##依次执行从0~滑杆位置
            设置灯带第i盏小灯的颜色为:红色:50,绿色:30,蓝色:10
            等待0.1秒
            灯带刷新显示
            ####上面程序让第i盏小灯亮,下面3句为让第i盏小灯灭:
            设置灯带第i盏小灯的颜色为:红色:0,绿色:0,蓝色:0
            等待0.1秒
            灯带刷新显示
       重复结束
重复结束

运行效果如下:
https://v.youku.com/v_show/id_XNDU4NTI1ODEwOA==.html?spm=a2hbt.13141534.app.5~5!2~5!2~5~5~5!2~5~5!2~5!2~5!2~5~5!3~A
注意:两段程序执行效果的相同是在程序执行的某一时刻有一盏小灯亮灭,前一段是滑杆位置对应数值就是相应灯带上的小灯亮,而后一程序            是从0开始,到滑杆值,依次亮灭第i盏灯,向流水一样递推前行;
三、滑杆控制下的跑马灯
程序如下:
重复执行以下指令:
       将滑杆值定义为“映射数字:ADS(0)获取滑杆值”从区间到区间",并且为之取整;
       为查看程序运行情况,增加“调出调试信息”滑杆值“
       将变量i赋值为滑杆值;
       重复执行变量i从0到滑杆值每次增加1##依次执行从0~滑杆位置
            设置灯带第i盏小灯的颜色为:红色:50,绿色:30,蓝色:10
            等待0.1秒
            灯带刷新显示
       重复结束
       重复执行变量i从0到滑杆值每次增加1##依次执行从0~滑杆位置            ####上面程序让前i盏小灯亮,下面为让前i盏小灯灭:
            设置灯带第i盏小灯的颜色为:红色:0,绿色:0,蓝色:0
            等待0.1秒
            灯带刷新显示
       重复结束
重复结束


运行效果如下:
https://v.youku.com/v_show/id_XNDU4NTI0Nzg2OA==.html?spm=a2hbt.13141534.app.5~5!2~5!2~5~5~5!2~5~5!2~5!2~5!2~5~5!4~A
四、滑杆控制灯带前N盏灯亮灭闪烁
程序如下:
重复执行以下指令:
       将滑杆值定义为“映射数字:ADS(0)获取滑杆值”从区间到区间",并且为之取整;
       为查看程序运行情况,增加“调出调试信息”滑杆值“
       将变量i赋值为滑杆值;
       重复执行变量i从0到滑杆值每次增加1##依次执行从0~滑杆位置
            设置灯带第i盏小灯的颜色为:红色:50,绿色:30,蓝色:10
       重复结束
            等待0.1秒
            灯带刷新显示       重复执行变量i从0到滑杆值每次增加1##依次执行从0~滑杆位置            ####上面程序让前i盏小灯亮,下面为让前i盏小灯灭:
            设置灯带第i盏小灯的颜色为:红色:0,绿色:0,蓝色:0
       重复结束
            等待0.1秒
            灯带刷新显示重复结束

程序运行效果如下:
https://v.youku.com/v_show/id_XNDU4NTI1OTUwNA==.html?spm=a2hbt.13141534.app.5~5!2~5!2~5~5~5!2~5~5!2~5!2~5!2~5~5!2~A
      在这一实验中,硬件上我第一次运用了滑杆和模数转换器,在软件上,我深刻理解了同样几句指令,在循环语中“重复执行变量i从0到滑杆值每次增加1”语句的相对位置不同,程序的意义不同所产生的效果也有所不同。

DFrJ5KYVQaH 发表于 2020-3-14 10:54:45

滑杆控制灯带,真不错

shijinxianzhe 发表于 2020-3-14 15:34:46

谢谢鼓励!
页: [1]
查看完整版本: 滑杆控制下灯带的不同效果(庆祝树莓派日)1