taka yamanouchi / Mbed 2 deprecated minirobo_controller_Base

Dependencies:   mbed

Committer:
sink
Date:
Tue Oct 06 09:09:52 2020 +0000
Revision:
0:5078ebf43d0f
controller

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sink 0:5078ebf43d0f 1 #include "mbed.h"
sink 0:5078ebf43d0f 2 #include "string"
sink 0:5078ebf43d0f 3 #define INT_TIME 0.02
sink 0:5078ebf43d0f 4
sink 0:5078ebf43d0f 5
sink 0:5078ebf43d0f 6 Ticker timer;
sink 0:5078ebf43d0f 7 RawSerial pc(USBTX,USBRX,115200);
sink 0:5078ebf43d0f 8 RawSerial Master(D5,D4,115200);
sink 0:5078ebf43d0f 9
sink 0:5078ebf43d0f 10 DigitalIn sw2(D2);
sink 0:5078ebf43d0f 11 DigitalIn sw3(D3);
sink 0:5078ebf43d0f 12 DigitalIn sw6(D6);
sink 0:5078ebf43d0f 13 DigitalIn sw7(D7);
sink 0:5078ebf43d0f 14 DigitalIn sw8(D8);
sink 0:5078ebf43d0f 15 DigitalIn sw9(D9);
sink 0:5078ebf43d0f 16 DigitalIn sw10(D10);
sink 0:5078ebf43d0f 17
sink 0:5078ebf43d0f 18 AnalogIn joyR_x(A6);
sink 0:5078ebf43d0f 19 AnalogIn joyR_y(A5);
sink 0:5078ebf43d0f 20 AnalogIn joyL_x(A4);
sink 0:5078ebf43d0f 21 AnalogIn joyL_y(A3);
sink 0:5078ebf43d0f 22
sink 0:5078ebf43d0f 23 bool per_rotR, pre_rotL, pre_up, pre_down, pre_handR, pre_handL, pre_other;
sink 0:5078ebf43d0f 24
sink 0:5078ebf43d0f 25 bool sw_in(int sw, int pre_sw){
sink 0:5078ebf43d0f 26 bool rt_sw;
sink 0:5078ebf43d0f 27 if (sw == true && pre_sw == false) rt_sw = true;
sink 0:5078ebf43d0f 28 else rt_sw = false;
sink 0:5078ebf43d0f 29 return rt_sw;
sink 0:5078ebf43d0f 30 }
sink 0:5078ebf43d0f 31
sink 0:5078ebf43d0f 32 void timer_warikomi(){
sink 0:5078ebf43d0f 33
sink 0:5078ebf43d0f 34 double d_joyR = joyR_x.read();
sink 0:5078ebf43d0f 35 double d_joyL = joyL_x.read();
sink 0:5078ebf43d0f 36
sink 0:5078ebf43d0f 37 bool rotR = sw2.read();
sink 0:5078ebf43d0f 38 bool rotL = sw3.read();
sink 0:5078ebf43d0f 39 bool up = sw6.read();
sink 0:5078ebf43d0f 40 bool down = sw7.read();
sink 0:5078ebf43d0f 41 bool handR = sw8.read();
sink 0:5078ebf43d0f 42 bool handL = sw9.read();
sink 0:5078ebf43d0f 43 bool other = sw10.read();
sink 0:5078ebf43d0f 44
sink 0:5078ebf43d0f 45 char buttons = 0b00000000;
sink 0:5078ebf43d0f 46
sink 0:5078ebf43d0f 47 if(sw_in(rotR,per_rotR)) buttons |= 0b00000001;
sink 0:5078ebf43d0f 48 if(sw_in(rotL,pre_rotL)) buttons |= 0b00000010;
sink 0:5078ebf43d0f 49 if(sw_in(up,pre_up)) buttons |= 0b00000100;
sink 0:5078ebf43d0f 50 if(sw_in(down,pre_down)) buttons |= 0b00001000;
sink 0:5078ebf43d0f 51 if(sw_in(handR,pre_handR)) buttons |= 0b00010000;
sink 0:5078ebf43d0f 52 if(sw_in(handL,pre_handL)) buttons |= 0b00100000;
sink 0:5078ebf43d0f 53 if(sw_in(other,pre_other)) buttons |= 0b01000000;
sink 0:5078ebf43d0f 54
sink 0:5078ebf43d0f 55 char joyR = char(int(255.0 * d_joyR));
sink 0:5078ebf43d0f 56 char joyL = char(int(255.0 * d_joyL));
sink 0:5078ebf43d0f 57
sink 0:5078ebf43d0f 58 pc.printf("%c%c%c\n",joyR,joyL,buttons);
sink 0:5078ebf43d0f 59
sink 0:5078ebf43d0f 60 Master.putc(joyR);
sink 0:5078ebf43d0f 61 Master.putc(joyL);
sink 0:5078ebf43d0f 62 Master.putc(buttons);
sink 0:5078ebf43d0f 63 Master.putc('\n');
sink 0:5078ebf43d0f 64
sink 0:5078ebf43d0f 65 per_rotR = rotR;
sink 0:5078ebf43d0f 66 pre_rotL = rotL;
sink 0:5078ebf43d0f 67 pre_up = up;
sink 0:5078ebf43d0f 68 pre_down = down;
sink 0:5078ebf43d0f 69 pre_handR = handR;
sink 0:5078ebf43d0f 70 pre_handL = handL;
sink 0:5078ebf43d0f 71 pre_other = other;
sink 0:5078ebf43d0f 72 }
sink 0:5078ebf43d0f 73
sink 0:5078ebf43d0f 74 int main()
sink 0:5078ebf43d0f 75 {
sink 0:5078ebf43d0f 76
sink 0:5078ebf43d0f 77 timer.attach(&timer_warikomi,INT_TIME);
sink 0:5078ebf43d0f 78
sink 0:5078ebf43d0f 79 while(true) {}
sink 0:5078ebf43d0f 80 }
sink 0:5078ebf43d0f 81