Last active
July 31, 2016 17:48
-
-
Save bigsnarfdude/c01581143ad3b2917d2c8bfc54a6d481 to your computer and use it in GitHub Desktop.
[self-driving-car] connects MacBookPro --> arduino --> wirelessCircuitBoardRCcar
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Car Control v. 0.2 | |
// http://thelivingpearl.com/2013/01/04/drive-a-lamborghini-with-your-keyboard/ | |
int reversePin = 9; | |
int forwardPin = 8; | |
int leftPin = 7; | |
int rightPin = 6; | |
int order = 55; | |
int time = 75; | |
//control flag | |
int flag = 0; | |
void forward(int time){ | |
Serial.println("This is forward..."); | |
digitalWrite(forwardPin, LOW); | |
delay(time); | |
digitalWrite(forwardPin,HIGH); | |
} | |
void reverse(int time){ | |
Serial.println("This is reverse..."); | |
digitalWrite(reversePin, LOW); | |
delay(time); | |
digitalWrite(reversePin,HIGH); | |
} | |
void left(int time){ | |
Serial.println("This is left..."); | |
digitalWrite(leftPin, LOW); | |
delay(time); | |
digitalWrite(leftPin,HIGH); | |
} | |
void right(int time){ | |
Serial.println("This is right..."); | |
digitalWrite(rightPin, LOW); | |
delay(time); | |
digitalWrite(rightPin,HIGH); | |
} | |
void leftTurnForward(int time){ | |
digitalWrite(forwardPin, LOW); | |
digitalWrite(leftPin, LOW); | |
delay(time); | |
off(); | |
} | |
void rightTurnForward(int time){ | |
digitalWrite(forwardPin, LOW); | |
digitalWrite(rightPin, LOW); | |
delay(time); | |
off(); | |
} | |
void leftTurnReverse(int time){ | |
digitalWrite(reversePin, LOW); | |
digitalWrite(leftPin, LOW); | |
delay(time); | |
off(); | |
} | |
void rightTurnReverse(int time){ | |
digitalWrite(reversePin, LOW); | |
digitalWrite(rightPin, LOW); | |
delay(time); | |
off(); | |
} | |
void demoOne(){ | |
int demoTime = 500; | |
forward(demoTime); | |
reverse(demoTime); | |
left(demoTime); | |
right(demoTime); | |
} | |
void demoTwo(){ | |
int demoTime = 500; | |
rightTurnForward(demoTime); | |
leftTurnForward(demoTime); | |
rightTurnReverse(demoTime); | |
leftTurnReverse(demoTime); | |
} | |
void off(){ | |
digitalWrite(9, HIGH); | |
digitalWrite(8, HIGH); | |
digitalWrite(7, HIGH); | |
digitalWrite(6, HIGH); | |
} | |
void orderControl(int order, int time){ | |
switch (order){ | |
//off order | |
case 0: off(); break; | |
//demo modes | |
case 1: demoOne(); order=0; break; | |
case 2: demoTwo(); order=0; break; | |
case 3: demoOne(); demoTwo(); order=0; break; | |
//movment options | |
case 11: forward(time); order=0; break; | |
case 12: reverse(time); order=0; break; | |
case 13: right(time); order=0; break; | |
case 14: left(time); order=0; break; | |
//complex movment | |
case 21: rightTurnForward(time); order=0; break; | |
case 22: leftTurnForward(time); order=0; break; | |
case 23: rightTurnReverse(time); order=0; break; | |
case 24: leftTurnReverse(time); order=0; break; | |
//no match... | |
default: Serial.print("\nINVALID ORDER!... TURNING OFF!\n"); | |
} | |
} | |
void setup() { | |
// initialize the digital pins as an output. | |
pinMode(rightPin, OUTPUT); | |
pinMode(leftPin, OUTPUT); | |
pinMode(forwardPin, OUTPUT); | |
pinMode(reversePin, OUTPUT); | |
Serial.begin(115200); | |
Serial.print("\n\nStart...\n"); | |
} | |
void loop() { | |
//Turn everything off... | |
off(); | |
//get input | |
if (Serial.available() > 0){ | |
order = Serial.read() - 65; | |
Serial.print("I received: "); | |
Serial.println(order); | |
flag = 1; | |
} | |
if(flag){ | |
//complete orders | |
orderControl(order,time); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment