我怎样才能让这个继电器在我拥有的 3 个触摸传感器中的任何一个上打开?

Posted

技术标签:

【中文标题】我怎样才能让这个继电器在我拥有的 3 个触摸传感器中的任何一个上打开?【英文标题】:Relay turn on by any of 3 touch sensors 【发布时间】:2022-01-07 05:59:01 【问题描述】:

我有一个继电器,我想用它打开灯,我有 2 个触摸传感器,但使用此代码我只能用 1 个打开它,我怎样才能让它工作?第三个是开关,但它应该仍然可以正常工作。我已经尝试过,它使用不同的代码。但该代码是用于伺服而不是继电器。

int touchPin   = 4;
int touchPin2   = 6;   // Arduino pin connected to touch sensor's pin
int touchPin3   = 7 ;
int relayPin = 9;

int val = 0;
int lightON = 0;
int touched = 0;

void setup() 
  Serial.begin(9600);
  pinMode(touchPin, INPUT); 
    pinMode(touchPin2, INPUT);
      pinMode(touchPin3, INPUT);
  pinMode(relayPin, OUTPUT);



void loop() 

  val = digitalRead(touchPin);
    val = digitalRead(touchPin2);
      val = digitalRead(touchPin3);

  if(val == HIGH && lightON == LOW)

    touched = 1-touched;
    delay(100);
      

  lightON = val;

      if(touched == HIGH)
        Serial.println("Light ON");
        digitalWrite(relayPin, LOW); 
       
      else
        Serial.println("Light OFF");
        digitalWrite(relayPin, HIGH);
   
           

  delay(100);

【问题讨论】:

【参考方案1】:

您需要同时处理所有三个数字输入。在你的代码中

val = digitalRead(touchPin);
val = digitalRead(touchPin2);
val = digitalRead(touchPin3);

您正在用最后一个覆盖前两个读取值。您应该将它们结合起来或分别处理所有三个。如果 any 为 HIGH,则将三个读取组合为一个为 HIGH 的值:

val = digitalRead(touchPin) || digitalRead(touchPin2) || digitalRead(touchPin3);

分别:

int val  = digitalRead(touchPin);
int val2 = digitalRead(touchPin2);
int val3 = digitalRead(touchPin3);

if ((val == HIGH || val2 == HIGH || val3 == HIGH) && lightON == LOW) 

【讨论】:

两个都试过了,第一个刚开始打开和关闭,第二个单独的就一直开着 Tnx 这工作我的一个引脚由于某种原因打开了,它注册为打开和关闭的原因

以上是关于我怎样才能让这个继电器在我拥有的 3 个触摸传感器中的任何一个上打开?的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何在应用程序执行其他工作时连续保存传感器数据

鼠标拖动选择不适用于触摸设备。我怎样才能使它成为可能?

压力传感器、流量传感器、温度传感器、PLC、HMI应该怎样连接?传感器数据怎样才能直观的显示在HMI中?

c语言怎样才能输出中文???(最简单的方法)

我怎样才能让 1 个视图控制器从底部向上滑动

我怎样才能让 xticks 在我的 matplotlib 图上有一个每月间隔而不是每天