【PSOC4】入门学习笔记6——电容触摸滑条控制LED灯

今天主要是学习电容式感应组件,通过滑动板子上的触摸滑条来改变LED灯的亮度。
试验步骤:
1、在原理图界面中放置一个CapSense CSD组件,一个时钟组件,一个PWM组件以及一个数字量输出引脚组件。如图1.JPG所示。
2、配置CapSense CSD组件:双击CapSense CSD组件,General选项按照默认,不用改动。Widgets Config选项中,由于我们的电路板使用的是滑条触摸方式,所以选择Linear sliders,点击Add linear slider加入一条触摸滑条。在右边Number of Sensor Elements处写入5,因为我们的滑条有5个传感器。API Resoution处写入255,此处后面会继续解释。剩下的选项都是按照默认的,点击OK配置好CapSense CSD组件。
3、配置PWM组件:如图2.jpg所示,设置Compare为32767,这样在PWM初始化时,输出的占空比为50%,LED灯的亮度为中等亮度,当然如果设置为65533或1时,初始化后LED灯分别为最暗(基本上看不到亮度)或最亮状态。
4、配置数字引脚为输出状态。
5、编写程序:按照图3.JPG和4.JPG编写程序。
6、打开CapSense_LED.cydwr,按照原理图分配芯片管脚。
7、编译并下载程序。

程序分析:
1、首先是初始化PWM和CapSense CSD组件:PWM_1_Start(); CapSense_1_Start();        
2、扫描所选的传感器:CapSense_1_InitializeAllBaselines();这个函数就是对每个传感器执行CapSense_1_InitializeSensorBaseline()函数。
CapSense_1_InitializeSensorBaseline()函数包括以下几个功能:扫描每个或一组传感器;初始化每个传感器的基准线的数据。
3、更新基准线:CapSense_1_UpdateEnabledBaselines();
4、扫描所有的传感器,如果扫描结束,就执行相应的操作。(此处是获得手指触摸的位置并根据位置改变PWM的比较值,从而改变LED灯的亮度。)

需要说明的:
1、if (curPos == 0xFFFF),为什么是FFFF呢?组件手册上写到如果没有任何传感器处于活动状态,则返回值是0xFFFF。
2、PWM_1_WriteCompare((uint32)curPos *255); 255是什么意思?在配置CapSense CSD组件时,API Resoution处写入255表示把整个滑条分为255等分,假设滑条最左边为0,那么手指滑到最右边时,CapSense_1_GetCentroidPos(CapSense_1_LINEARSLIDER0__LS);函数返回值就是255。(如图5.JPG和6.JPG所示,分别为点击滑条最左边和最右边时候的状态)
由于PWM的周期为65535,所以65535除以255等于257。所以PWM的比较值设置为255.





1.JPG (58.71 KB, 下载次数: 0)

1.JPG

2.JPG (72.21 KB, 下载次数: 0)

2.JPG

3.JPG (86.05 KB, 下载次数: 0)

3.JPG

4.JPG (44.08 KB, 下载次数: 0)

4.JPG

5.JPG (57.07 KB, 下载次数: 0)

5.JPG

6.JPG (57.21 KB, 下载次数: 0)

6.JPG

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值