Arduino wifi > firebase 和超过 1 个 LED 控制
Arduino wifi > firebase and more than 1 LED control
你能帮我写下面的代码吗?它适用于 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;
}
}
这是因为您对 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);
}
你能帮我写下面的代码吗?它适用于 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;
}
}
这是因为您对 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);
}