中継機能つけた受け取りオムニ
Dependencies: mbed MultiSerial
main.cpp@3:1f1498403eec, 2014-08-19 (annotated)
- Committer:
- Hatter
- Date:
- Tue Aug 19 11:58:06 2014 +0000
- Revision:
- 3:1f1498403eec
- Parent:
- 2:d0de0fab161f
- Child:
- 4:5da566692b79
???????????????????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Hatter | 0:fddd018033fb | 1 | /* |
Hatter | 0:fddd018033fb | 2 | * 4WD_OMNI_simple by Tomoki Hokida |
Hatter | 0:fddd018033fb | 3 | * Simple Type |
Hatter | 0:fddd018033fb | 4 | * |
Hatter | 0:fddd018033fb | 5 | * motor pins piar |
Hatter | 0:fddd018033fb | 6 | * motor(p21,p22):motor(p23,p24) |
Hatter | 0:fddd018033fb | 7 | * motor(p25,p26):motor(p27,p28) |
Hatter | 0:fddd018033fb | 8 | * 通信中継用 |
Hatter | 0:fddd018033fb | 9 | * data 5~8 arm |
Hatter | 0:fddd018033fb | 10 | * data 1~4:omni |
Hatter | 0:fddd018033fb | 11 | * reset 0 |
Hatter | 0:fddd018033fb | 12 | */ |
Hatter | 0:fddd018033fb | 13 | |
Hatter | 0:fddd018033fb | 14 | #include "mbed.h" |
Hatter | 0:fddd018033fb | 15 | #include <math.h> |
Hatter | 0:fddd018033fb | 16 | #include "RawSerial.h" |
Hatter | 0:fddd018033fb | 17 | |
Hatter | 3:1f1498403eec | 18 | #define DATA_NUM 4 //DATA_NUM[byte]通信 |
Hatter | 3:1f1498403eec | 19 | #define MY_KEYCODE 0xAA//keycode |
Hatter | 3:1f1498403eec | 20 | #define EN_KEYCODE 0xAA//keycode |
Hatter | 3:1f1498403eec | 21 | #define KEY 0//number of first data |
Hatter | 3:1f1498403eec | 22 | #define CHECK DATA_NUM-1//number of last data |
Hatter | 3:1f1498403eec | 23 | |
Hatter | 0:fddd018033fb | 24 | DigitalOut check(LED1); |
Hatter | 0:fddd018033fb | 25 | BusOut motors(p21,p22,p23,p24,p25,p26,p27,p28); |
Hatter | 0:fddd018033fb | 26 | |
Hatter | 0:fddd018033fb | 27 | I2C armMbed(p9,p10); |
Hatter | 0:fddd018033fb | 28 | RawSerial xbee(p13,p14); |
Hatter | 0:fddd018033fb | 29 | |
Hatter | 0:fddd018033fb | 30 | //i2c init |
Hatter | 0:fddd018033fb | 31 | int addr = 0x01; |
Hatter | 0:fddd018033fb | 32 | char buff[1]; |
Hatter | 0:fddd018033fb | 33 | |
Hatter | 3:1f1498403eec | 34 | //serial init |
Hatter | 3:1f1498403eec | 35 | volatile uint8_t INdata[DATA_NUM]={0}; |
Hatter | 0:fddd018033fb | 36 | |
Hatter | 0:fddd018033fb | 37 | //armMbed.frequency(10000); |
Hatter | 0:fddd018033fb | 38 | |
Hatter | 0:fddd018033fb | 39 | void getData() //serial xbee to mbed |
Hatter | 3:1f1498403eec | 40 | { |
Hatter | 3:1f1498403eec | 41 | static uint8_t RX=0, i; |
Hatter | 3:1f1498403eec | 42 | static uint8_t RXdata[DATA_NUM]={EN_KEYCODE}; |
Hatter | 3:1f1498403eec | 43 | static uint8_t RX_CHECKCODE=0; |
Hatter | 3:1f1498403eec | 44 | RXdata[RX] = xbee.getc(); |
Hatter | 3:1f1498403eec | 45 | if(RXdata[KEY]==EN_KEYCODE){ |
Hatter | 3:1f1498403eec | 46 | RX++; |
Hatter | 3:1f1498403eec | 47 | } |
Hatter | 3:1f1498403eec | 48 | |
Hatter | 3:1f1498403eec | 49 | if(RX==CHECK){ |
Hatter | 3:1f1498403eec | 50 | for(i=KEY+1, RX_CHECKCODE=0; i<CHECK; i++){ |
Hatter | 3:1f1498403eec | 51 | RX_CHECKCODE ^= RXdata[i]; |
Hatter | 3:1f1498403eec | 52 | }//CHECKCODE作成 |
Hatter | 3:1f1498403eec | 53 | } |
Hatter | 3:1f1498403eec | 54 | if(RX >= DATA_NUM){ |
Hatter | 3:1f1498403eec | 55 | if(RXdata[CHECK]==RX_CHECKCODE){ |
Hatter | 3:1f1498403eec | 56 | INdata[1] = RXdata[1]; |
Hatter | 3:1f1498403eec | 57 | INdata[2] = RXdata[2]; |
Hatter | 3:1f1498403eec | 58 | } |
Hatter | 3:1f1498403eec | 59 | RX=0; |
Hatter | 3:1f1498403eec | 60 | } |
Hatter | 3:1f1498403eec | 61 | |
Hatter | 3:1f1498403eec | 62 | buff[0]=INdata[1]; |
Hatter | 0:fddd018033fb | 63 | armMbed.write(addr,buff,1); |
Hatter | 3:1f1498403eec | 64 | buff[0]=0; |
Hatter | 0:fddd018033fb | 65 | } |
Hatter | 0:fddd018033fb | 66 | |
Hatter | 0:fddd018033fb | 67 | int main() |
Hatter | 0:fddd018033fb | 68 | { |
Hatter | 2:d0de0fab161f | 69 | xbee.attach(&getData, RawSerial::RxIrq); |
Hatter | 0:fddd018033fb | 70 | |
Hatter | 0:fddd018033fb | 71 | for(;;){ |
Hatter | 3:1f1498403eec | 72 | if(INdata[2]==0x0) motors = 0; |
Hatter | 3:1f1498403eec | 73 | if(INdata[2]&0x10) motors = 0x05; //p21,p23 |
Hatter | 3:1f1498403eec | 74 | if(INdata[2]&0x20) motors = 0x0A; //p22,p24 |
Hatter | 3:1f1498403eec | 75 | if(INdata[2]&0x40) motors = 0x50; //p25,p27 |
Hatter | 3:1f1498403eec | 76 | if(INdata[2]&0x80) motors = 0xA0; //p26,p28 |
Hatter | 0:fddd018033fb | 77 | |
Hatter | 0:fddd018033fb | 78 | check = !check; |
Hatter | 0:fddd018033fb | 79 | } |
Hatter | 0:fddd018033fb | 80 | } |