Arduino/MonsterMotorShield/UnoCode

< Arduino < MonsterMotorShield

Start Coding

You can find the original example file from Sparkfun here.

Starting Point

The best place to start tweaking the code is the main loop function.

void loop()
{                            
 motorGo(0, CCW, 0);        //Motor1
 motorGo(1, CW,  100);      //Motor2
 delay(2000);               //This delay determines the time(ms) the motor runs for.

//Turn 1

Copy to Arduino IDE

Copy this code over to the Arduino IDE and tweaking things. be an engineer

#define BRAKEVCC 0
#define CW   1
#define CCW  2
#define BRAKEGND 3
#define CS_THRESHOLD 100

int inApin[2] = {7, 4}; // INA: Clockwise input int inBpin[2] = {8, 9}; // INB: Counter-clockwise input int pwmpin[2] = {5, 6}; // PWM input int cspin[2] = {2, 3}; // CS: Current sense ANALOG input int enpin[2] = {0, 1}; // EN: Status of switches output (Analog pin) int statpin = 13;

void setup() { Serial.begin(9600); pinMode(statpin, OUTPUT);

// Initialize digital pins as outputs for (int i=0; i<2; i++) { pinMode(inApin[i], OUTPUT); pinMode(inBpin[i], OUTPUT); pinMode(pwmpin[i], OUTPUT); }

// Initialize braked for (int i=0; i<2; i++) { digitalWrite(inApin[i], LOW); digitalWrite(inBpin[i], LOW); } }

/*---------------------------- pmw value has to be < 1023. CCW=CounterClockwise CW=ClockWise -----------------------------*/ void loop() { motorGo(0, CCW, 0); //Motor1 motorGo(1, CW, 100); //Motor2 delay(2000); //This delay determines the time(ms) the motor runs for.

//Turn 1 motorGo(0, CW, 600); // The higher the pwm value, the quicker the car turns motorGo(1, CW, 180); // The higher the pwm value, the sharper the car turns delay(1000);

motorGo(0, CCW, 0); motorGo(1, CW, 100); delay(8000);

if ((analogRead(cspin[0]) < CS_THRESHOLD) && (analogRead(cspin[1]) < CS_THRESHOLD)) digitalWrite(statpin, HIGH); }

void motorOff(int motor) { // Initialize braked for (int i=0; i<2; i++) { digitalWrite(inApin[i], LOW); digitalWrite(inBpin[i], LOW); } analogWrite(pwmpin[motor], 0); }

void motorGo(uint8_t motor, uint8_t direct, uint8_t pwm) { if (motor <= 1) { if (direct <=4) { // Set inA[motor] if (direct <=1) digitalWrite(inApin[motor], HIGH); else digitalWrite(inApin[motor], LOW);

// Set inB[motor] if ((direct==0)||(direct==2)) digitalWrite(inBpin[motor], HIGH); else digitalWrite(inBpin[motor], LOW); analogWrite(pwmpin[motor], pwm); } } }
This article is issued from Wikiversity - version of the Saturday, June 21, 2014. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.