- // MCDL14 Drive
- // none
- #include "SoftwareSerial.h"
- // 6.25 Inch Rotation
- // 5.76 Rotations Per Yard
- // 1.25 Seconds Per Rotation
- // 7.2 Seconds Per Yard
- SoftwareSerial btsend(11, 10);
- const int alive = 13;
- //Forward
- const int posfwd = 4;
- const int negfwd = 6;
- //Backward
- const int posbak = 5;
- const int negbak = 7;
- // Last Position
- int pos = 0;
- int rot = 0;
- char btrec;
- // Run Time (Ref.)
- int zero = 0;
- int forty = 5555;
- int fifty = 6944;
- int sixty = 8333;
- int seventy = 9722;
- int eigthy = 11111;
- int ninety = 12500;
- void setup() {
- Serial.begin(9600);
- btsend.begin(9600);
- pinMode(alive, OUTPUT);
- pinMode(posfwd, OUTPUT);
- pinMode(negfwd, OUTPUT);
- pinMode(posbak, OUTPUT);
- pinMode(negbak, OUTPUT);
- }
- void loop() {
- // Bluetooth Coms
- while (btsend.available()) {
- btrec = btsend.read();
-
- Serial.println(btrec);
- Serial.println(pos);
- // 40 Yards
- if (btrec == '1') {
- if (pos > forty) {
- rot = pos - forty;
- Serial.println(rot);
- backward();
- delay(rot);
- halt();
- pos = forty;
- }
- else if (pos < forty) {
- rot = forty - pos;
- Serial.println(rot);
- forward();
- delay(rot);
- halt();
- pos = forty;
- }
- else if (pos == forty) {
- halt();
- pos = forty;
- }
- }
- // 50 Yards
- if (btrec == '2') {
- if (pos > fifty) {
- rot = pos - fifty;
- Serial.println(rot);
- backward();
- delay(rot);
- halt();
- pos = fifty;
- }
- else if (pos < fifty) {
- rot = fifty - pos;
- Serial.println(rot);
- forward();
- delay(rot);
- halt();
- pos = fifty;
- }
- else if (pos == fifty) {
- halt();
- pos = fifty;
- }
- }
- // 60 Yards
- if (btrec == '3') {
- if (pos > sixty) {
- rot = pos - sixty;
- Serial.println(rot);
- backward();
- delay(rot);
- halt();
- pos = sixty;
- }
- else if (pos < sixty) {
- rot = sixty - pos;
- Serial.println(rot);
- forward();
- delay(rot);
- halt();
- pos = sixty;
- }
- else if (pos == sixty) {
- halt();
- pos = sixty;
- }
- }
- // 70 Yards
- if (btrec == '4') {
- if (pos > seventy) {
- rot = pos - seventy;
- Serial.println(rot);
- backward();
- delay(rot);
- halt();
- pos = seventy;
- }
- else if (pos < seventy) {
- rot = seventy - pos;
- Serial.println(rot);
- forward();
- delay(rot);
- halt();
- pos = seventy;
- }
- else if (pos == seventy) {
- halt();
- pos = seventy;
- }
- }
- // 80 Yards
- if (btrec == '5') {
- if (pos > eigthy) {
- rot = pos - eigthy;
- Serial.println(rot);
- backward();
- delay(rot);
- halt();
- pos = eigthy;
- }
- else if (pos < eigthy) {
- rot = eigthy - pos;
- Serial.println(rot);
- forward();
- delay(rot);
- halt();
- pos = eigthy;
- }
- else if (pos == eigthy) {
- halt();
- pos = eigthy;
- }
- }
- // 90 Yards
- if (btrec == '6') {
- if (pos > ninety) {
- rot = pos - ninety;
- Serial.println(rot);
- backward();
- delay(rot);
- halt();
- pos = ninety;
- }
- else if (pos < ninety) {
- rot = ninety - pos;
- Serial.println(rot);
- forward();
- delay(rot);
- halt();
- pos = ninety;
- }
- else if (pos == ninety) {
- halt();
- pos = ninety;
- }
- }
- // Home
- if (btrec == '7') {
- if (pos > zero) {
- rot = pos - zero;
- Serial.println(rot);
- backward();
- delay(rot);
- halt();
- pos = zero;
- }
- else if (pos < zero) {
- rot = zero - pos;
- Serial.println(rot);
- forward();
- delay(rot);
- halt();
- pos = zero;
- }
- else if (pos == zero) {
- halt();
- pos = zero;
- }
- }
- }
- }
- void backward() {
- Serial.println("backward");
- digitalWrite(posbak, HIGH);
- digitalWrite(negbak, HIGH);
- digitalWrite(alive, HIGH);
- }
- void forward() {
- Serial.println("forward");
- digitalWrite(posfwd, HIGH);
- digitalWrite(negfwd, HIGH);
- digitalWrite(alive, HIGH);
- }
- void halt() {
- Serial.println("stop");
- digitalWrite(posfwd, LOW);
- digitalWrite(negfwd, LOW);
- digitalWrite(posbak, LOW);
- digitalWrite(negbak, LOW);
- digitalWrite(alive, LOW);
- }