|
|

楼主 |
发表于 2019-8-5 20:41:02
|
显示全部楼层
- /*
- 【Arduino】66种传感器模块系列实验(81)
- 实验八十三: 4路TTP224电容式触摸模块 人体数字触摸传感器
- 程序之三,使用4路触控模块的其中3个开关,当作LED灯的开关、调亮和调暗控制界面
- */
- const byte LED_PIN = 5; // LED灯的接脚
- const byte PWR_LED = 13; // 电源指示灯的接脚
-
- bool powerOn = false; // LED电源是否开启,默认“否”
- bool btnStatus; // 按钮状态
- int pwmVal = 0; // 电源输出值
-
- // 宣告触键的自订结构类型
- typedef struct {
- byte pin; // 按键的接脚编号
- bool lastStatus; // 上次的状态
- } key;
-
- // 宣告电源键的接脚和默认状态
- key powerKey = { 10, LOW };
-
- // 宣告“调亮”键的接脚和默认状态
- key upKey = { 11, LOW };
-
- // 宣告“调暗”键的接脚和默认状态
- key downKey = { 12, LOW };
-
- void setup() {
- Serial.begin(9600);
- pinMode(powerKey.pin, INPUT);
- pinMode(upKey.pin, INPUT);
- pinMode(downKey.pin, INPUT);
- pinMode(LED_PIN, OUTPUT);
- pinMode(PWR_LED, OUTPUT);
- }
-
- void loop() {
- // 读取电源键的状态
- btnStatus = digitalRead(powerKey.pin);
-
- // 如果电源键的讯号从低电位变成高电位…
- if (btnStatus && powerKey.lastStatus == LOW) {
- powerOn = !powerOn; // 反相电源状态
- digitalWrite(PWR_LED, powerOn);
-
- if (powerOn) { // 若powerOn为true…
- // 依照pwmVal的值点亮LED
- analogWrite(LED_PIN, pwmVal);
- } else {
- // 关闭LED灯
- digitalWrite(LED_PIN, LOW);
- }
- }
- // 纪录这次的电源键讯号状态
- powerKey.lastStatus = btnStatus;
-
- // 读取“调亮”键的状态
- btnStatus = digitalRead(upKey.pin);
-
- // 若“有开启电源”且“此按键讯号是高电位”且“前次讯号是低电位”
- if (powerOn && btnStatus && upKey.lastStatus == LOW) {
- // 增加亮度值,每次增加10,不能超过255。
- if ((pwmVal+10) <= 255) { pwmVal += 10;
- Serial.println(pwmVal);
- analogWrite(LED_PIN, pwmVal); } }
- upKey.lastStatus = btnStatus; // 读取“调暗”键的状态
- btnStatus = digitalRead(downKey.pin);
- if (powerOn && btnStatus && downKey.lastStatus == LOW) { // 减少亮度值,最低值为0
- if ((pwmVal-10) >= 0) {
- }
- pwmVal -= 10;
- Serial.println(pwmVal);
- analogWrite(LED_PIN, pwmVal);
- }
- downKey.lastStatus = btnStatus;
- }
复制代码 |
|