arduino stuffs
Diffstat (limited to 'car_driver/arduino/drive.ino')
-rw-r--r--car_driver/arduino/drive.ino78
1 files changed, 78 insertions, 0 deletions
diff --git a/car_driver/arduino/drive.ino b/car_driver/arduino/drive.ino
new file mode 100644
index 0000000..718b532
--- /dev/null
+++ b/car_driver/arduino/drive.ino
@@ -0,0 +1,78 @@
+#define MotorA 12 // left motor
+#define BrakeMotorA 9
+#define MotorASpeed 3
+
+#define MotorB 13 // right motor
+#define BrakeMotorB 8
+#define MotorBSpeed 11
+
+#define SPEED 255 // speed of motors
+
+void begin() {
+ // Setup Channel A
+ pinMode(MotorA, OUTPUT);
+ pinMode(BrakeMotorA, OUTPUT);
+
+ // Setup Channel B
+ pinMode(MotorB, OUTPUT);
+ pinMode(BrakeMotorB, OUTPUT);
+}
+
+void motorAForward(int speed) {
+ digitalWrite(MotorA, HIGH); // forward
+ digitalWrite(BrakeMotorA, LOW); // brake off
+ analogWrite(MotorASpeed, speed); // speed of motor
+}
+
+void motorBForward(int speed) {
+ digitalWrite(MotorB, HIGH); // forward
+ digitalWrite(BrakeMotorB, LOW); // brake off
+ analogWrite(MotorBSpeed, speed); // speed of motor
+}
+
+void motorBBackward(int speed) {
+ digitalWrite(MotorB, LOW); // backwards
+ digitalWrite(BrakeMotorB, LOW); // brake off
+ analogWrite(MotorBSpeed, speed); // speed of motor
+}
+
+void motorABackward(int speed) {
+ digitalWrite(MotorA, LOW); // backwards
+ digitalWrite(BrakeMotorA, LOW); // brake off
+ analogWrite(MotorASpeed, speed); // speed of motor
+}
+
+void forward() {
+ motorAForward(SPEED);
+ motorBForward(SPEED);
+}
+
+void backward() {
+ motorABackward(SPEED);
+ motorBBackward(SPEED);
+}
+
+void brakeMotorA() {
+ digitalWrite(brakeMotorA, HIGH); // engage brake
+ analogWrite(MotorASpeed, 0); // slow
+}
+
+void brakeMotorB() {
+ digitalWrite(brakeMotorB, HIGH); // engage brake
+ analogWrite(MotorBSpeed, 0); // slow
+}
+
+void stop() {
+ brakeMotorA();
+ brakeMotorB();
+}
+
+void left() {
+ brakeMotorA();
+ motorBForward(SPEED);
+}
+
+void right() {
+ brakeMotorB();
+ motorAForward(SPEED);
+} \ No newline at end of file