3.
1 Left Motor Controller
void setup() {
pinMode(8, OUTPUT);
pinMode(11, OUTPUT);
pinMode(9, OUTPUT);
}
void loop() {
digitalWrite(11, HIGH);
digitalWrite(8, LOW);
analogWrite(9, 240);
}
void left_speed(int speed) {
if (speed > 0) {
digitalWrite(8, LOW);
analogWrite(9, speed);
} else {
speed = -speed;
digitalWrite(8, HIGH);
analogWrite(9, speed);
}
}
3.2 Left Motor Testing
void setup() {
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
}
void left_speed(int speed) {
if (speed > 0) {
digitalWrite(8, LOW);
analogWrite(9, speed);
} else {
speed = -speed;
digitalWrite(8, HIGH);
analogWrite(9, speed);
}
}
void loop() {
left_speed(100);
delay(2000);
left_speed(0);
delay(200);
left_speed(-100);
delay(2000);
left_speed(0);
delay(200);
}
3.3 Right Motor Testing
void right_speed(int speed) {
if (speed > 0) {
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
analogWrite(10, speed);
} else {
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
analogWrite(10, -speed);
}
}
void setup() {
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(10, OUTPUT);
}
void loop() {
right_speed(100);
delay(2000);
right_speed(0);
delay(2000);
right_speed(-100);
delay(2000);
right_speed(0);
delay(2000);
}
3.4 Full Motor Control Functions
const int leftMotorDirectionPin1 = 8;
const int leftMotorDirectionPin2 = 9;
const int leftMotorSpeedPin = 11;
const int rightMotorDirectionPin1 = 12;
const int rightMotorDirectionPin2 = 13;
const int rightMotorSpeedPin = 10;
void setup() {
pinMode(leftMotorDirectionPin1, OUTPUT);
pinMode(leftMotorDirectionPin2, OUTPUT);
pinMode(leftMotorSpeedPin, OUTPUT);
pinMode(rightMotorDirectionPin1, OUTPUT);
pinMode(rightMotorDirectionPin2, OUTPUT);
pinMode(rightMotorSpeedPin, OUTPUT);
}
void forward(int speed) {
left_speed(speed);
right_speed(speed);
}
void backward(int speed) {
left_speed(-speed);
right_speed(-speed);
}
void turnleft(int speed) {
left_speed(speed / 2);
right_speed(speed);
}
void turnright(int speed) {
left_speed(speed);
right_speed(speed / 2);
}
void left_speed(int speed) {
if (speed > 0) {
digitalWrite(leftMotorDirectionPin1, LOW);
digitalWrite(leftMotorDirectionPin2, HIGH);
analogWrite(leftMotorSpeedPin, speed);
} else {
digitalWrite(leftMotorDirectionPin1, HIGH);
digitalWrite(leftMotorDirectionPin2, LOW);
analogWrite(leftMotorSpeedPin, -speed);
}
}
void right_speed(int speed) {
if (speed > 0) {
digitalWrite(rightMotorDirectionPin1, LOW);
digitalWrite(rightMotorDirectionPin2, HIGH);
analogWrite(rightMotorSpeedPin, speed);
} else {
digitalWrite(rightMotorDirectionPin1, HIGH);
digitalWrite(rightMotorDirectionPin2, LOW);
analogWrite(rightMotorSpeedPin, -speed);
}
}
void loop() {
forward(100);
delay(2000);
forward(0);
delay(2000);
turnleft(100);
delay(2000);
forward(0);
delay(2000);
backward(100);
delay(2000);
forward(0);
delay(2000);
turnright(100);
delay(2000);
forward(0);
delay(2000);
}
3.5 Full Motor Testing
void loop() {
forward(100);
delay(2000);
forward(0);
delay(2000);
turnleft(100);
delay(2000);
forward(0);
delay(2000);
backward(100);
delay(2000);
forward(0);
delay(2000);
turnright(100);
delay(2000);
forward(0);
delay(2000);
}
4.1 LED Controller 1
void setup() {
Serial.begin(115200);
pinMode(13, OUTPUT);
}
void loop() {
if (Serial.available()) {
char receivedChar = Serial.read();
Serial.println(receivedChar);
if (receivedChar == 'O') {
digitalWrite(13, HIGH);
} else {
digitalWrite(13, LOW);
}
}
}
4.2 LED Controller 2
void setup() {
Serial.begin(115200);
pinMode(13, OUTPUT);
}
void loop() {
if (Serial.available()) {
char receivedChar = Serial.read();
if (receivedChar == 'O') {
digitalWrite(13, HIGH);
} else if (receivedChar == 'F') {
digitalWrite(13, LOW);
}
}
}
4.3 Robot Controller
void setup() {
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
char commandrobot = Serial.read();
if (commandrobot == 'W') {
digitalWrite(8, HIGH);
digitalWrite(11, LOW);
digitalWrite(13, HIGH);
digitalWrite(12, LOW);
analogWrite(9, 250);
analogWrite(10, 250);
} else if (commandrobot == 'S') {
digitalWrite(8, LOW);
digitalWrite(11, HIGH);
digitalWrite(13, LOW);
digitalWrite(12, HIGH);
analogWrite(9, 250);
analogWrite(10, 250);
} else if (commandrobot == 'A') {
digitalWrite(8, HIGH);
digitalWrite(11, LOW);
digitalWrite(13, LOW);
digitalWrite(12, LOW);
analogWrite(9, 250);
analogWrite(10, 0);
} else if (commandrobot == 'D') {
digitalWrite(8, LOW);
digitalWrite(11, LOW);
digitalWrite(13, HIGH);
digitalWrite(12, LOW);
analogWrite(9, 0);
analogWrite(10, 250);
} else {
digitalWrite(8, LOW);
digitalWrite(11, LOW);
digitalWrite(13, LOW);
digitalWrite(12, LOW);
analogWrite(9, 0);
analogWrite(10, 0);
}
}
}
4.4 Robot Headlights
void setup() {
for (int i = 6; i <= 13; i++) {
pinMode(i, OUTPUT);
}
Serial.begin(115200);
}
void stop() {
for (int i = 6; i <= 13; i++) {
digitalWrite(i, LOW);
}
}
void forward(int speed) {
stop();
digitalWrite(8, HIGH);
digitalWrite(11, LOW);
analogWrite(9, speed);
digitalWrite(13, HIGH);
digitalWrite(12, LOW);
analogWrite(10, speed);
}
void backward(int speed) {
stop();
digitalWrite(8, LOW);
digitalWrite(11, HIGH);
analogWrite(9, speed);
digitalWrite(13, LOW);
digitalWrite(12, HIGH);
analogWrite(10, speed);
}
void turnleft(int speed) {
stop();
digitalWrite(8, LOW);
digitalWrite(11, HIGH);
analogWrite(9, speed);
digitalWrite(6, HIGH);
}
void turnright(int speed) {
stop();
digitalWrite(8, HIGH);
digitalWrite(11, LOW);
analogWrite(9, speed);
digitalWrite(7, HIGH);
}
void loop() {
if (Serial.available() > 0) {
char temp = Serial.read();
if (temp == 'W') forward(100);
else if (temp == 'S') backward(100);
else if (temp == 'A') turnleft(100);
else if (temp == 'D') turnright(100);
else stop();
}
}