今天主要是学习电容式感应组件,通过滑动板子上的触摸滑条来改变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. |
【PSOC4】入门学习笔记6——电容触摸滑条控制LED灯
最新推荐文章于 2024-06-28 10:18:23 发布