今天主要是学习电容式感应组件,通过滑动板子上的触摸滑条来改变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)

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

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

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

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

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

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

  1. STM32上手-STWingSKIT_BC28学习笔记(一)环境搭建和LED灯点亮

    嵌入式STM32上手学习笔记(一)LED灯点亮 STM32开发环境的搭建 1. 安装keil5 IDE 2. 下载STM32F1的支持包 3. 在Pack installer中找到F1支持包下载 4. ...

  2. 【树莓派学习笔记】三、点亮一个LED灯(C语言 - WiringPi、Python - RPi.GPIO/GPIO Zero、bash脚本)

    目录 C语言 WiringPi Python RPi.GPIO GPIO Zero bash脚本 平台:树莓派3B 版本: 2021-05-07-raspios-buster-armhf 若GPIO输 ...

  3. 【RK3399Pro学习笔记】十八、点亮LED灯(python、C语言、bash)

    目录 GPIO python3 python-periphery python2 RPi C语言 SysFs方式 编写 gpiolib.c gpiolib.h main.c 编译 测试 wiringP ...

  4. Qt 快速入门学习笔记

    Qt 快速入门学习笔记 环境安装 环境配置以及安装 安装包下载地址 1.windows安装 msvc编译器模块需要安装Windows软件开发工具包. MinGW是Windows平台使用GNU工具导入库 ...

  5. dubbo入门学习笔记之入门demo(基于普通maven项目)

    注:本笔记接dubbo入门学习笔记之环境准备继续记录; (四)开发服务提供者和消费者并让他们在启动时分别向注册中心注册和订阅服务 需求:订单服务中初始化订单功能需要调用用户服务的获取用户信息的接口(订 ...

  6. Crypto++入门学习笔记(DES、AES、RSA、SHA-256)

    Crypto++入门学习笔记(DES.AES.RSA.SHA-256) 背景(只是个人感想,技术上不对后面的内容构成知识性障碍,可以skip): 最近,基于某些原因和需要,笔者需要去了解一下Crypt ...

  7. 机器学习入门学习笔记:(4.2)SVM的核函数和软间隔

    前言 之前讲了有关基本的SVM的数学模型(机器学习入门学习笔记:(4.1)SVM算法).这次主要介绍介绍svm的核函数.软间隔等概念,并进行详细的数学推导.这里仅将自己的笔记记录下来,以便以后复习查看 ...

  8. 机器学习入门学习笔记:(3.2)ID3决策树程序实现

    前言 之前的博客中介绍了决策树算法的原理并进行了数学推导(机器学习入门学习笔记:(3.1)决策树算法).决策树的原理相对简单,决策树算法有:ID3,C4.5,CART等算法.接下来将对ID3决策树算法 ...

  9. 机器学习入门学习笔记:(2.3)对数几率回归推导

    理论推导   在以前的博客(机器学习入门学习笔记:(2.1)线性回归理论推导 )中推导了单元线性回归和多元线性回归的模型.   将线性回归模型简写为:y=ωTx+by = \omega^Tx+b:   ...

最新文章

  1. 网络流—Edmonds-Karp 最短增广路算法(最大流)
  2. 如何创建计算机视觉场景训练数据
  3. Redis 有序集合(zset)取交集(zinterstore)操作耗时测试
  4. java 装饰器模式
  5. [vue] vue边界情况有哪些?
  6. Java开发人员需要掌握数据库的知识点有哪些?
  7. 2020年生活服务业新业态和新职业从业报告
  8. mysql was1067_MySQL启动提示1067错误的解决
  9. JavaScript-No.01 JavaScript实现封装、继承、多态
  10. 【迅速上手】Python 画图 —— 箱图与密度图
  11. 信息发布系统 Jquery+MVC架构开发(3) 解决方案创建
  12. Google发布了Google Sketchup,完全免费
  13. echarts 生成 迁徙图_Echarts4+EchartsGL 3D迁徙图(附源码)
  14. 桌面出现2个计算机,在一个电脑屏幕上如何同时显示两个word
  15. ubuntu 网易云音乐安装
  16. 基于pygame的小游戏开发
  17. 研究:多因素影响粮食安全 应早做规划避免粮食短缺
  18. Crazy Mother
  19. LM75AD温度传感器的应用(2)
  20. Xmind基础教程-保存到印象笔记

热门文章

  1. kafka之消息格式
  2. 27款开源图片相册管理系统
  3. ROS: Publisher and Subscriber
  4. 32位mips指令说明
  5. 好玩的linux命令
  6. php json方法,PHP操作JSON方法大全
  7. 【问题】google浏览器导出不了书签夹,崩溃
  8. 【图像处理】深入解析LBP算法
  9. 小猪的C语言快速入门系列(五)
  10. Golang 安装 Golang