Adafruit-MotorShield

Dependents:   Adafruit-MortorShield_sample Low_Power_Long_Distance_IR_Vision_Robot Low_Power_Long_Distance_IR_Vision_Robot

Revision:
0:3d17b246f7fe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Adafruit_MotorShield.h	Wed Oct 15 02:16:15 2014 +0000
@@ -0,0 +1,105 @@
+/******************************************************************
+ 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_PWMServoDriver.h"
+#include "Adafruit_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, steppingcounter;
+
+ 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);
+    Adafruit_MotorShield(PinName sda, PinName scl, uint8_t addr = 0x60 << 1);
+    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);
+    void setPin(uint8_t pin, uint16_t 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_PWMServoDriver _pwm;
+};
+
+#endif