sky-Hawk where 发表于 2012-9-24 19:59:08

PSoC3 FirstTouc Starter Kit 例子源代码之Proximity Sensor简单分析

本帖最后由 wangku001wei 于 2012-9-24 20:05 编辑

注意 仅仅是简单分析哦
组件的原理及使用还在研究中

首先看原理图可见接近传感器也是使用了CapSense组件



注意 由于我们在配置对话框的General选项卡中选择了 IDAC disable,use external Rb


在具体引脚配置中 出现了sCmod 和 sRb0


在Proximity Sensors 中添加了Sensor Name (Proximity)

在具体引脚配置中 出现了PROX_Promimity_0

LED灯的配置和之前的Proximity Sensor基本相同只是这次是用8个寄存器各自独立的控制一个LED灯PdPort_LSB 对应P2口的P2控制dPort_MSB 对应P4口的P4控制同样的,反向是因为电路设计为低电平点亮LED,高电平熄灭LED
代码分析/******************************************************************************************** 主函数的功能:* 1: 关闭所有的LED* 2: 启动电容感应组件* 3: 查看接近传感器并报告信号强度* 4: 根据手指接近传感器的程度点亮对应数量的LED灯 /******************************************************************************************//* 存储位置信号值的数组*/extern uint8 CapSenseProximity_CSHL_SlotSignal[(CapSenseProximity_TOTAL_SCANSLOT_COUNT - CapSenseProximity_TOTAL_GENERIC_SCANSLOT_COUNT)];
void main(){    uint8 Sensitivity = 15;    uint8 tempVar = 0;    uint8 LedData = 0;    uint8 ProximitySignal = 0;    uint16 i = 0;
    /* 使能全局中断 */    CYGlobalIntEnable;    /* 关闭LED灯 */    LED_Control_Reg_Write(LedData);    /* 启动并且初始化电容接近感应传感器 */    CapSenseProximity_Start();    /* 初始化基线 */    CapSenseProximity_CSHL_InitializeSlotBaseline(CapSenseProximity_CSHL_PROX_PROXIMITY);
    while(1)    {      /* 在读取信号之前进行短暂的延时 以便降低LED的更新速度 */      for(i = 0; i <= 10000; i++);       /* 扫描并更新基线 */      CapSenseProximity_CSD_ScanSlot(CapSenseProximity_CSHL_PROX_PROXIMITY);      CapSenseProximity_CSHL_UpdateSlotBaseline(CapSenseProximity_CSHL_PROX_PROXIMITY);
      /* 判断传感器是否激活 */      LedData=0;      if(CapSenseProximity_CSHL_CheckIsSlotActive(CapSenseProximity_CSHL_PROX_PROXIMITY))      {          /* 读取当前传感器值 */            ProximitySignal = (uint8)CapSenseProximity_CSHL_SlotSignal;            /* 根据信号值计算需要点亮的LED */            tempVar = ProximitySignal / Sensitivity;            for(i = 1 ; i <= tempVar ; i++)            {                LedData = LedData << 1;                LedData = LedData | 1;            }      }      /* 更新LED灯状态*/      LED_Control_Reg_Write(LedData);    }}

CapSense组件的使用 可参考帮助文档 在配置对话框框中单击Data Sheet即可出现一个PDF
由于只是针对代码的简单分析 对组件的使用还不是很了解接下来准备阅读ADC 和 CapSense 组件的说明文档

sky-Hawk where 发表于 2012-9-24 21:55:57

wangku001wei 发表于 2012-9-24 21:52 static/image/common/back.gif
是的 越近 亮的灯越多 可以看我之前上传的视频

哦,cypress在触摸感应方面还是有一手啊

sky-Hawk where 发表于 2012-9-24 21:52:37

小鸟愤怒 发表于 2012-9-24 21:48 static/image/common/back.gif
接近感应?这程序结果是什么,接近的话LED亮么?

是的 越近 亮的灯越多 可以看我之前上传的视频

sky-Hawk where 发表于 2012-9-24 21:48:17

接近感应?这程序结果是什么,接近的话LED亮么?:)
页: [1]
查看完整版本: PSoC3 FirstTouc Starter Kit 例子源代码之Proximity Sensor简单分析

Baidu
map