583浏览
查看: 583|回复: 2

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

[复制链接]
    尽管在手柄等其它创客硬件中接触过滑杆,但在树莓派上却从没有试成功过,主要是因为滑杆移动产生的是一个模拟的值,我不知道应当怎样将其与模数转换器相连。
2020年3月份,在古德微树莓派的钉钉直播课堂上,有老师讲解模数转换器,于是在硬件编程方面我又有了新的收获。
    首先,我们要知道数字信号与模拟信号的区别:
202003126749..png
       在没有连接模数转换器时,树莓派扩展板上24号接口为数字接口,连接红外传感器时,可测试有无障碍,所传递是“0”或“1”的信号。但是当扩展板上连接模数转换器后,再将滑杆连接,我们通过系统调试程序可以看到的滑杆变动的数值在0~32767之间,就起到模拟信号传递的作用了。

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

1584005119600.jpg
IMG_20200312_171911.jpg
(两组接线柱任意一组即可)
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秒
      灯带刷新显示
重复结束
滑杆控制灯带某一盏灯闪烁效果.png
运行效果如下

二、滑杆控制下的流水灯程序如下:
重复执行以下指令:
       将滑杆值定义为“映射数字: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秒
              灯带刷新显示

       重复结束
重复结束

滑杆控制灯带呈流水灯效果.png
运行效果如下:

注意:两段程序执行效果的相同是在程序执行的某一时刻有一盏小灯亮灭,前一段是滑杆位置对应数值就是相应灯带上的小灯亮,而后一程序              是从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秒
              灯带刷新显示

       重复结束
重复结束


滑杆控制灯带呈跑马灯效果.png
运行效果如下:

四、滑杆控制灯带前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秒
              灯带刷新显示重复结束
滑杆控制灯带灯珠亮的数量.png
程序运行效果如下:

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

IMG_20200312_171911.jpg
1584005056908.jpg
滑杆控制灯带呈流水灯效果.png
滑杆控制灯带呈跑马灯效果.png
滑杆控制灯带灯珠亮的数量.png

DFrJ5KYVQaH  中级技匠

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

滑杆控制灯带,真不错
回复

使用道具 举报

shijinxianzhe  高级技匠
 楼主|

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

谢谢鼓励!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail