└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Motor-shield-control 2 | Arduino coding 3 | #include 4 | #include 5 | #define Echo A0 6 | #define Trig A1 7 | #define motor 10 8 | #define Speed 250 9 | #define spoint 170 10 | char value; 11 | int distance; 12 | int Left; 13 | int Right; 14 | int L = 0; 15 | int R = 0; 16 | int L1 = 0; 17 | int R1 = 0; 18 | Servo servo; 19 | AF_DCMotor M1(1); 20 | AF_DCMotor M2(2); 21 | AF_DCMotor M3(3); 22 | AF_DCMotor M4(4); 23 | void setup() { 24 | Serial.begin(9600); 25 | pinMode(Trig, OUTPUT); 26 | pinMode(Echo, INPUT); 27 | servo.attach(motor); 28 | M1.setSpeed(Speed); 29 | M2.setSpeed(Speed); 30 | M3.setSpeed(Speed); 31 | M4.setSpeed(Speed); 32 | } 33 | void loop() { 34 | //Obstacle(); 35 | Bluetoothcontrol(); 36 | //voicecontrol(); 37 | } 38 | void Bluetoothcontrol() { 39 | if (Serial.available() > 0) { 40 | value = Serial.read(); 41 | Serial.println(value); 42 | } 43 | if (value == 'F') { 44 | forward(); 45 | } else if (value == 'B') { 46 | backward(); 47 | } else if (value == 'L') { 48 | left(); 49 | } else if (value == 'R') { 50 | right(); 51 | } else if (value == 'S') { 52 | Stop(); 53 | } 54 | } 55 | void Obstacle() { 56 | distance = ultrasonic(); 57 | if (distance <= 12) { 58 | Stop(); 59 | backward(); 60 | delay(100); 61 | Stop(); 62 | L = leftsee(); 63 | servo.write(spoint); 64 | delay(800); 65 | R = rightsee(); 66 | servo.write(spoint); 67 | if (L < R) { 68 | right(); 69 | delay(500); 70 | Stop(); 71 | delay(200); 72 | } else if (L > R) { 73 | left(); 74 | delay(500); 75 | Stop(); 76 | delay(200); 77 | } 78 | } else { 79 | forward(); 80 | } 81 | } 82 | void voicecontrol() { 83 | if (Serial.available() > 0) { 84 | value = Serial.read(); 85 | Serial.println(value); 86 | if (value == '^') { 87 | forward(); 88 | } else if (value == '-') { 89 | backward(); 90 | } else if (value == '<') { 91 | L = leftsee(); 92 | servo.write(spoint); 93 | if (L >= 10 ) { 94 | left(); 95 | delay(500); 96 | Stop(); 97 | } else if (L < 10) { 98 | Stop(); 99 | } 100 | } else if (value == '>') { 101 | R = rightsee(); 102 | servo.write(spoint); 103 | if (R >= 10 ) { 104 | right(); 105 | delay(500); 106 | Stop(); 107 | } else if (R < 10) { 108 | Stop(); 109 | } 110 | } else if (value == '*') { 111 | Stop(); 112 | } 113 | } 114 | } 115 | // Ultrasonic sensor distance reading function 116 | int ultrasonic() { 117 | digitalWrite(Trig, LOW); 118 | delayMicroseconds(4); 119 | digitalWrite(Trig, HIGH); 120 | delayMicroseconds(10); 121 | digitalWrite(Trig, LOW); 122 | long t = pulseIn(Echo, HIGH); 123 | long cm = t / 29 / 2; //time convert distance 124 | return cm; 125 | } 126 | void forward() { 127 | M1.run(FORWARD); 128 | M2.run(FORWARD); 129 | M3.run(FORWARD); 130 | M4.run(FORWARD); 131 | } 132 | void backward() { 133 | M1.run(BACKWARD); 134 | M2.run(BACKWARD); 135 | M3.run(BACKWARD); 136 | M4.run(BACKWARD); 137 | } 138 | void right() { 139 | M1.run(BACKWARD); 140 | M2.run(BACKWARD); 141 | M3.run(FORWARD); 142 | M4.run(FORWARD); 143 | } 144 | void left() { 145 | M1.run(FORWARD); 146 | M2.run(FORWARD); 147 | M3.run(BACKWARD); 148 | M4.run(BACKWARD); 149 | } 150 | void Stop() { 151 | M1.run(RELEASE); 152 | M2.run(RELEASE); 153 | M3.run(RELEASE); 154 | M4.run(RELEASE); 155 | } 156 | int rightsee() { 157 | servo.write(20); 158 | delay(800); 159 | Left = ultrasonic(); 160 | return Left; 161 | } 162 | int leftsee() { 163 | servo.write(20); 164 | delay(800); 165 | Right = ultrasonic(); 166 | return Right; 167 | } 168 | --------------------------------------------------------------------------------