#include SoftwareSerial mySerial(10, 11); char data = 0; #define IN1 2 #define IN2 4 #define IN3 6 #define IN4 7 #define EN1 5 #define EN2 3 // constants won't change. Used here to set a pin number: const int ledPin = LED_BUILTIN;// the number of the LED pin // Variables will change: int ledState = LOW; // ledState used to set the LED // Generally, you should use "unsigned long" for variables that hold time // The value will quickly become too large for an int to store unsigned long previousMillis = 0; // will store last time LED was updated // constants won't change: const long interval = 1000; // interval at which to blink (milliseconds) void setup() { // put your setup code here, to run once: Serial.begin(9600); mySerial.begin(9600); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); pinMode(EN1, OUTPUT); pinMode(EN2, OUTPUT); // set the digital pin as output: pinMode(ledPin, OUTPUT); } void loop() { unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { // save the last time you blinked the LED previousMillis = currentMillis; // if the LED is off turn it on and vice-versa: if (ledState == LOW) { ledState = HIGH; } else { ledState = LOW; } // set the LED with the ledState of the variable: digitalWrite(ledPin, ledState); } if (mySerial.available() ) { data = mySerial.read(); Serial.println(data); if (data == 'F') { Forward(); } else if (data == 'B') { Back(); } else if (data == 'L') { Left(); } else if (data == 'R') { Right(); } else if (data == 'G') { ForwardLeft(); } else if (data == 'I') { ForwardRight(); } else if (data == 'H') { BackLeft(); } else if (data == 'J') { BackRight(); } else { Stop(); } } } void Forward() { digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); digitalWrite(EN1, HIGH); digitalWrite(EN2, HIGH); } void Back() { digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); digitalWrite(EN1, HIGH); digitalWrite(EN2, HIGH); } void Left() { digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); digitalWrite(EN1, HIGH); digitalWrite(EN2, HIGH); } void Right() { digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); digitalWrite(EN1, HIGH); digitalWrite(EN2, HIGH); } void Stop() { digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); digitalWrite(EN1, LOW); digitalWrite(EN2, LOW); } void ForwardLeft() { analogWrite(EN1, 255); //speed 0 - 255 analogWrite(EN2, 50); //speed 0 - 255 digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); } void ForwardRight() { analogWrite(EN1, 50); //speed 0 - 255 analogWrite(EN2, 255); //speed 0 - 255 digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); } void BackLeft() { analogWrite(EN1, 50); //speed 0 - 255 analogWrite(EN2, 255); //speed 0 - 255 digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); } void BackRight() { analogWrite(EN1, 255); //speed 0 - 255 analogWrite(EN2, 50); //speed 0 - 255 digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); }