我怎样才能让这个继电器在我拥有的 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:如何在应用程序执行其他工作时连续保存传感器数据