Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:5078ebf43d0f, 2020-10-06 (annotated)
- Committer:
- sink
- Date:
- Tue Oct 06 09:09:52 2020 +0000
- Revision:
- 0:5078ebf43d0f
controller
Who changed what in which revision?
| User | Revision | Line number | New 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 |