首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >由三个触控传感器中的任何一个启动继电器。

由三个触控传感器中的任何一个启动继电器。
EN

Stack Overflow用户
提问于 2021-11-30 14:09:13
回答 1查看 93关注 0票数 0

我有一个继电器,我想用它打开灯,我有两个触摸感应器,但是使用这个代码,我只能用1打开它,我如何使它工作呢?第三种是开关,但它的工作方式应该是一样的。我试过了,它用的是不同的代码。但是那个代码是用来伺服的而不是继电器的。

代码语言:javascript
运行
复制
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);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-30 14:39:31

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

代码语言:javascript
运行
复制
val = digitalRead(touchPin);
val = digitalRead(touchPin2);
val = digitalRead(touchPin3);

您正在覆盖前两个读取值到最后一个。你应该把它们结合起来,或者把这三者分开处理。将三个读取合并为一个值,如果任何都很高,则该值将很高:

代码语言:javascript
运行
复制
val = digitalRead(touchPin) || digitalRead(touchPin2) || digitalRead(touchPin3);

另外:

代码语言:javascript
运行
复制
int val  = digitalRead(touchPin);
int val2 = digitalRead(touchPin2);
int val3 = digitalRead(touchPin3);

if ((val == HIGH || val2 == HIGH || val3 == HIGH) && lightON == LOW) {
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70170732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档