This is a driver to control the SD20 20 Channel I2C to Servo Driver Chip from www.robot-electronics.co.uk (http://www.robot-electronics.co.uk/htm/sd20tech.htm). This driver will allow a servo channel to be started up, stopped and the duty cycle altered in standard mode. No attempt to include the extended mode is included.
SD20.h
- Committer:
- sk398
- Date:
- 2016-02-21
- Revision:
- 2:b6789ad2af2b
- Parent:
- 1:6557cf755742
- Child:
- 6:973d6a66dbf7
File content as of revision 2:b6789ad2af2b:
/* ##################################################################### SD20.h ------ Surface Ship, Group 5 --------------------- Written by: Steven Kay Date: February 2016 Function: This Version: 1.0 Version History --------------- 1.1 rgdfgdfgdfggdfgdg 1.0 gdgddfdddgd ##################################################################### */ #ifndef SD20_H #define SD20_H /* I2C Parameters*/ // SD20 I2C Address #define SD20_ADDRESS 0xC2 // SCL Frequency #define BUS_FREQ 100000 // Output Buffer Length #define OUT_BUF_LEN 2 /* SD20 Internal Register Map */ #define SOFTWARE_REVISION_REG 0x00 #define SERVO_1_REG 0x01 #define SERVO_2_REG 0x02 #define SERVO_3_REG 0x03 #define SERVO_4_REG 0x04 #define SERVO_5_REG 0x05 #define SERVO_6_REG 0x06 #define SERVO_7_REG 0x07 #define SERVO_8_REG 0x08 #define SERVO_9_REG 0x09 #define SERVO_10_REG 0x10 #define SERVO_11_REG 0x11 #define SERVO_12_REG 0x12 #define SERVO_13_REG 0x13 #define SERVO_14_REG 0x14 #define SERVO_15_REG 0x15 #define SERVO_16_REG 0x16 #define SERVO_17_REG 0x17 #define SERVO_18_REG 0x18 #define SERVO_19_REG 0x19 #define SERVO_20_REG 0x20 #define STD_ETD_MODE_CTRL 0x21 #define ETD_MODE_OFST_HIGH 0x22 #define ETD_MODE_OFST_LOW 0x23 /* SD20 Channel constants*/ #define CHANNEL_1 1 #define CHANNEL_2 2 #define CHANNEL_3 3 #define CHANNEL_4 4 #define CHANNEL_5 5 #define CHANNEL_6 6 #define CHANNEL_7 7 #define CHANNEL_8 8 #define CHANNEL_9 9 #define CHANNEL_10 10 #define CHANNEL_11 11 #define CHANNEL_12 12 #define CHANNEL_13 13 #define CHANNEL_14 14 #define CHANNEL_15 15 #define CHANNEL_16 16 #define CHANNEL_17 17 #define CHANNEL_18 18 #define CHANNEL_19 19 #define CHANNEL_20 20 #define CHANNEL_STOP 0x00 #define CHANNEL_START 0x01 #define STD_MODE 0x00 class SD20 { private: I2C *_bus; public: /** Create a SD20 Constructor, connected over I2C Master connection * * parameter bus: I2C object */ SD20(I2C *bus); /** * Start/Stop PWM output on specificed channel (Standard mode) * * parameter Channel: Servo Channel to be stopped * parameter Start: Select whether to start[1] or stop [0] a given channel * parameter mode: Select whether debug mode[0] and prints result or implementation mode [1] * where print commands are skipped to save operational time */ int StartStopChannel(uint8_t ServoChannel, bool Start); /** * Update PWM output on specificed channel (Standard mode) * * parameter DataOutput: Structured as follows: [Servo Channel[1:20], Pulse Width[0x00:0xFF]] * parameter mode: Select whether debug mode[0] and prints result or implementation mode [1] * where print commands are skipped to save operational time */ int UpdateChannel(char *DataOutput); int SetStandardMode(); }; #endif