Suga koubou
/
eDES2WD_test
http://mbed.org/users/okini3939/notebook/daisen-edes/
Embed:
(wiki syntax)
Show/hide line numbers
eDES2WD.cpp
00001 #include "mbed.h" 00002 #include "eDES2WD.h" 00003 00004 I2C i2c(p28, p27); 00005 00006 void eDES2WD_reset (int id) { 00007 char cmd[] = {1, I2C_WCMD_RESET}; 00008 int adrs; 00009 00010 if (0 < id){ 00011 adrs = SUB_ADRS + (id - 1) * 2; 00012 } else { 00013 adrs = 0; 00014 } 00015 i2c.write(adrs, cmd, 2); 00016 } 00017 00018 void eDES2WD_motor (int id, int l_speed, int r_speed) { 00019 char cmd[] = {3, I2C_WCMD_MOTOR, 0, 0}; 00020 int adrs; 00021 00022 cmd[2] = l_speed; 00023 cmd[3] = r_speed; 00024 if (0 < id){ 00025 adrs = SUB_ADRS + (id - 1) * 2; 00026 } else { 00027 adrs = 0; 00028 } 00029 i2c.write(adrs, cmd, 4); 00030 } 00031 00032 void eDES2WD_set_led (int id, int led, int sw) { 00033 char cmd[] = {3, I2C_WCMD_LED, 0, 0}; 00034 int adrs; 00035 00036 cmd[2] = led; 00037 cmd[3] = sw; 00038 if (0 < id){ 00039 adrs = SUB_ADRS + (id - 1) * 2; 00040 } else { 00041 adrs = 0; 00042 } 00043 i2c.write(adrs, cmd, 4); 00044 } 00045 00046 unsigned int eDES2WD_get_sensor(int id, int cn, unsigned int *dat) { 00047 char cmd[] = {2, I2C_RCMD_SENSOR, 0}; 00048 char recv[MAX_CN]; 00049 unsigned int d; 00050 int adrs; 00051 int nmax, n; 00052 00053 if (id < 1 || 9 < id) return(0); 00054 adrs = SUB_ADRS + (id - 1) * 2; 00055 nmax = cn < MAX_CN ? 2 : MAX_CN * 2 + 2; 00056 00057 cmd[2] = cn; 00058 i2c.write(adrs, cmd, 3); 00059 i2c.read(adrs | 1, recv, nmax); 00060 if (nmax == 2){ 00061 d = recv[0] | (recv[1] << 8); 00062 return d; 00063 } else { 00064 for (n = 0; n < MAX_CN; n++){ 00065 d = recv[0] | (recv[1] << 8); 00066 dat[n] = d; 00067 } 00068 // gSUB_LED_G = recv[20]; 00069 // gSUB_LED_R = recv[21]; 00070 } 00071 return 0; 00072 } 00073 00074 int eDES2WD_get_lat(int id, int cno) { 00075 char cmd[] = {2, I2C_RCMD_LAT, 0}; 00076 char recv[MAX_CN]; 00077 int adrs; 00078 00079 if (id < 1 || 9 < id) return(false); 00080 if (MAX_CN - 1 < cno) return(false); 00081 adrs = SUB_ADRS + (id - 1) * 2; 00082 00083 cmd[2] = cno; 00084 i2c.write(adrs, cmd, 3); 00085 i2c.read(adrs | 1, recv, 1); 00086 return recv[0]; 00087 }
Generated on Mon Jul 18 2022 16:56:39 by 1.7.2