带有 Arduino uno 的洗手液分配器

问题描述 投票:0回答:1

我正在尝试为一个学校项目制作一个自动洗手液分配器,其中包括 Arduino uno、水泵和红外传感器。基本上它工作得很好。我对编码一无所知,所以我使用了 Pictoblox。现在,我希望水泵启动后只运行 3 秒。尝试了chatgpt和各种代码,但每个解决方案都只是在IR打开泵后将泵的响应延迟了3秒。请帮忙。

在此输入图片描述

这工作正常,但只要 IR 检测到某些东西,泵就会持续运行。

//This c++ code is generated by PictoBlox

void setup() { //put your setup code here, to run once:

 pinMode(9, OUTPUT); pinMode(2, INPUT);
 digitalWrite(9, false);
}

void loop() {
 //put your main code here, to run repeatedly: 
  if(digitalRead(2)) {
    delay(0.5 * 1000);  while(undefined);
    digitalWrite(9, true); }
  else {  
    digitalWrite(9, false);
    delay(.5 * 1000); 
  }
}
c++ arduino
1个回答
0
投票

重新编写您的代码,我赞同评论部分中发布的@Computable 的建议。尝试将您的代码重构为:

void setup() {
 pinMode(9, OUTPUT);
 pinMode(2, INPUT);
 digitalWrite(9, false);
}

void loop() {
  if(digitalRead(2)) {
    digitalWrite(9, true);  // activate pump
    delay(3000);            // let the pump run for 3s
    digitalWrite(9, false); // deactivate pump
    while(digitalRead(2)) { // wait until hand is no longer close to IR sensor
      delay(.5 * 1000);
    }
  }
  else {  
    digitalWrite(9, false); // deactivate pump
    delay(.5 * 1000);       // This avoids looping too often (re-read IR sensor only every 0.5 seconds)
  }
}

请分享结果!

© www.soinside.com 2019 - 2024. All rights reserved.