Tri-BotHack/MotorTest
Appearance
/* BallBot Exercise This is test code to exercise the WowWee Tri-Bot capabilities Have to push down the head to get the robot to move This example code is in the public domain. */ // constants won't change. They're used here to // set pin numbers: const int buttonPin = 3; // the number of the pushbutton pin const int ledPin = 13; // the number of the LED pin // variables will change: int buttonState = 0; // variable for reading the pushbutton status int headPush=0; //if 0 means execute any instructions and wait, if 1 then do and check if headpushed regularly void setup() { // initialize the digital pin as an output. pinMode(12, OUTPUT); //yellow wire to motor enable 1 pinMode(11, OUTPUT); //teal wire to motor enable 2 pinMode(10, OUTPUT); //blue wire to motor enable 3 pinMode(9, OUTPUT); // white wire to motor direction 1 pinMode(8, OUTPUT); //gray wire to motor direction 2 pinMode(7, OUTPUT); //purple wire to motor direction 3 pinMode(6, INPUT); //orange encoder from motor 1 pinMode(5, INPUT); //red encoder from motor 1 pinMode(4, INPUT); //brown encoder from motor 1 pinMode(ledPin, OUTPUT); // initialize the LED pin as an output: pinMode(buttonPin, INPUT); // initialize the pushbutton pin as an input: } void loop(){ while (headPush == 0) { // wait for head push before starting buttonState = digitalRead(buttonPin); if (buttonState == HIGH) { // turn LED on: digitalWrite(ledPin, HIGH); headPush = 1; } } // oneMotorAtATime(); // spinTightCCW(); oneMotorAtATime(); delay(1000); spinTightCCW(); delay(1000); spinTightCW(); delay(1000); gradualTurn(); delay(1000); forWard(); delay(1000); backWard(); delay(1000); rightForward(); delay(1000); rightBackward(); delay(1000); headPush=0; } void oneMotorAtATime() { //motors turning individually delay(1000); // wait for a second digitalWrite(12, HIGH); // set the LED on delay(2000); // wait for a second digitalWrite(12, LOW); // set the LED off delay(2000); // wait for a second digitalWrite(11, HIGH); // set the LED on delay(2000); // wait for a second digitalWrite(11, LOW); // set the LED off delay(2000); // wait for a second digitalWrite(10, HIGH); // set the LED on delay(2000); // wait for a second digitalWrite(10, LOW); // set the LED off headPush=0; } void spinTightCCW() { delay(1000); digitalWrite(9, HIGH); // reverse motor 1 digitalWrite(8, HIGH); // reverse motor 2 digitalWrite(7, HIGH); // reverse motor 3 delay(100); digitalWrite(12, HIGH); // turn motor 1 on digitalWrite(11, HIGH); // turn motor 1 on digitalWrite(10, HIGH); // turn motor 3 on delay(840); digitalWrite(12, LOW); // turn motor 1 off digitalWrite(11, LOW); // turn motor 2 off digitalWrite(10, LOW); // turn motor 3 off digitalWrite(9, LOW); // normal motor 1 digitalWrite(8, LOW); // normal motor 2 digitalWrite(7, LOW); // normal motor 3 headPush=0; } void spinTightCW() { delay(1000); digitalWrite(12, HIGH); // turn motor 1 on digitalWrite(11, HIGH); // turn motor 1 on digitalWrite(10, HIGH); // turn motor 3 on delay(840); digitalWrite(12, LOW); // turn motor 1 off digitalWrite(11, LOW); // turn motor 2 off digitalWrite(10, LOW); // turn motor 3 off headPush=0; } void forWard() { delay(1000); digitalWrite(12, HIGH); // turn motor 1 on digitalWrite(8, HIGH); // reverse direction of motor 2 digitalWrite(11, HIGH); // turn motor 2 on delay(2000); digitalWrite(12, LOW); // turn motor 1 off digitalWrite(8, LOW); // make direction of motor 2 normal digitalWrite(11, LOW); // turn motor 2 off headPush=0; } void backWard() { delay(1000); digitalWrite(9, HIGH); // reverse direction of motor 1 digitalWrite(12, HIGH); // turn motor 1 on digitalWrite(11, HIGH); // turn motor 2 on delay(2000); digitalWrite(12, LOW); // turn motor 1 off digitalWrite(9, LOW); // make direction of motor 2 normal digitalWrite(11, LOW); // turn motor 2 off headPush=0; } void rightForward() { delay(1000); digitalWrite(11, HIGH); // turn motor 1 on digitalWrite(7, HIGH); // reverse direction of motor 2 digitalWrite(10, HIGH); // turn motor 2 on delay(2000); digitalWrite(11, LOW); // turn motor 1 off digitalWrite(7, LOW); // make direction of motor 2 normal digitalWrite(10, LOW); // turn motor 2 off headPush=0; } void rightBackward() { delay(1000); digitalWrite(11, HIGH); // turn motor 1 on digitalWrite(8, HIGH); // reverse direction of motor 2 digitalWrite(10, HIGH); // turn motor 2 on delay(2000); digitalWrite(11, LOW); // turn motor 1 off digitalWrite(8, LOW); // make direction of motor 2 normal digitalWrite(10, LOW); // turn motor 2 off headPush=0; } void gradualTurn() { delay(1000); digitalWrite(12, HIGH); // turn motor 1 on digitalWrite(8, HIGH); // reverse direction of motor 2 digitalWrite(11, HIGH); // turn motor 2 on delay(200); digitalWrite(10,HIGH); // turn motor 3 on delay(200); digitalWrite(10,LOW); // turn motor 3 on delay(200); digitalWrite(10,HIGH); // turn motor 3 on delay(200); digitalWrite(10,LOW); // turn motor 3 on delay(200); digitalWrite(10,HIGH); // turn motor 3 on delay(200); digitalWrite(10,LOW); // turn motor 3 on delay(200); digitalWrite(10,HIGH); // turn motor 3 on delay(200); digitalWrite(10,LOW); // turn motor 3 on delay(200); digitalWrite(12, LOW); // turn motor 1 off digitalWrite(8, LOW); // make direction of motor 2 normal digitalWrite(11, LOW); // turn motor 2 off headPush=0; }