Skip to content

Instantly share code, notes, and snippets.

@bigsnarfdude
Last active July 31, 2016 17:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bigsnarfdude/c01581143ad3b2917d2c8bfc54a6d481 to your computer and use it in GitHub Desktop.
Save bigsnarfdude/c01581143ad3b2917d2c8bfc54a6d481 to your computer and use it in GitHub Desktop.
[self-driving-car] connects MacBookPro --> arduino --> wirelessCircuitBoardRCcar
// 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