亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino 电容式触控开关:一枚硬币点亮 LED 的极简 DIY

项目简介

利用 Arduino 官方 CapacitiveSensor 库,仅需一枚硬币(或铝箔)、一只 1MΩ 电阻和几根跳线,即可在 Arduino UNO 上实现非接触/触摸感应控制 LED 亮灭。原理基于人体电容耦合:手指靠近传感极板会改变 RC 电路充放电时间常数,经软件滤波后触发翻转逻辑。成本极低、无需专用触摸 IC,适合初学者理解电容感应原理。

所需材料

电路原理

RC 充放电测量法:

  1. 发射引脚(D2)输出高电平,经 1MΩ 电阻给接收引脚(D4)充电
  2. 接收引脚连接传感极板(硬币),形成等效电容 C_sensor
  3. 人体靠近/触碰 → 并联人体电容 C_body (~100-200pF) → 总电容增大
  4. 充电时间 τ = R × C 变长,库函数测量充电周期数(循环计数)
  5. 阈值判决:计数超过基线 + 偏移量 → 判定为触摸事件
Arduino 电容式触控开关:一枚硬币点亮 LED 的极简 DIY
Arduino 电容式触控开关:一枚硬币点亮 LED 的极简 DIY

接线步骤

  1. 1MΩ 电阻跨接 Arduino D2(发射)与 D4(接收)
  2. 硬币/铝箔通过跳线连接 D4(接收引脚)
  3. LED 阳极(长脚)接 D8,阴极(短脚)接 220Ω 电阻后接 GND
  4. 若用面包板:D2-D4 跨电阻,D4 接硬币,D8 接 LED+电阻到 GND

软件准备

  1. Arduino IDE → 草图 → 包含库 → 管理库 → 搜索 "CapacitiveSensor" → 安装(由 Paul Badger 维护)
  2. 或手动下载:GitHub 打包库 → IDE → 草图 → 包含库 → 添加 .ZIP 库

完整代码(带消抖与状态机)

#include <CapacitiveSensor.h>

// 发射引脚 2,接收引脚 4,跨接 1MΩ 电阻
CapacitiveSensor cs_2_4 = CapacitiveSensor(2, 4);

const uint8_t LED_PIN = 8;
const long THRESHOLD = 800;     // 触摸阈值,需实测校准
const unsigned long DEBOUNCE_MS = 200; // 消抖时间

bool ledState = false;
unsigned long lastToggle = 0;

void setup() {
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, LOW);
  cs_2_4.set_CS_AutocaL_Millis(0xFFFFFFFF); // 关闭自动校准,防止基线漂移
  Serial.begin(115200);
  Serial.println(F("电容触控启动,触摸硬币翻转 LED"));
}

void loop() {
  long sensorValue = cs_2_4.capacitiveSensor(30); // 30 次采样平均
  
  // 串口绘图器观测波形
  Serial.println(sensorValue);
  
  if (sensorValue > THRESHOLD) {
    unsigned long now = millis();
    if (now - lastToggle > DEBOUNCE_MS) {
      ledState = !ledState;
      digitalWrite(LED_PIN, ledState);
      lastToggle = now;
      Serial.print(F("触发 -> LED ")); Serial.println(ledState ? "ON" : "OFF");
    }
  }
  delay(10); // 降低 CPU 占用
}

调试与校准

  1. 上传代码,打开 串口绘图器(Tools → Serial Plotter,波特率 115200)
  2. 不触摸时记录基线值(通常 10-50)
  3. 触摸硬币观察峰值(通常 500-2000+)
  4. 将 THRESHOLD 设为 基线 + (峰值-基线) × 0.3 左右
  5. 若过于灵敏(悬空触发),增大电阻至 2M-10MΩ 或启用自动校准

进阶玩法

原理图

Arduino 电容式触控开关:一枚硬币点亮 LED 的极简 DIY

常见问题

问题解决
完全不触发检查电阻阻值、引脚定义、硬币与 D4 连接是否可靠
疯狂闪烁/自触发增大阈值、加装 0.1μF 滤波电容跨接 D4-GND、接地良好
串口绘图器无波形确认波特率 115200,库版本兼容,尝试 capacitiveSensorRaw()

制造工艺

  1. 树莓派 PIR 运动传感器控制 LED 实战指南
  2. 树莓派多传感器温度光照监测系统:DS18B20 实战构建
  3. 基于树莓派的卫生间占用传感器:通过 Twilio 实现语音与短信提醒
  4. 数字光照传感器驱动 LED:Windows 10 IoT Core 树莓派实战
  5. 两块 Arduino 通过 Firebase 传递温湿度数据
  6. 手势控制 RGB 台灯 —— 交互式免手操作照明
  7. 基于 Arduino Uno 的人体检测救援机器人:传感器集成分步指南
  8. Arduino 红外心率传感器 DIY:低成本高精度,串口绘图器实时波形
  9. Android 手势遥控车:Raspberry Pi + Arduino 101 + 电机扩展板,I2T 协同控制
  10. 智能物联网罐:ESP8266 + Arduino + 超声波传感器实时监测罐内物位
  11. Arduino Cloud 传感器塔:温度、动作与气体监测
  12. MAX30100脉搏血氧传感器与Arduino接入指南:获取PPG波形与SpO2