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:d83a0eaeb1d9, 2020-10-05 (annotated)
- Committer:
- sink
- Date:
- Mon Oct 05 10:37:51 2020 +0000
- Revision:
- 0:d83a0eaeb1d9
- Child:
- 1:79522b611923
yguy
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| sink | 0:d83a0eaeb1d9 | 1 | #include "mbed.h" |
| sink | 0:d83a0eaeb1d9 | 2 | #include "string" |
| sink | 0:d83a0eaeb1d9 | 3 | #define INT_TIME 0.02 |
| sink | 0:d83a0eaeb1d9 | 4 | |
| sink | 0:d83a0eaeb1d9 | 5 | |
| sink | 0:d83a0eaeb1d9 | 6 | Ticker timer; |
| sink | 0:d83a0eaeb1d9 | 7 | RawSerial pc(USBTX,USBRX,115200); |
| sink | 0:d83a0eaeb1d9 | 8 | RawSerial Master(D5,D4,115200); |
| sink | 0:d83a0eaeb1d9 | 9 | |
| sink | 0:d83a0eaeb1d9 | 10 | DigitalIn sw2(D2); |
| sink | 0:d83a0eaeb1d9 | 11 | DigitalIn sw3(D3); |
| sink | 0:d83a0eaeb1d9 | 12 | DigitalIn sw6(D6); |
| sink | 0:d83a0eaeb1d9 | 13 | DigitalIn sw7(D7); |
| sink | 0:d83a0eaeb1d9 | 14 | DigitalIn sw8(D8); |
| sink | 0:d83a0eaeb1d9 | 15 | DigitalIn sw9(D9); |
| sink | 0:d83a0eaeb1d9 | 16 | DigitalIn sw10(D10); |
| sink | 0:d83a0eaeb1d9 | 17 | |
| sink | 0:d83a0eaeb1d9 | 18 | AnalogIn joyR_x(A6); |
| sink | 0:d83a0eaeb1d9 | 19 | AnalogIn joyR_y(A5); |
| sink | 0:d83a0eaeb1d9 | 20 | AnalogIn joyL_x(A4); |
| sink | 0:d83a0eaeb1d9 | 21 | AnalogIn joyL_y(A3); |
| sink | 0:d83a0eaeb1d9 | 22 | |
| sink | 0:d83a0eaeb1d9 | 23 | bool per_rotR, pre_rotL, pre_up, pre_down, pre_handR, pre_handL, pre_other; |
| sink | 0:d83a0eaeb1d9 | 24 | |
| sink | 0:d83a0eaeb1d9 | 25 | bool sw_in(int sw, int pre_sw){ |
| sink | 0:d83a0eaeb1d9 | 26 | bool rt_sw; |
| sink | 0:d83a0eaeb1d9 | 27 | if (sw == true && pre_sw == false) rt_sw = true; |
| sink | 0:d83a0eaeb1d9 | 28 | else rt_sw = false; |
| sink | 0:d83a0eaeb1d9 | 29 | return rt_sw; |
| sink | 0:d83a0eaeb1d9 | 30 | } |
| sink | 0:d83a0eaeb1d9 | 31 | |
| sink | 0:d83a0eaeb1d9 | 32 | void timer_warikomi(){ |
| sink | 0:d83a0eaeb1d9 | 33 | |
| sink | 0:d83a0eaeb1d9 | 34 | double d_joyx = joyR_x.read(); |
| sink | 0:d83a0eaeb1d9 | 35 | double d_joyy = joyR_y.read(); |
| sink | 0:d83a0eaeb1d9 | 36 | |
| sink | 0:d83a0eaeb1d9 | 37 | bool rotR = sw2.read(); |
| sink | 0:d83a0eaeb1d9 | 38 | bool rotL = sw3.read(); |
| sink | 0:d83a0eaeb1d9 | 39 | bool up = sw6.read(); |
| sink | 0:d83a0eaeb1d9 | 40 | bool down = sw7.read(); |
| sink | 0:d83a0eaeb1d9 | 41 | bool handR = sw8.read(); |
| sink | 0:d83a0eaeb1d9 | 42 | bool handL = sw9.read(); |
| sink | 0:d83a0eaeb1d9 | 43 | bool other = sw10.read(); |
| sink | 0:d83a0eaeb1d9 | 44 | |
| sink | 0:d83a0eaeb1d9 | 45 | char buttons = 0b00000000; |
| sink | 0:d83a0eaeb1d9 | 46 | |
| sink | 0:d83a0eaeb1d9 | 47 | if(sw_in(up,pre_up)) buttons |= 0b00000001; |
| sink | 0:d83a0eaeb1d9 | 48 | if(sw_in(down,pre_down)) buttons |= 0b00000010; |
| sink | 0:d83a0eaeb1d9 | 49 | if(sw_in(handR,pre_handR)) buttons |= 0b00000100; |
| sink | 0:d83a0eaeb1d9 | 50 | if(sw_in(handL,pre_handL)) buttons |= 0b00001000; |
| sink | 0:d83a0eaeb1d9 | 51 | if(sw_in(other,pre_other)) buttons |= 0b00010000; |
| sink | 0:d83a0eaeb1d9 | 52 | |
| sink | 0:d83a0eaeb1d9 | 53 | char joyx = char(int(255.0 * d_joyx)); |
| sink | 0:d83a0eaeb1d9 | 54 | char joyy = char(int(255.0 * d_joyy)); |
| sink | 0:d83a0eaeb1d9 | 55 | char rot = char(127 + 100*sw_in(rotR,per_rotR)- 100*sw_in(rotL,pre_rotL)); |
| sink | 0:d83a0eaeb1d9 | 56 | |
| sink | 0:d83a0eaeb1d9 | 57 | pc.printf("%c%c%c%c\n",joyx,joyy,rot,buttons); |
| sink | 0:d83a0eaeb1d9 | 58 | |
| sink | 0:d83a0eaeb1d9 | 59 | Master.putc(joyx); |
| sink | 0:d83a0eaeb1d9 | 60 | Master.putc(joyy); |
| sink | 0:d83a0eaeb1d9 | 61 | Master.putc(rot); |
| sink | 0:d83a0eaeb1d9 | 62 | Master.putc(buttons); |
| sink | 0:d83a0eaeb1d9 | 63 | Master.putc('\n'); |
| sink | 0:d83a0eaeb1d9 | 64 | |
| sink | 0:d83a0eaeb1d9 | 65 | per_rotR = rotR; |
| sink | 0:d83a0eaeb1d9 | 66 | pre_rotL = rotL; |
| sink | 0:d83a0eaeb1d9 | 67 | pre_up = up; |
| sink | 0:d83a0eaeb1d9 | 68 | pre_down = down; |
| sink | 0:d83a0eaeb1d9 | 69 | pre_handR = handR; |
| sink | 0:d83a0eaeb1d9 | 70 | pre_handL = handL; |
| sink | 0:d83a0eaeb1d9 | 71 | pre_other = other; |
| sink | 0:d83a0eaeb1d9 | 72 | } |
| sink | 0:d83a0eaeb1d9 | 73 | |
| sink | 0:d83a0eaeb1d9 | 74 | int main() |
| sink | 0:d83a0eaeb1d9 | 75 | { |
| sink | 0:d83a0eaeb1d9 | 76 | |
| sink | 0:d83a0eaeb1d9 | 77 | timer.attach(&timer_warikomi,INT_TIME); |
| sink | 0:d83a0eaeb1d9 | 78 | |
| sink | 0:d83a0eaeb1d9 | 79 | while(true) {} |
| sink | 0:d83a0eaeb1d9 | 80 | } |