1 | /* The code was made by Tamás Imets for an Arduino UNO project
|
2 | This code controls the BB-8 Droid from the Star Wars: The Force Awakens,
|
3 | and works with Bluetooth RC Car application, using a HC-06 seriaé bluetooth module
|
4 | See more details at instructables.com/member/Imetomi
|
5 | Friday, December 25, 2015
|
6 | */
|
7 | //#include <Servo.h>
|
8 | #include <SoftwareSerial.h>
|
9 | #include "DualVNH5019MotorShield.h"
|
10 | DualVNH5019MotorShield md;
|
11 |
|
12 | int command = 0; //incoming serial data
|
13 | int led = 11;
|
14 | int ledPin = 13;
|
15 | int buttonpin = 5;
|
16 | SoftwareSerial bluetooth(A2, A3);
|
17 | int cmd;
|
18 |
|
19 | //Servo head;
|
20 | void setup() {
|
21 | bluetooth.begin(9600);
|
22 | Serial.begin(9600); // set up Serial library at 9600 bps - this is the speed the serial interface will work all
|
23 | pinMode(led, OUTPUT); //connect here the blue LED
|
24 | pinMode (ledPin, OUTPUT);
|
25 | pinMode (buttonpin, OUTPUT);
|
26 | md.init();
|
27 |
|
28 | }
|
29 |
|
30 | void loop() {
|
31 |
|
32 | if (bluetooth.available()) {
|
33 | cmd = bluetooth.read();
|
34 | Serial.println(cmd);
|
35 |
|
36 | if (cmd >= 'A' && cmd < 'T')
|
37 | {
|
38 |
|
39 | switch (cmd)
|
40 | {
|
41 |
|
42 | case 'C':
|
43 | md.setM1Speed(0); // stopped
|
44 | md.setM2Speed(0); // stopped
|
45 | break;
|
46 |
|
47 | case 'A':
|
48 | md.setM1Speed(-300);
|
49 | md.setM2Speed(-300);
|
50 | break;
|
51 |
|
52 | case 'B':
|
53 | md.setM1Speed(-120);
|
54 | md.setM2Speed(-120);
|
55 | break;
|
56 |
|
57 | case 'D':
|
58 | md.setM1Speed(120);
|
59 | md.setM2Speed(150);
|
60 | break;
|
61 |
|
62 | case 'E':
|
63 | md.setM1Speed(380);
|
64 | md.setM2Speed(400);
|
65 | break;
|
66 |
|
67 | case 'F':
|
68 | md.setM1Speed(250);
|
69 | md.setM2Speed(-250);
|
70 | break;
|
71 |
|
72 | case 'G':
|
73 | md.setM1Speed(120);
|
74 | md.setM2Speed(-120);
|
75 | break;
|
76 |
|
77 | case 'H':
|
78 | md.setM1Speed(-120);
|
79 | md.setM2Speed(120);
|
80 | break;
|
81 |
|
82 | case 'I':
|
83 | md.setM1Speed(-250);
|
84 | md.setM2Speed(250);
|
85 | break;
|
86 |
|
87 | case 'J':
|
88 | digitalWrite(ledPin, HIGH);
|
89 | break;
|
90 |
|
91 | case 'K':
|
92 | digitalWrite(ledPin, LOW);
|
93 | break;
|
94 |
|
95 | case 'L':
|
96 | digitalWrite(buttonpin, HIGH);
|
97 | break;
|
98 |
|
99 | case 'M':
|
100 | digitalWrite(buttonpin, LOW);
|
101 | break;
|
102 |
|
103 | default:
|
104 | cmd=0;
|
105 | break;
|
106 |
|
107 | case 'O':
|
108 | digitalWrite(led, LOW);
|
109 | break;
|
110 | case 'P':
|
111 | analogWrite(led, 50);
|
112 | break;
|
113 | case 'Q':
|
114 | analogWrite(led, 100);
|
115 | break;
|
116 | case 'R':
|
117 | analogWrite(led, 150);
|
118 | break;
|
119 | case 'S':
|
120 | analogWrite(led, 200);
|
121 | break;
|
122 | case 'T':
|
123 | analogWrite(led, 255);
|
124 | break;
|
125 |
|
126 |
|
127 |
|
128 | }
|
129 | }
|
130 | }
|
131 | }
|