中継機能つけた受け取りオムニ

Dependencies:   mbed MultiSerial

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?

UserRevisionLine numberNew 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 }