| Cardboard is used to cover unnecessary wires and for mounting the chips |
| This is the underside. I just used simple masking tape ;D |
I then mounted the Arduino and the motor driver board. I had to tape the batteries that power the motor driver board to the side. I hid the other set of batteries beneath the cardboard because I had no room for it.
// Dagu 5 Chassis example.
// Author: Nick Gammon
// Date: 11th December 2011
volatile int rotaryCount = 0;
#define PINA 8
#define PINB 9
#define INTERRUPT 0 // that is, pin 2
#define DIRECTIONA 4
#define MOTORA 5
#define DIRECTIONB 7
#define MOTORB 6
#define TIME_FORWARDS 10000
#define TIME_BACKWARDS 10000
#define TIME_TURN 1200
// Interrupt Service Routine for a change to encoder pin A
void isr ()
{
boolean up;
if (digitalRead (PINA))
up = digitalRead (PINB);
else
up = !digitalRead (PINB);
if (up)
rotaryCount++;
else
rotaryCount--;
} // end of isr
void setup ()
{
attachInterrupt (INTERRUPT, isr, CHANGE); // interrupt 0 is pin 2, interrupt 1 is pin 3
pinMode (MOTORA, OUTPUT);
pinMode (DIRECTIONA, OUTPUT);
pinMode (MOTORB, OUTPUT);
pinMode (DIRECTIONB, OUTPUT);
} // end of setup
byte phase;
unsigned long start;
int time_to_go;
void loop ()
{
analogWrite (MOTORA, 200);
analogWrite (MOTORB, 200);
start = millis ();
// check current drain
while (millis () - start < time_to_go)
{
if (analogRead (0) > 325) // > 1.46 amps
break;
}
switch (phase++ & 3)
{
case 0:
digitalWrite (DIRECTIONA, 1);
digitalWrite (DIRECTIONB, 1);
time_to_go = TIME_FORWARDS;
break;
case 1:
// turn
digitalWrite (DIRECTIONA, 1);
digitalWrite (DIRECTIONB, 0);
time_to_go = TIME_TURN;
break;
case 2:
digitalWrite (DIRECTIONA, 0);
digitalWrite (DIRECTIONB, 0);
time_to_go = TIME_BACKWARDS;
break;
case 3:
digitalWrite (DIRECTIONA, 0);
digitalWrite (DIRECTIONB, 1);
time_to_go = TIME_TURN;
break;
} // end of switch
analogWrite (MOTORA, 0);
analogWrite (MOTORB, 0);
delay (500);
} // end of loop
This is what happens when I used pluged the DC connector to the Arduino:
As you saw, my rover didn't work correctly. I believe it is because I didn't program and attach the other 2 motors. My Rover 5 robot chassis has 4 motors. After looking at the link this guy bought his Rover 5 at, I realized his was a 2WD.