请帮我提供以下代码。它可以使用1个LED,但不能使用2个LED /引脚。在引脚3上起作用,但在引脚5上不起作用。有什么建议吗?
我尝试了许多不同的操作,但都卡住了。循环内部有些错误。我认为这将对论坛上的许多人有所帮助。
代码段校正会很棒,或者只是告诉我如何解决该问题。
Arduino代码:
#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>
// Set these to run example.
#define FIREBASE_HOST "test839785093353.firebaseio.com"
#define FIREBASE_AUTH "685g4d65d4g65d4g654TESTsf354s6f531sf531s"
//Change line with your WiFi router name and password
#define WIFI_SSID "Internet"
#define WIFI_PASSWORD "password123123"
void setup() {
Serial.begin(9600);
pinMode(3, OUTPUT);
pinMode(5, OUTPUT);
// connect to wifi.
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("connecting");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println();
Serial.print("connected: ");
Serial.println(WiFi.localIP());
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
// ob povezavi inicializiras status
Firebase.set("LED_STATUS", 0);
Firebase.set("LED2_STATUS", 0);
}
int led1 = 0;
int led2 = 0;
// int led3 = 0;
void loop() {
// get value
led1 = Firebase.getInt("LED_STATUS");
led2 = Firebase.getInt("LED2_STATUS");
// handle error
if (led1==1) {
Serial.println("LED 1 ON");
digitalWrite(3,HIGH);
return;
delay(10);
}
else {
Serial.println("LED 1 OFF");
digitalWrite(3,LOW);
return;
}
// se en if..else stavek
if (led2==1) {
Serial.println("LED 2 ON");
digitalWrite(5,HIGH);
return;
delay(10);
}
else {
Serial.println("LED 2 OFF");
digitalWrite(5,LOW);
return;
}
}
答案 0 :(得分:0)
这样做的原因是用于LED1的if else底座。
如果led1
为1,则打开led1并退出loop()函数。
如果led1
为0,则会关闭led1并退出loop()函数。
代码永远不会到达led2。
尝试此更改
if (led1==1) {
Serial.println("LED 1 ON");
digitalWrite(3,HIGH);
delay(10);
}
else {
Serial.println("LED 1 OFF");
digitalWrite(3,LOW);
}
// se en if..else stavek
if (led2==1) {
Serial.println("LED 2 ON");
digitalWrite(5,HIGH);
delay(10);
}
else {
Serial.println("LED 2 OFF");
digitalWrite(5,LOW);
}