Here is the code for the uBotino and the Robot Builder’s Shield to drive 2 geared motors using the onboard H-bridge:
#define Motor_1_PWM 5 // digital pin 5 // Right Motor #define Motor_1_Dir 4 // digital pin 4 // change to 8 if you're using uBotino #define Motor_2_PWM 6 // digital pin 6 // Left Motor #define Motor_2_Dir 7 // digital pin 7 void setup() { // set motor pins as output and LOW so the motors are breaked pinMode(Motor_1_PWM, OUTPUT); pinMode(Motor_1_Dir, OUTPUT); pinMode(Motor_2_PWM, OUTPUT); pinMode(Motor_2_Dir, OUTPUT); digitalWrite(Motor_1_PWM, LOW); digitalWrite(Motor_1_Dir, LOW); digitalWrite(Motor_2_PWM, LOW); digitalWrite(Motor_2_Dir, LOW); } void Forward(){ digitalWrite(Motor_1_Dir, LOW); // forward digitalWrite(Motor_2_Dir, LOW); // forward analogWrite(Motor_1_PWM, speed1); // analogWrite(Motor_2_PWM, speed2); // return; } void Reverse(){ digitalWrite(Motor_1_Dir, HIGH); // reverse digitalWrite(Motor_2_Dir, HIGH); // reverse analogWrite(Motor_1_PWM, 255-speed1); // analogWrite(Motor_2_PWM, 255-speed2); // return; } void Right(){ digitalWrite(Motor_1_Dir, HIGH); // reverse digitalWrite(Motor_2_Dir, LOW); // forward analogWrite(Motor_1_PWM, 255-speed1); // analogWrite(Motor_2_PWM, speed2); // return; } void Left(){ digitalWrite(Motor_1_Dir, LOW); // forward digitalWrite(Motor_2_Dir, HIGH); // reverse analogWrite(Motor_1_PWM, speed1); // analogWrite(Motor_2_PWM, 255-speed2); // return; } void Stop() { digitalWrite(Motor_1_PWM, LOW); digitalWrite(Motor_1_Dir, LOW); digitalWrite(Motor_2_PWM, LOW); digitalWrite(Motor_2_Dir, LOW); return; }
As you can see, these are simple functions, like motors On, motors Off. If you want to change the speed, you can pass the speed values to the Forward function like this:
void Forward(byte speed1, byte speed2){ digitalWrite(Motor_1_Dir, LOW); // forward digitalWrite(Motor_2_Dir, LOW); // forward analogWrite(Motor_1_PWM, speed1); // analogWrite(Motor_2_PWM, speed2); // return; }
Then you can simply call:
Forward(250,250);