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

Dependencies:   mbed MultiSerial

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?

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