You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改代码实现3个触控/开关传感器任意触发即可控制继电器开关

多传感器控制继电器修改方案

核心调整思路

  • 新增2个触控传感器、1个实体开关的引脚定义
  • 调整触发判定逻辑:只要三个输入设备任意一个触发,就执行继电器状态切换
  • 保留原有消抖、继电器控制逻辑,兼容性更高

修改后完整代码

// 引脚定义,可根据实际接线调整编号
int touchPin1 = 2;
int touchPin2 = 4;
int entitySwitchPin = 5;
int relayPin = 3;

int val = 0;
int lastTriggerState = 0;
int relayOn = 0;

void setup() {
  Serial.begin(9600);
  // 初始化三个输入引脚
  pinMode(touchPin1, INPUT); 
  pinMode(touchPin2, INPUT); 
  pinMode(entitySwitchPin, INPUT); 
  pinMode(relayPin, OUTPUT);
}

void loop() {
  // 读取三个引脚状态,任意一个为高电平则判定为触发
  int state1 = digitalRead(touchPin1);
  int state2 = digitalRead(touchPin2);
  int state3 = digitalRead(entitySwitchPin);
  val = (state1 == HIGH || state2 == HIGH || state3 == HIGH) ? HIGH : LOW;

  // 消抖+沿触发判定,避免长按重复切换
  if(val == HIGH && lastTriggerState == LOW){
    relayOn = 1 - relayOn;
    delay(100);
  }    
  lastTriggerState = val;

  // 继电器控制逻辑
  if(relayOn == HIGH){
    Serial.println("Light ON");
    digitalWrite(relayPin, LOW); 
  }else{
    Serial.println("Light OFF");
    digitalWrite(relayPin, HIGH);
  }     
  delay(100);
}

关键修改说明

  1. 引脚定义部分:将原单输入引脚扩展为3个输入引脚,适配2个触控传感器+1个实体开关的需求,引脚编号可根据你实际的接线情况自行调整
  2. 输入初始化部分:新增2个触控引脚、1个实体开关引脚的INPUT模式配置
  3. 触发判定部分:分别读取三个输入引脚的电平,只要任意一个输出高电平就判定为触发信号,原有切换逻辑不需要调整
  4. 如果你使用的实体开关默认是高电平、按下为低电平触发,只需要把电平判断条件里的HIGH换成LOW即可

内容的提问来源于stack exchange,提问作者Filip GG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 02:24:03