108 lines
2.6 KiB
C++
108 lines
2.6 KiB
C++
/*
|
|
Make sure your Firebase project's '.read' and '.write' rules are set to 'true'.
|
|
Ignoring this will prevent the MCU from communicating with the database.
|
|
For more details- https://github.com/Rupakpoddar/ESP32Firebase
|
|
|
|
Download the Android app from- https://play.google.com/store/apps/details?id=com.rupak.firebaseremote
|
|
*/
|
|
|
|
#include <ESP32Firebase.h>
|
|
|
|
#define _SSID "ENTER HERE" // Your WiFi SSID
|
|
#define _PASSWORD "ENTER HERE" // Your WiFi Password
|
|
#define REFERENCE_URL "ENTER HERE" // Your Firebase project reference url
|
|
|
|
#define M1A 3 // D5: Output 1 for motor driver
|
|
#define M1B 4 // D6: Output 2 for motor driver
|
|
#define M2A 5 // D7: Output 3 for motor driver
|
|
#define M2B 6 // D8: Output 4 for motor driver
|
|
|
|
#define TURN_DELAY 100
|
|
#define FORWARD_BACKWARD_DELAY 500
|
|
|
|
Firebase firebase(REFERENCE_URL);
|
|
|
|
void setup() {
|
|
Serial.begin(115200);
|
|
pinMode(M1A, OUTPUT);
|
|
pinMode(M1B, OUTPUT);
|
|
pinMode(M2A, OUTPUT);
|
|
pinMode(M2B, OUTPUT);
|
|
|
|
digitalWrite(M1A, LOW);
|
|
digitalWrite(M1B, LOW);
|
|
digitalWrite(M2A, LOW);
|
|
digitalWrite(M2B, LOW);
|
|
|
|
// pinMode(LED_BUILTIN, OUTPUT);
|
|
// digitalWrite(LED_BUILTIN, LOW);
|
|
WiFi.mode(WIFI_STA);
|
|
WiFi.disconnect();
|
|
delay(1000);
|
|
|
|
// Connect to WiFi
|
|
Serial.println();
|
|
Serial.println();
|
|
Serial.print("Connecting to: ");
|
|
Serial.println(_SSID);
|
|
WiFi.begin(_SSID, _PASSWORD);
|
|
|
|
while (WiFi.status() != WL_CONNECTED) {
|
|
delay(500);
|
|
Serial.print("-");
|
|
}
|
|
|
|
Serial.println("");
|
|
Serial.println("WiFi Connected");
|
|
|
|
// Print the IP address
|
|
Serial.print("IP Address: ");
|
|
Serial.print("http://");
|
|
Serial.print(WiFi.localIP());
|
|
Serial.println("/");
|
|
// digitalWrite(LED_BUILTIN, HIGH);
|
|
}
|
|
|
|
void loop() {
|
|
int command = firebase.getInt("cmd/Robot"); // Get data from database.
|
|
|
|
if(command == 0){ // STOP
|
|
digitalWrite(M1A, LOW);
|
|
digitalWrite(M1B, LOW);
|
|
digitalWrite(M2A, LOW);
|
|
digitalWrite(M2B, LOW);
|
|
}
|
|
|
|
if(command == 1){ // FORWARD
|
|
digitalWrite(M1A, HIGH);
|
|
digitalWrite(M2A, HIGH);
|
|
delay(FORWARD_BACKWARD_DELAY);
|
|
digitalWrite(M1A, LOW);
|
|
digitalWrite(M2A, LOW);
|
|
}
|
|
|
|
if(command == 2){ // BACKWARD
|
|
digitalWrite(M1B, HIGH);
|
|
digitalWrite(M2B, HIGH);
|
|
delay(FORWARD_BACKWARD_DELAY);
|
|
digitalWrite(M1B, LOW);
|
|
digitalWrite(M2B, LOW);
|
|
}
|
|
|
|
if(command == 3){ // LEFT
|
|
digitalWrite(M1B, HIGH);
|
|
digitalWrite(M2A, HIGH);
|
|
delay(TURN_DELAY);
|
|
digitalWrite(M1B, LOW);
|
|
digitalWrite(M2A, LOW);
|
|
}
|
|
|
|
if(command == 4){ // RIGHT
|
|
digitalWrite(M1A, HIGH);
|
|
digitalWrite(M2B, HIGH);
|
|
delay(TURN_DELAY);
|
|
digitalWrite(M1A, LOW);
|
|
digitalWrite(M2B, LOW);
|
|
}
|
|
}
|