You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
2.5 KiB
102 lines
2.5 KiB
/****************************************************************** |
|
This is the library for the Adafruit Motor Shield V2 for Arduino. |
|
It supports DC motors & Stepper motors with microstepping as well |
|
as stacking-support. It is *not* compatible with the V1 library! |
|
|
|
It will only work with https://www.adafruit.com/products/1483 |
|
|
|
Adafruit invests time and resources providing this open |
|
source code, please support Adafruit and open-source hardware |
|
by purchasing products from Adafruit! |
|
|
|
Written by Limor Fried/Ladyada for Adafruit Industries. |
|
BSD license, check license.txt for more information. |
|
All text above must be included in any redistribution. |
|
******************************************************************/ |
|
|
|
#ifndef _Adafruit_MotorShield_h_ |
|
#define _Adafruit_MotorShield_h_ |
|
|
|
#include <inttypes.h> |
|
#include <Wire.h> |
|
#include "utility/Adafruit_MS_PWMServoDriver.h" |
|
|
|
//#define MOTORDEBUG |
|
|
|
#define MICROSTEPS 16 // 8 or 16 |
|
|
|
#define MOTOR1_A 2 |
|
#define MOTOR1_B 3 |
|
#define MOTOR2_A 1 |
|
#define MOTOR2_B 4 |
|
#define MOTOR4_A 0 |
|
#define MOTOR4_B 6 |
|
#define MOTOR3_A 5 |
|
#define MOTOR3_B 7 |
|
|
|
#define FORWARD 1 |
|
#define BACKWARD 2 |
|
#define BRAKE 3 |
|
#define RELEASE 4 |
|
|
|
#define SINGLE 1 |
|
#define DOUBLE 2 |
|
#define INTERLEAVE 3 |
|
#define MICROSTEP 4 |
|
|
|
class Adafruit_MotorShield; |
|
|
|
class Adafruit_DCMotor |
|
{ |
|
public: |
|
Adafruit_DCMotor(void); |
|
friend class Adafruit_MotorShield; |
|
void run(uint8_t); |
|
void setSpeed(uint8_t); |
|
|
|
private: |
|
uint8_t PWMpin, IN1pin, IN2pin; |
|
Adafruit_MotorShield *MC; |
|
uint8_t motornum; |
|
}; |
|
|
|
class Adafruit_StepperMotor { |
|
public: |
|
Adafruit_StepperMotor(void); |
|
friend class Adafruit_MotorShield; |
|
|
|
void step(uint16_t steps, uint8_t dir, uint8_t style = SINGLE); |
|
void setSpeed(uint16_t); |
|
uint8_t onestep(uint8_t dir, uint8_t style); |
|
void release(void); |
|
uint32_t usperstep; |
|
|
|
private: |
|
uint8_t PWMApin, AIN1pin, AIN2pin; |
|
uint8_t PWMBpin, BIN1pin, BIN2pin; |
|
uint16_t revsteps; // # steps per revolution |
|
uint8_t currentstep; |
|
Adafruit_MotorShield *MC; |
|
uint8_t steppernum; |
|
}; |
|
|
|
class Adafruit_MotorShield |
|
{ |
|
public: |
|
Adafruit_MotorShield(uint8_t addr = 0x60); |
|
friend class Adafruit_DCMotor; |
|
void begin(uint16_t freq = 1600); |
|
|
|
void setPWM(uint8_t pin, uint16_t val); |
|
void setPin(uint8_t pin, boolean val); |
|
Adafruit_DCMotor *getMotor(uint8_t n); |
|
Adafruit_StepperMotor *getStepper(uint16_t steps, uint8_t n); |
|
private: |
|
uint8_t _addr; |
|
uint16_t _freq; |
|
Adafruit_DCMotor dcmotors[4]; |
|
Adafruit_StepperMotor steppers[2]; |
|
Adafruit_MS_PWMServoDriver _pwm; |
|
}; |
|
|
|
#endif
|
|
|