DAISEN eDES see: http://mbed.org/users/okini3939/notebook/daisen-edes/

eDES2WD.h

Committer:
okini3939
Date:
2013-06-17
Revision:
2:ef1c45486022
Parent:
1:2a38c9027bd1

File content as of revision 2:ef1c45486022:

/**
 * DAISEN eDES 2WD driver for mbed
 * Copyright (c) 2012 Suga
 * Released under the MIT License: http://mbed.org/license/mit
 */

/** @file
 * @brief DAISEN eDES 2WD driver for mbed
 */

#define SUB_ADRS    0x30

#define I2C_WCMD_RESET    0x00
#define I2C_WCMD_START    0x01
#define I2C_WCMD_ENQ    0x09

#define I2C_WCMD_IO        0x10
#define I2C_WCMD_SENSOR    0x11
#define I2C_WCMD_MOTOR    0x12
#define I2C_WCMD_LED    0x13
#define I2C_WCMD_LAT    0x14
#define I2C_WCMD_T        0x15
#define I2C_WCMD_V        0x16
#define I2C_WCMD_DIR    0x17
#define I2C_WCMD_EG002    0x18
#define I2C_WCMD_EG003    0x19
#define I2C_WCMD_EG009    0x1A
#define I2C_WCMD_LDM    0x1B

#define I2C_RCMD_IO        0x80
#define I2C_RCMD_SENSOR    0x81
#define I2C_RCMD_MOTOR    0x82
#define I2C_RCMD_LED    0x83
#define I2C_RCMD_LAT    0x84
#define I2C_RCMD_T        0x85
#define I2C_RCMD_V        0x86
#define I2C_RCMD_DIR    0x87

#define MAX_PWM            6
#define MAX_COL            16

#define MAX_CN        10

#define eDES2WD_ID 1

enum eDES2WD_LED {
    LED_GREEN = 0,
    LED_RED,
    LED_LEFT,
    LED_RIGHT,
};

enum eDES2WD_SENSOR {
    SENSOR_WALL_CENTER = 0,
    SENSOR_WALL_LEFT,
    SENSOR_WALL_RIGHT,
    SENSOR_FLOOR_CENTER,
    SENSOR_FLOOR_LEFT,
    SENSOR_FLOOR_RIGHT,
};

class eDES2WD {
public:
    eDES2WD (I2C &i2c);
    void reset (int id);
    void motor (int id, int l_speed, int r_speed);
    void set_led (int id, eDES2WD_LED led, int sw);

    unsigned int get_sensor(int id, eDES2WD_SENSOR cn, unsigned int *dat);
    int get_lat(int id, int cno);

private:
    I2C _i2c;

};