Motor Class

The motor class controls the four DC motors that were used in this project. It was designed to work with the Adafruit Motor Shield


.cpp Code

#include "motor.h"
#include <Adafruit_MotorShield.h> //wrapper library
motor :: motor (Adafruit_MotorShield*shieldPtr, byte motornumber, boolean polarity){ m_motornumber = motornumber; //changes the motor number, based on what number is entered m_polarity = polarity; //polarity check, negative and positive leads connection m_motor = shieldPtr -> getMotor(motornumber); //a pointer using the adafruit motorshield library m_command =0; m_dutyCycle =0; }
void motor :: setDrive(unsigned int dutyCycle, unsigned int command){ m_dutyCycle = dutyCycle; //PWM that sets the speed of the motor m_command = command; //command used for FORWARD,BACKWARD,or RELEASE if(command == RELEASE) m_motor -> run(RELEASE); else if((m_polarity && m_command == FORWARD)||(!m_polarity && m_command == BACKWARD)) m_motor->run(FORWARD); //checks the polarity and sets the wheel to move accordingly else m_motor->run(BACKWARD); m_motor ->setSpeed(m_dutyCycle); }
unsigned int Motor :: getDrive(){ return(m_dutyCycle); //whats the speed from 0-255 }
void Motor::stop(){ m_motor->setSpeed(0); //stop the wheels }

.h Code

#include <Adafruit_MotorShield.h>
#ifndef motor_h //if this library isn't included already, include
#define motor_h
class motor{ private: byte m_motornumber; boolean m_polarity; Adafruit_DCMotor*m_motor; //accesses the Adafruit library with a pointer unsigned int m_command; unsigned int m_dutyCycle;
public: motor(Adafruit_MotorShield*shieldPtr,byte motorNumber, boolean polarity); void setDrive(unsigned int drive, unsigned int command); void stop(); unsigned int getDrive(); };
#endif