2015_robocon_bteam / Mbed 2 deprecated 2015robot_main

Dependencies:   PID QEI mbed

Fork of 2015robot_main by Naoto Deguchi

Committer:
unicore32
Date:
Mon Sep 07 04:58:33 2015 +0000
Revision:
5:8d53b2b2fe91
Parent:
4:51d87d2b698c
RS485;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DeguNaoto 0:bd4719e15f7e 1 /***RS485 Communication.***/
DeguNaoto 4:51d87d2b698c 2
DeguNaoto 0:bd4719e15f7e 3 Serial RS485(RS485_TX, RS485_RX);
DeguNaoto 4:51d87d2b698c 4 inline void sendData(int address, int data5) {
DeguNaoto 4:51d87d2b698c 5 unsigned int data;
unicore32 5:8d53b2b2fe91 6 if (data5 <= 31 && address <= 7) {
DeguNaoto 4:51d87d2b698c 7 data = ((address << 5) | data5);
unicore32 5:8d53b2b2fe91 8 //EN = 1;
unicore32 5:8d53b2b2fe91 9 wait_ms(50);
DeguNaoto 4:51d87d2b698c 10 RS485.putc(data);
unicore32 5:8d53b2b2fe91 11 wait_ms(50);
unicore32 5:8d53b2b2fe91 12 //EN = 0;
DeguNaoto 4:51d87d2b698c 13 }
DeguNaoto 4:51d87d2b698c 14 }
DeguNaoto 0:bd4719e15f7e 15
DeguNaoto 0:bd4719e15f7e 16 /***Get state ps3con.***/
DeguNaoto 0:bd4719e15f7e 17 Serial SBDBT(SBDBT_TX, SBDBT_RX);
DeguNaoto 0:bd4719e15f7e 18 #define ps3_start 0x80
DeguNaoto 0:bd4719e15f7e 19 short square=0,triangle=0,circle=0,cross=0,up=0,down=0,right=0,left=0,l1=0,l2=0,r1=0,r2=0;
DeguNaoto 4:51d87d2b698c 20 int analog_lx=64,analog_ly=64,analog_rx=64,analog_ry=64;
DeguNaoto 0:bd4719e15f7e 21 int ps3_data[7];
DeguNaoto 0:bd4719e15f7e 22 int count=0;
DeguNaoto 0:bd4719e15f7e 23 int sample=0;
DeguNaoto 2:cf8ca6742db9 24 inline void data_clear()
DeguNaoto 2:cf8ca6742db9 25 {
DeguNaoto 2:cf8ca6742db9 26 for(int i=0; i<7; i++) ps3_data[i]=0;
DeguNaoto 0:bd4719e15f7e 27 }
DeguNaoto 2:cf8ca6742db9 28 inline void data_check()
DeguNaoto 2:cf8ca6742db9 29 {
DeguNaoto 0:bd4719e15f7e 30 square=0,triangle=0,circle=0,cross=0,up=0,down=0,right=0,left=0,l1=0,l2=0,r1=0,r2=0;
DeguNaoto 0:bd4719e15f7e 31 analog_lx=0,analog_ly=0,analog_rx=0,analog_ry=0;
DeguNaoto 0:bd4719e15f7e 32 if((ps3_data[0]==0x00)&&(ps3_data[1]==0x01)) up=1;
DeguNaoto 0:bd4719e15f7e 33 else if((ps3_data[0]==0x00)&&(ps3_data[1]==0x02)) down=1;
DeguNaoto 0:bd4719e15f7e 34 else if((ps3_data[0]==0x00)&&(ps3_data[1]==0x04)) right=1;
DeguNaoto 0:bd4719e15f7e 35 else if((ps3_data[0]==0x00)&&(ps3_data[1]==0x08)) left=1;
DeguNaoto 0:bd4719e15f7e 36 else if((ps3_data[0]==0x00)&&(ps3_data[1]==0x10)) triangle=1;
DeguNaoto 0:bd4719e15f7e 37 else if((ps3_data[0]==0x00)&&(ps3_data[1]==0x20)) cross=1;
DeguNaoto 0:bd4719e15f7e 38 else if((ps3_data[0]==0x00)&&(ps3_data[1]==0x40)) circle=1;
DeguNaoto 0:bd4719e15f7e 39 else if((ps3_data[0]==0x01)&&(ps3_data[1]==0x00)) square=1;
DeguNaoto 0:bd4719e15f7e 40 else if((ps3_data[0]==0x02)&&(ps3_data[1]==0x00)) l1=1;
DeguNaoto 0:bd4719e15f7e 41 else if((ps3_data[0]==0x04)&&(ps3_data[1]==0x00)) l2=1;
DeguNaoto 0:bd4719e15f7e 42 else if((ps3_data[0]==0x08)&&(ps3_data[1]==0x00)) r1=1;
DeguNaoto 0:bd4719e15f7e 43 else if((ps3_data[0]==0x10)&&(ps3_data[1]==0x00)) r2=1;
DeguNaoto 0:bd4719e15f7e 44 analog_lx=ps3_data[2];
DeguNaoto 0:bd4719e15f7e 45 analog_ly=ps3_data[3];
DeguNaoto 0:bd4719e15f7e 46 analog_rx=ps3_data[4];
DeguNaoto 0:bd4719e15f7e 47 analog_ry=ps3_data[5];
DeguNaoto 4:51d87d2b698c 48 if(!circle) edge_circle=1;
DeguNaoto 4:51d87d2b698c 49 if(!triangle) edge_triangle=1;
DeguNaoto 4:51d87d2b698c 50 if(!r1) edge_r1=1;
DeguNaoto 4:51d87d2b698c 51 if(!l1) edge_l1=1;
DeguNaoto 4:51d87d2b698c 52 /*if(!(analog_ry<40)) edge_r_up=1;
DeguNaoto 4:51d87d2b698c 53 if(!(analog_ry>90)) edge_r_down=1;
DeguNaoto 4:51d87d2b698c 54 if(!(analog_ly<40)) edge_l_up=1;
DeguNaoto 4:51d87d2b698c 55 if(!(analog_ly>90)) edge_l_down=1;*/
DeguNaoto 4:51d87d2b698c 56 if(!edge_right) edge_right=1;
DeguNaoto 4:51d87d2b698c 57 if(!edge_left) edge_left=1;
DeguNaoto 4:51d87d2b698c 58 if(!edge_up) edge_up=1;
DeguNaoto 0:bd4719e15f7e 59 }
DeguNaoto 0:bd4719e15f7e 60 ///interrupt SBDBT RX.
DeguNaoto 2:cf8ca6742db9 61 inline void SBDBT_interrupt()
DeguNaoto 2:cf8ca6742db9 62 {
DeguNaoto 0:bd4719e15f7e 63 sample=SBDBT.getc();
DeguNaoto 0:bd4719e15f7e 64 if(count==7) data_clear();
DeguNaoto 0:bd4719e15f7e 65 if(sample==ps3_start) count=0;
DeguNaoto 2:cf8ca6742db9 66 else {
DeguNaoto 0:bd4719e15f7e 67 ps3_data[count]=sample;
DeguNaoto 0:bd4719e15f7e 68 count++;
DeguNaoto 0:bd4719e15f7e 69 }
DeguNaoto 0:bd4719e15f7e 70 if(count==6) data_check();
DeguNaoto 0:bd4719e15f7e 71 }
DeguNaoto 2:cf8ca6742db9 72 inline void initializeSBDBT()
DeguNaoto 2:cf8ca6742db9 73 {
DeguNaoto 2:cf8ca6742db9 74 for(int i=0; i<7; i++) ps3_data[i]=0;
DeguNaoto 0:bd4719e15f7e 75 SBDBT.baud(2400);
DeguNaoto 0:bd4719e15f7e 76 SBDBT.format(8, Serial::None, 1);
DeguNaoto 0:bd4719e15f7e 77 SBDBT.attach(SBDBT_interrupt, Serial::RxIrq);
DeguNaoto 0:bd4719e15f7e 78 }