Created
April 18, 2021 17:33
-
-
Save shahriarshafin/b81302965a0e85d6ae6eb2eb31d21dab to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Created: 19-oct-19 | |
// Shahriar Shafin | |
// The bot can be controlled using Shafin_dbot app( WiFi-Hotspot Version ) | |
// Speed controll system is added. | |
// Everything is ok. | |
#define ENA 14 // Enable/speed motors Right GPIO14(D5) | |
#define ENB 12 // Enable/speed motors Left GPIO12(D6) | |
#define IN_1 15 // L298N in1 motors Right GPIO15(D8) | |
#define IN_2 13 // L298N in2 motors Right GPIO13(D7) | |
#define IN_3 2 // L298N in3 motors Left GPIO2(D4) | |
#define IN_4 0 // L298N in4 motors Left GPIO0(D3) | |
#include <ESP8266WiFi.h> | |
#include <WiFiClient.h> | |
#include <ESP8266WebServer.h> | |
String command; //String to store app command state. | |
int speedCar = 800; // 400 - 1023. | |
int speed_Coeff = 3; | |
const char* ssid = "NodeMCU Car"; | |
ESP8266WebServer server(80); | |
void setup() { | |
pinMode(ENA, OUTPUT); | |
pinMode(ENB, OUTPUT); | |
pinMode(IN_1, OUTPUT); | |
pinMode(IN_2, OUTPUT); | |
pinMode(IN_3, OUTPUT); | |
pinMode(IN_4, OUTPUT); | |
Serial.begin(115200); | |
// Connecting WiFi | |
WiFi.mode(WIFI_AP); | |
WiFi.softAP(ssid); | |
IPAddress myIP = WiFi.softAPIP(); | |
Serial.print("AP IP address: "); | |
Serial.println(myIP); | |
// Starting WEB-server | |
server.on ( "/", HTTP_handleRoot ); | |
server.onNotFound ( HTTP_handleRoot ); | |
server.begin(); | |
} | |
void goAhead(){ | |
digitalWrite(IN_1, HIGH); | |
digitalWrite(IN_2, LOW); | |
analogWrite(ENA, speedCar); // analogWrite(ENB, speedCar/speed_Coeff); | |
digitalWrite(IN_3, LOW); | |
digitalWrite(IN_4, LOW); | |
analogWrite(ENB, speedCar); | |
} | |
void goBack(){ | |
digitalWrite(IN_1, LOW); | |
digitalWrite(IN_2, HIGH); | |
analogWrite(ENA, speedCar); | |
digitalWrite(IN_3, LOW); | |
digitalWrite(IN_4, LOW); | |
analogWrite(ENB, speedCar); | |
} | |
void goRight(){ | |
digitalWrite(IN_1, HIGH); | |
digitalWrite(IN_2, LOW); | |
analogWrite(ENA, speedCar); | |
digitalWrite(IN_3, HIGH); | |
digitalWrite(IN_4, LOW); | |
digitalWrite(ENB, HIGH); | |
} | |
void goLeft(){ | |
digitalWrite(IN_1, HIGH); | |
digitalWrite(IN_2, LOW); | |
analogWrite(ENA, speedCar); | |
digitalWrite(IN_3, LOW); | |
digitalWrite(IN_4, HIGH); | |
digitalWrite(ENB, HIGH); | |
} | |
void goBackRight(){ | |
digitalWrite(IN_1, LOW); | |
digitalWrite(IN_2, HIGH); | |
analogWrite(ENA, speedCar); | |
digitalWrite(IN_3, HIGH); | |
digitalWrite(IN_4, LOW); | |
digitalWrite(ENB, HIGH); | |
} | |
void goBackLeft(){ | |
digitalWrite(IN_1, LOW); | |
digitalWrite(IN_2, HIGH); | |
analogWrite(ENA, speedCar); | |
digitalWrite(IN_3, LOW); | |
digitalWrite(IN_4, HIGH); | |
digitalWrite(ENB, HIGH); | |
} | |
void stopRobot(){ | |
digitalWrite(IN_1, LOW); | |
digitalWrite(IN_2, LOW); | |
analogWrite(ENA, speedCar); | |
digitalWrite(IN_3, LOW); | |
digitalWrite(IN_4, LOW); | |
analogWrite(ENB, speedCar); | |
} | |
void loop() { | |
server.handleClient(); | |
command = server.arg("State"); | |
if (command == "F") goAhead(); | |
else if (command == "B") goBack(); | |
else if (command == "L") goLeft(); | |
else if (command == "R") goRight(); | |
else if (command == "J") goBackRight(); | |
else if (command == "H") goBackLeft(); | |
else if (command == "0") speedCar = 400; | |
else if (command == "1") speedCar = 470; | |
else if (command == "2") speedCar = 540; | |
else if (command == "3") speedCar = 610; | |
else if (command == "4") speedCar = 680; | |
else if (command == "5") speedCar = 750; | |
else if (command == "6") speedCar = 820; | |
else if (command == "7") speedCar = 890; | |
else if (command == "8") speedCar = 960; | |
else if (command == "9") speedCar = 1023; | |
else if (command == "S") stopRobot(); | |
} | |
void HTTP_handleRoot(void) { | |
if( server.hasArg("State") ){ | |
Serial.println(server.arg("State")); | |
} | |
server.send ( 200, "text/html", "" ); | |
delay(1); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment