/*
* Arduino code for SN754410 H-bridge
* motor driver control.
* copyleft Feb. 2010, Fabian Winkler
* Documentation:
* http://web.ics.purdue.edu/~fwinkler/616/sn754410_Arduino.pdf
*
*/
int speedPin = 3; // H-bridge enable pin for speed control
int motor1APin = 6; // H-bridge leg 1
int motor2APin = 7; // H-bridge leg 2
int ledPin = 13; // status LED
int speed_value_motor1; // value for motor speed
void setup() {
// set digital i/o pins as outputs:
pinMode(speedPin, OUTPUT);
pinMode(motor1APin, OUTPUT);
pinMode(motor2APin, OUTPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, HIGH); // status LED is on
// put motor in forward motion
digitalWrite(motor1APin, LOW); // set leg 1 of the H-bridge low
digitalWrite(motor2APin, HIGH); // set leg 2 of the H-bridge high
// just invert the above values for reverse motion,
// i.e. motor1APin = HIGH and motor2APin = LOW
// control the speed 0-255
speed_value_motor1 = 127; // half speed (No slower for gearheads)
analogWrite(speedPin, speed_value_motor1); // output speed as PWM value
delay(3000);
speed_value_motor1 = 255; // full speed
analogWrite(speedPin, speed_value_motor1); // output speed as PWM value
delay(2000);
// Stop
digitalWrite(ledPin, LOW); // status LED is off
digitalWrite(motor1APin, HIGH); // set leg 1 of the H-bridge low
digitalWrite(motor2APin, HIGH); // set leg 2 of the H-bridge high
delay(2000);
// Reverse
digitalWrite(ledPin, HIGH); // status LED is on
digitalWrite(motor1APin, HIGH); // set leg 1 of the H-bridge low
digitalWrite(motor2APin, LOW); // set leg 2 of the H-bridge high
delay(2000);
// Stop
digitalWrite(ledPin, LOW); // status LED is off
digitalWrite(motor1APin, HIGH); // set leg 1 of the H-bridge low
digitalWrite(motor2APin, HIGH); // set leg 2 of the H-bridge high
delay(500);
}
|