【发布时间】:2021-03-06 08:02:02
【问题描述】:
所以我对这个 IOT 的东西非常陌生,我在这里尝试创建的内容有点像交通违规,我的想法是当红灯亮起并且 PIR 传感器检测到蜂鸣器/LED 变高的那一刻。
图片如下:
代码如下所示
int pir = 2;
int rojo = 12;
int amarillo = 11;
int verde = 10;
int led = 7;
void setup()
{
pinMode(pir, INPUT);
pinMode(led, OUTPUT);
Serial.begin(9600);
pinMode(verde, OUTPUT); //It declares the green pin as output
pinMode(amarillo, OUTPUT);//It declares the yellow pin as output
pinMode(rojo, OUTPUT);
}
void loop()
{
digitalWrite(verde, HIGH); //It turns on the green led
delay(15000); //wait 15 seconds
digitalWrite(verde, LOW); //It turns off the green led
delay(250); //wait 0.25 seconds
digitalWrite(amarillo, HIGH); //It turns on the yellow led
delay(3000); //wait 3 seconds
digitalWrite(amarillo, LOW); //It turns off the yellow led
delay(250); //wait 0.25 seconds
int val = digitalRead(pir);
Serial.println(val);
digitalWrite(rojo, HIGH); //It turns on the red led
delay(15000); //wait 15 seconds
digitalWrite(rojo, LOW);
if (rojo == HIGH) {
if (val == HIGH) {
digitalWrite(led, HIGH);
} else {
digitalWrite(led, LOW);
}
delay(10);
}
}
【问题讨论】:
-
请将图片嵌入到您的帖子中(会生成一个stackoverflow imgur链接,即使您还没有足够的声誉,社区也可以为您嵌入)stackoverflow.com/posts/64971238/edit
-
rojo是输出引脚 (12) 的 数字,但您将其与HIGH(1我推测)进行比较,就好像它是一些输入一样信号。这显然总是错误的。 -
@EugeneSh。是对的;处理这个问题的最好方法是更清楚地命名变量,例如将
rojo更改为rojoPinNumber。 -
@Anonymous 286 你需要做的是创建一个包含 rojo 语句的变量,你永远不会打开 rojo,因为你在 if 之前关闭它,你需要做就像我在上面发布的一样!
-
@ti7 sry 我不知道,会记住的