-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCode.c
136 lines (124 loc) · 4.76 KB
/
Code.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
// Arduino Voice Controlled Car
// Before uploading the code you have to install the necessary library//
//AFMotor Library https://learn.adafruit.com/adafruit-motor-shield/library-install //
//Servo Library https://github.com/arduino-libraries/Servo.git //
#include <AFMotor.h> //Adafruit Motor Shield Library. First you must download and install AFMotor library
#include <Servo.h> //Servo library. This is standard library. (Sketch -> Include Library -> Servo)
String voice;
AF_DCMotor motor1 (1, MOTOR12_1KHZ); //create motor #1 using M1 output on Motor Drive Shield, set to 1kHz PWM frequency
AF_DCMotor motor2 (2, MOTOR12_1KHZ); //create motor #2 using M2 output on Motor Drive Shield, set to 1kHz PWM frequency
AF_DCMotor motor3 (3, MOTOR34_1KHZ); //create motor #3 ysing M3 output on Motor Driver Shield,set to 1kHz PWM frequency
AF_DCMotor motor4 (4, MOTOR34_1KHZ); //create motor #4 ysing M4 output on Motor Driver Shield,set to 1kHz PWM frequency
Servo myServo; //define servo name
void setup()
{
Serial.begin(9600); //start serial communication
myServo.attach(10); //define our servo pin (the motor shield servo1 input = digital pin 10)
myServo.write(90); //servo position is 90 degrees
}
void loop()
{
while (Serial.available()){ //Check if there is an available byte to read
delay(10); //Delay added to make thing stable
char c = Serial.read(); //Conduct a serial read
if (c == '#') {break;} //Exit the loop when the # is detected after the word
voice += c; //Shorthand for voice = voice + c
}
if (voice.length() > 0){
if(voice == "*move forward"){
forward_car();
}
else if(voice =="*move backward"){
back_car();
}
else if(voice == "*turn right") {
right_car();
}
else if(voice == "*turn left") {
left_car();
}
else if(voice == "*stop") {
stop_car();
}
voice=""; //Reset the variable after initiating
}
}
void back_car()
{
motor1.setSpeed(255); //Define maximum velocity
motor1.run(FORWARD); //rotate the motor clockwise
motor2.setSpeed(255); //Define maximum velocity
motor2.run(FORWARD); //rotate the motor clockwise
motor3.setSpeed(255);//Define maximum velocity
motor3.run(FORWARD); //rotate the motor clockwise
motor4.setSpeed(255);//Define maximum velocity
motor4.run(FORWARD); //rotate the motor clockwise
delay(1500);
motor1.run(RELEASE); //Stop the motor
motor2.run(RELEASE); //Stop the motor
motor3.run(RELEASE); //Stop the motor
motor4.run(RELEASE); //Stop the motor
}
void forward_car()
{
motor1.setSpeed(255); //Define maximum velocity
motor1.run(BACKWARD); //rotate the motor anti-clockwise
motor2.setSpeed(255); //Define maximum velocity
motor2.run(BACKWARD); //rotate the motor anti-clockwise
motor3.setSpeed(255); //Define maximum velocity
motor3.run(BACKWARD); //rotate the motor anti-clockwise
motor4.setSpeed(255); //Define maximum velocity
motor4.run(BACKWARD); //rotate the motor anti-clockwise]
delay(1500);
motor1.run(RELEASE); //Stop the motor
motor2.run(RELEASE); //Stop the motor
motor3.run(RELEASE); //Stop the motor
motor4.run(RELEASE); //Stop the motor
}
void right_car()
{
myServo.write(0);
delay(500);
myServo.write(90);
delay(500);
motor1.setSpeed(255); //Define maximum velocity
motor1.run(FORWARD); //rotate the motor clockwise
motor2.setSpeed(255); //Define maximum velocity
motor2.run(FORWARD); //rotate the motor clockwise
motor3.setSpeed(255); //Define maximum velocity
motor3.run(BACKWARD); //rotate the motor anti-clockwise
motor4.setSpeed(255); //Define maximum velocity
motor4.run(BACKWARD); //rotate the motor anti-clockwise
delay(700);
motor1.run(RELEASE); //Stop the motor
motor2.run(RELEASE); //Stop the motor
motor3.run(RELEASE); //Stop the motor
motor4.run(RELEASE); //Stop the motor
}
void left_car()
{
myServo.write(180);
delay(500);
myServo.write(90);
delay(500);
motor1.setSpeed(255); //Define maximum velocity
motor1.run(BACKWARD); //rotate the motor anti-clockwise
motor2.setSpeed(255); //Define maximum velocity
motor2.run(BACKWARD); //rotate the motor anti-clockwise
motor3.setSpeed(255); //Define maximum velocity
motor3.run(FORWARD); //rotate the motor clockwise
motor4.setSpeed(255); //Define maximum velocity
motor4.run(FORWARD); //rotate the motor clockwise
delay(700);
motor1.run(RELEASE); //Stop the motor
motor2.run(RELEASE); //Stop the motor
motor3.run(RELEASE); //Stop the motor
motor4.run(RELEASE); //Stop the motor
}
void stop_car ()
{
motor1.run(RELEASE); //Stop the motor
motor2.run(RELEASE); //Stop the motor
motor3.run(RELEASE); //Stop the motor
motor4.run(RELEASE); //Stop the motor
}