中継機能つけた受け取りオムニ
Dependencies: mbed MultiSerial
main.cpp@4:5da566692b79, 2014-08-20 (annotated)
- Committer:
- Hatter
- Date:
- Wed Aug 20 05:11:21 2014 +0000
- Revision:
- 4:5da566692b79
- Parent:
- 3:1f1498403eec
- Child:
- 5:82d4d00847dd
meh
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 | 4:5da566692b79 | 31 | const int addr = 0x01; |
Hatter | 0:fddd018033fb | 32 | |
Hatter | 3:1f1498403eec | 33 | //serial init |
Hatter | 3:1f1498403eec | 34 | volatile uint8_t INdata[DATA_NUM]={0}; |
Hatter | 0:fddd018033fb | 35 | |
Hatter | 0:fddd018033fb | 36 | //armMbed.frequency(10000); |
Hatter | 0:fddd018033fb | 37 | |
Hatter | 0:fddd018033fb | 38 | void getData() //serial xbee to mbed |
Hatter | 3:1f1498403eec | 39 | { |
Hatter | 4:5da566692b79 | 40 | char buff[1]; |
Hatter | 4:5da566692b79 | 41 | |
Hatter | 3:1f1498403eec | 42 | static uint8_t RX=0, i; |
Hatter | 3:1f1498403eec | 43 | static uint8_t RXdata[DATA_NUM]={EN_KEYCODE}; |
Hatter | 3:1f1498403eec | 44 | static uint8_t RX_CHECKCODE=0; |
Hatter | 4:5da566692b79 | 45 | |
Hatter | 3:1f1498403eec | 46 | RXdata[RX] = xbee.getc(); |
Hatter | 4:5da566692b79 | 47 | |
Hatter | 3:1f1498403eec | 48 | if(RXdata[KEY]==EN_KEYCODE){ |
Hatter | 4:5da566692b79 | 49 | |
Hatter | 3:1f1498403eec | 50 | RX++; |
Hatter | 3:1f1498403eec | 51 | } |
Hatter | 3:1f1498403eec | 52 | |
Hatter | 3:1f1498403eec | 53 | if(RX==CHECK){ |
Hatter | 3:1f1498403eec | 54 | for(i=KEY+1, RX_CHECKCODE=0; i<CHECK; i++){ |
Hatter | 3:1f1498403eec | 55 | RX_CHECKCODE ^= RXdata[i]; |
Hatter | 3:1f1498403eec | 56 | }//CHECKCODE作成 |
Hatter | 3:1f1498403eec | 57 | } |
Hatter | 3:1f1498403eec | 58 | if(RX >= DATA_NUM){ |
Hatter | 3:1f1498403eec | 59 | if(RXdata[CHECK]==RX_CHECKCODE){ |
Hatter | 3:1f1498403eec | 60 | INdata[1] = RXdata[1]; |
Hatter | 3:1f1498403eec | 61 | INdata[2] = RXdata[2]; |
Hatter | 3:1f1498403eec | 62 | } |
Hatter | 3:1f1498403eec | 63 | RX=0; |
Hatter | 4:5da566692b79 | 64 | |
Hatter | 3:1f1498403eec | 65 | buff[0]=INdata[1]; |
Hatter | 0:fddd018033fb | 66 | armMbed.write(addr,buff,1); |
Hatter | 3:1f1498403eec | 67 | buff[0]=0; |
Hatter | 4:5da566692b79 | 68 | |
Hatter | 4:5da566692b79 | 69 | } |
Hatter | 0:fddd018033fb | 70 | } |
Hatter | 0:fddd018033fb | 71 | |
Hatter | 0:fddd018033fb | 72 | int main() |
Hatter | 0:fddd018033fb | 73 | { |
Hatter | 2:d0de0fab161f | 74 | xbee.attach(&getData, RawSerial::RxIrq); |
Hatter | 0:fddd018033fb | 75 | |
Hatter | 0:fddd018033fb | 76 | for(;;){ |
Hatter | 3:1f1498403eec | 77 | if(INdata[2]==0x0) motors = 0; |
Hatter | 3:1f1498403eec | 78 | if(INdata[2]&0x10) motors = 0x05; //p21,p23 |
Hatter | 3:1f1498403eec | 79 | if(INdata[2]&0x20) motors = 0x0A; //p22,p24 |
Hatter | 3:1f1498403eec | 80 | if(INdata[2]&0x40) motors = 0x50; //p25,p27 |
Hatter | 3:1f1498403eec | 81 | if(INdata[2]&0x80) motors = 0xA0; //p26,p28 |
Hatter | 0:fddd018033fb | 82 | |
Hatter | 4:5da566692b79 | 83 | check = !check; |
Hatter | 0:fddd018033fb | 84 | } |
Hatter | 0:fddd018033fb | 85 | } |