diff options
Diffstat (limited to 'peripheral/libupm/src/adafruitms1438/adafruitms1438.h')
-rw-r--r-- | peripheral/libupm/src/adafruitms1438/adafruitms1438.h | 251 |
1 files changed, 0 insertions, 251 deletions
diff --git a/peripheral/libupm/src/adafruitms1438/adafruitms1438.h b/peripheral/libupm/src/adafruitms1438/adafruitms1438.h deleted file mode 100644 index 1f00ac9..0000000 --- a/peripheral/libupm/src/adafruitms1438/adafruitms1438.h +++ /dev/null @@ -1,251 +0,0 @@ -/* - * Author: Jon Trulson <jtrulson@ics.com> - * Copyright (c) 2015 Intel Corporation. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ -#pragma once - -#include <stdint.h> -#include <sys/time.h> - -#include <string> -#include <mraa/i2c.h> -#include <mraa/gpio.h> - -#include "pca9685.h" - -#define ADAFRUITMS1438_I2C_BUS 0 -#define ADAFRUITMS1438_DEFAULT_I2C_ADDR 0x60 - -namespace upm { - - /** - * @brief Adafruit Motor Shield 1438 library - * @defgroup adafruitms1438 libupm-adafruitms1438 - * @ingroup adafruit i2c motor - */ - - /** - * @library adafruitms1438 - * @sensor adafruitms1438 - * @comname Adafruit Motor Shield - * @type motor - * @man adafruit - * @web http://www.adafruit.com/products/1438 - * @con i2c - * - * @brief API for the AdafruitMS1438 Motor Shield - * - * This class implements support for the stepper and DC motors that - * can be connected to this Motor Shield. - * Note: the two servo connections are not controlled by the PCA9685 - * controller (or this class). They are connected directly to digital - * PWM pins 9 and 10 on the Arduino* breakout board. - * - * @image html adafruitms1438.jpg - * An example using a DC motor connected to M3 - * @snippet adafruitms1438.cxx Interesting - * An example using a stepper motor connected to M1 & M2 - * @snippet adafruitms1438-stepper.cxx Interesting - */ - class AdafruitMS1438 { - public: - - /** - * Enum to specify the direction of a motor - */ - typedef enum { - DIR_NONE = 0x00, - DIR_CW = 0x01, - DIR_CCW = 0x02 - } DIRECTION_T; - - /** - * Enum to specify a DC motor - */ - typedef enum { - MOTOR_M1 = 0, - MOTOR_M2 = 1, - MOTOR_M3 = 2, - MOTOR_M4 = 3 - } DCMOTORS_T; - - /** - * Enum to specify a stepper motor - */ - typedef enum { - STEPMOTOR_M12 = 0, - STEPMOTOR_M34 = 1 - } STEPMOTORS_T; - - /** - * AdafruitMS1438 constructor - * - * @param bus I2C bus to use - * @param address Address for this sensor - */ - AdafruitMS1438(int bus, uint8_t address = ADAFRUITMS1438_DEFAULT_I2C_ADDR); - - /** - * AdafruitMS1438 destructor - */ - ~AdafruitMS1438(); - - /** - * Returns the number of milliseconds elapsed since initClock(...) - * was last called. - * - * @return Elapsed milliseconds - */ - uint32_t getMillis(STEPMOTORS_T motor); - - /** - * Resets the clock - * - */ - void initClock(STEPMOTORS_T motor); - - /** - * Sets the PWM period. Note: this applies to all PWM channels. - * - * @param hz Sets the PWM period - */ - void setPWMPeriod(float hz); - - /** - * Enables PWM output for a motor - * - * @param motor DC motor to enable - */ - void enableMotor(DCMOTORS_T motor); - - /** - * Disables PWM output for a motor - * - * @param motor DC motor to disable - */ - void disableMotor(DCMOTORS_T motor); - - /** - * Enables output for a stepper motor - * - * @param motor Stepper motor to enable - */ - void enableStepper(STEPMOTORS_T motor); - - /** - * Disable output for a stepper motor - * - * @param motor Stepper motor to disable - */ - void disableStepper(STEPMOTORS_T motor); - - /** - * set the speed of a DC motor. Values can range from 0 (off) to - * 100 (full speed). - * - * @param motor the DC motor to configure - * @param speed speed to set the motor to - */ - void setMotorSpeed(DCMOTORS_T motor, int speed); - - /** - * Sets the speed of a stepper in revolutions per minute (RPM) - * - * @param motor DC motor to configure - * @param speed Speed to set the motor to - */ - void setStepperSpeed(STEPMOTORS_T motor, int speed); - - /** - * Sets the direction of a DC motor, clockwise or counterclockwise - * - * @param motor DC motor to configure - * @param dir Direction to set the motor in - */ - void setMotorDirection(DCMOTORS_T motor, DIRECTION_T dir); - - /** - * Sets the direction of a stepper motor, clockwise or counterclockwise - * - * @param motor Stepper motor to configure - * @param dir Direction to set the motor in - */ - void setStepperDirection(STEPMOTORS_T motor, DIRECTION_T dir); - - /** - * Sets a stepper motor configuration - * - * @param motor Stepper motor to configure - * @param stepsPerRev Number of steps to complete a full revolution - */ - void stepConfig(STEPMOTORS_T motor, unsigned int stepsPerRev); - - /** - * Steps a stepper motor a specified number of steps - * - * @param motor Stepper motor to step - * @param steps Number of steps to move the stepper motor - */ - void stepperSteps(STEPMOTORS_T motor, unsigned int steps); - - private: - // SWIG will generate a warning for these 'nested structs'; however, - // it can be ignored as these structs are never exposed. - - // struct to hold mappings of DC motors - typedef struct { - int pwm; - int in1; - int in2; - } DC_PINMAP_T; - - // struct to hold mappings of stepper motors - typedef struct { - int pwmA; - int in1A; - int in2A; - int pwmB; - int in1B; - int in2B; - } STEPPER_PINMAP_T; - - // struct to hold information about each stepper - typedef struct { - int stepsPerRev; // steps per revolution - int currentStep; // current step number - uint32_t stepDelay; // delay between steps - int stepDirection; // direction to step - struct timeval startTime; // starting time - } STEPPER_CONFIG_T; - - void setupPinMaps(); - void stepperStep(STEPMOTORS_T motor); - - DC_PINMAP_T m_dcMotors[4]; - STEPPER_PINMAP_T m_stepMotors[2]; - STEPPER_CONFIG_T m_stepConfig[2]; - - PCA9685 *m_pca9685; - }; -} - - |