如何打开led,但在程序开始使用IDE的arduino uno编码后关闭

如何打开led,但在程序开始使用IDE的arduino uno编码后关闭,arduino,arduino-uno,Arduino,Arduino Uno,我有一个带有两个接近传感器、两个LED和一个开关的电路来启动/结束程序 传感器下降(sD)在激活时打开(ledB)和关闭(ledG)。 传感器上升(sU)在激活时打开(ledG)和关闭(ledB) 背景: 一旦活塞泵到达行程末端,接近传感器就会感应,这将告诉arduino切换a 电磁阀位于另一个方向,与泵的方向相反。(LED表示电磁阀,便于操作 测试) 问题是: 当切换开关切换到关闭位置时,如果泵处于中间冲程,则在电磁阀关闭之前,切换开关不会移动 泵已打开且达到冲程末端,这将激活启动该过程的

我有一个带有两个接近传感器、两个LED和一个开关的电路来启动/结束程序

传感器下降(sD)在激活时打开(ledB)和关闭(ledG)。 传感器上升(sU)在激活时打开(ledG)和关闭(ledB)


背景: 一旦活塞泵到达行程末端,接近传感器就会感应,这将告诉arduino切换a 电磁阀位于另一个方向,与泵的方向相反。(LED表示电磁阀,便于操作 测试)


问题是: 当切换开关切换到关闭位置时,如果泵处于中间冲程,则在电磁阀关闭之前,切换开关不会移动 泵已打开且达到冲程末端,这将激活启动该过程的传感器。 我需要一个led/电磁阀点亮,然后在一个代理传感器启动后立即关闭


编辑: 我所拥有的和我努力实现的视频:


谢谢你的任何意见

这把我难住了

-萨姆


据我所知

在Arduino上使用digitalRead()时,它可以返回“高”或“低”

尝试将“false”改为“LOW”,看看这是否适合您


不要忘记查看更多详细信息。

我知道您需要在主开关打开时激活一个或另一个LED(活塞)。在终点处更改它们,在未到达终点时保持它们不变

启动时,您必须以任意(或预定义)方向启动,但不能像现在这样两个LED都熄灭。所以没有太多遗漏

不要混淆恒定的管脚编号和它们的可变状态:)


我已经解决了我自己的问题,谢谢你的帮助。 -萨姆


您不能上载代码文件,因为您应该在文本中提供相关的代码部分。请阅读我不知道你需要知道什么。你不能想出解决这个问题的逻辑吗?或者你不能把它转换成代码吗?拿起笔和纸,写下任何可能的场景以及您想在其中执行的操作。出于历史原因,digitalRead返回一个int,它可以是
HIGH(1)
LOW(0)
。因此,如果您愿意,您也可以使用布尔变量和值。这将打开ledG,并且不允许切换到ledB,除非sU in持续激活@如果(dir==false),则datafiddlerledG打开(且ledB关闭)<当sU触发时,code>dir变为false。通常(SD和sU均未激活时)
dir
保持不变。也许你需要交换sD和sU。已经解决了这个问题。。。如果有兴趣的话,你可以看看我的另一篇文章@数据提琴手
int sD = 4;
int ledB = 2;
int ledG = 3;
int sU = 5;
int mainSwitch = 7;
int ledBin = 8;
int ledGin = 9;

void setup() 
{
  // put your setup code here, to run once:
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, INPUT);
  pinMode(5, INPUT);
  pinMode(7, INPUT_PULLUP);
  pinMode(8, INPUT);
  pinMode(9, INPUT);
}

void loop() 
{

  mainSwitch = digitalRead(7);

  if (mainSwitch == true) //Ends Program
  {
    sD = digitalRead(4);
    sU = digitalRead(5);

    digitalWrite(ledB, LOW);
    digitalWrite(ledG, LOW);
  }


  if (mainSwitch == false)//Starts program 
  {
    sD = digitalRead(4);
    sU = digitalRead(5);

    if (sD == false) digitalWrite(ledB, HIGH); //sD(proximity sensor) Turns on ledB turns off ledG when activated
    if (sD == false) digitalWrite(ledG, LOW); 

    if (sU == false) digitalWrite(ledG, HIGH); //sU(poximity sensor) Turns on ledG turns off ledB when activated
    if (sU == false) digitalWrite(ledB, LOW);
  }
}
 if (sD == false)
 if (sU == false)
const byte ledB = 2;
const byte ledG = 3;

// other pin numbers, hardcoded usage in code 
// sU = 5; sD = 4;
// mainSwitch = 7;

bool dir = true; // Direction:  default = up 

void setup() 
{
  pinMode(ledG, OUTPUT);
  pinMode(ledB, OUTPUT);
  pinMode(4, INPUT);
  pinMode(5, INPUT);
  pinMode(7, INPUT_PULLUP);
}

void loop() 
{
  bool mainSwitch = digitalRead(7);
  if (mainSwitch == true) // stops Program
  {
    digitalWrite(ledB, LOW);
    digitalWrite(ledG, LOW);
  }
  else  
  {  // normal mode, one of both LED on
    // Read end switches 
    bool sD = digitalRead(4);
    bool sU = digitalRead(5);
    delay(5); // debounce, if these are mechanical switches

    if (sD) dir = true;  // switch to Up
    if (sU) dir = false; // switch to Down
    // else don't change direction

    if (dir) { 
      digitalWrite(ledG, LOW);
      digitalWrite(ledB, HIGH);
    }
    else {
      digitalWrite(ledB, LOW);
      digitalWrite(ledG, HIGH);
    }
  }
}
int sD = 4;
int ledB = 2;
int ledG = 3;
int sU = 5;
int mainSwitch = 7;
int ledBin = 8;
int ledGin = 9;

void setup() 
{

 pinMode(2, OUTPUT);
 pinMode(3, OUTPUT);
 pinMode(4, INPUT);
 pinMode(5, INPUT);
 pinMode(7, INPUT_PULLUP);
 pinMode(8, INPUT);
 pinMode(9, INPUT);
}

void loop() 
{

 mainSwitch = digitalRead(7);

 if (mainSwitch == true) //Ends Program
  {
   sD = digitalRead(4);
   sU = digitalRead(5);

   digitalWrite(ledB, LOW);
   digitalWrite(ledG, LOW);
  }


 if (mainSwitch == false)//Starts program 
 {
  sU = digitalRead(5);
  sD = digitalRead(4);

  if (sU == HIGH) //Turns on ledG(down solenoid) at first start. sU(upper 
  sensor) in deactivated
  {
   ledGin = digitalRead(9);
   ledBin = digitalRead(8);

   if (ledBin == LOW)digitalWrite(ledG, HIGH);
  }

 else if (sU == LOW) //sU(upper sensor) is activated turning on ledB(down 
 solenoid) turning off ledG(up solenoid)
 {
  ledBin = digitalRead(8);
  ledGin = digitalRead(9);

  if (ledBin == LOW) digitalWrite(ledB, HIGH);//ledB(down solenoid) turn on
  if (ledGin == HIGH) digitalWrite(ledG, LOW);//ledG(up solenoid) turn off
 }

if (sD == LOW)//sD(Bottom sensor) is activated turning on ledB(down 
solenoid) turning off ledG(down solenoid)
 {
  ledBin = digitalRead(8);
  ledGin = digitalRead(9);

  if (ledBin == HIGH) digitalWrite(ledB, LOW);//ledB(down solenoid) turn off
  if (ledGin == LOW) digitalWrite(ledG, HIGH);//ledB(up solenoid) turn on
 }
}
}.