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