joy
Dependencies: mbed USBDevice USBJoystick_
main.cpp@2:d9f806076779, 2021-08-01 (annotated)
- Committer:
- gagarinlg
- Date:
- Sun Aug 01 17:36:27 2021 +0000
- Revision:
- 2:d9f806076779
- Parent:
- 0:4badd5dcda2b
done
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gagarinlg | 0:4badd5dcda2b | 1 | #include "mbed.h" |
gagarinlg | 0:4badd5dcda2b | 2 | #include "USBJoystick.h" |
gagarinlg | 0:4badd5dcda2b | 3 | |
gagarinlg | 0:4badd5dcda2b | 4 | DigitalOut myled1(LED1); |
gagarinlg | 0:4badd5dcda2b | 5 | DigitalOut myled2(LED2); |
gagarinlg | 0:4badd5dcda2b | 6 | DigitalOut myled3(LED3); |
gagarinlg | 0:4badd5dcda2b | 7 | DigitalOut myled4(LED4); |
gagarinlg | 0:4badd5dcda2b | 8 | |
gagarinlg | 0:4badd5dcda2b | 9 | InterruptIn ppm(D7); |
gagarinlg | 0:4badd5dcda2b | 10 | USBJoystick joystick; |
gagarinlg | 0:4badd5dcda2b | 11 | double tempo = 0.3; // LED blinking delay |
gagarinlg | 0:4badd5dcda2b | 12 | |
gagarinlg | 0:4badd5dcda2b | 13 | Timer timer; |
gagarinlg | 0:4badd5dcda2b | 14 | |
gagarinlg | 0:4badd5dcda2b | 15 | volatile int period; |
gagarinlg | 0:4badd5dcda2b | 16 | |
gagarinlg | 2:d9f806076779 | 17 | int16_t channels[9] ={0,0,0,0,0,0,0,0,0}; |
gagarinlg | 0:4badd5dcda2b | 18 | uint8_t curChannel = 0; |
gagarinlg | 0:4badd5dcda2b | 19 | bool done=false; |
gagarinlg | 0:4badd5dcda2b | 20 | |
gagarinlg | 0:4badd5dcda2b | 21 | // multiplex: min: 1050, mitte 1600, max 2150 |
gagarinlg | 0:4badd5dcda2b | 22 | |
gagarinlg | 0:4badd5dcda2b | 23 | void rise() |
gagarinlg | 0:4badd5dcda2b | 24 | { |
gagarinlg | 0:4badd5dcda2b | 25 | period = timer.read_us(); |
gagarinlg | 0:4badd5dcda2b | 26 | timer.reset(); |
gagarinlg | 0:4badd5dcda2b | 27 | if(period > 3000) |
gagarinlg | 0:4badd5dcda2b | 28 | { |
gagarinlg | 0:4badd5dcda2b | 29 | curChannel = 0; |
gagarinlg | 2:d9f806076779 | 30 | done=true; |
gagarinlg | 0:4badd5dcda2b | 31 | return; |
gagarinlg | 0:4badd5dcda2b | 32 | } |
gagarinlg | 0:4badd5dcda2b | 33 | |
gagarinlg | 2:d9f806076779 | 34 | period -= 1580; |
gagarinlg | 2:d9f806076779 | 35 | /* if(period < -550) |
gagarinlg | 2:d9f806076779 | 36 | period = -550; |
gagarinlg | 2:d9f806076779 | 37 | if(period > 550) |
gagarinlg | 2:d9f806076779 | 38 | period = 550; |
gagarinlg | 2:d9f806076779 | 39 | */ |
gagarinlg | 2:d9f806076779 | 40 | /* period*=255; |
gagarinlg | 2:d9f806076779 | 41 | period/=1100;*/ |
gagarinlg | 2:d9f806076779 | 42 | /* int buf = period; |
gagarinlg | 0:4badd5dcda2b | 43 | int val = buf-128; |
gagarinlg | 0:4badd5dcda2b | 44 | if(val < -127) |
gagarinlg | 0:4badd5dcda2b | 45 | val = -127; |
gagarinlg | 0:4badd5dcda2b | 46 | if(val > 128) |
gagarinlg | 0:4badd5dcda2b | 47 | val = 128; |
gagarinlg | 0:4badd5dcda2b | 48 | channels[curChannel] = -val; |
gagarinlg | 2:d9f806076779 | 49 | */ |
gagarinlg | 2:d9f806076779 | 50 | if(curChannel < 9) |
gagarinlg | 2:d9f806076779 | 51 | channels[curChannel] = -period; |
gagarinlg | 0:4badd5dcda2b | 52 | curChannel++; |
gagarinlg | 0:4badd5dcda2b | 53 | myled1=1; |
gagarinlg | 0:4badd5dcda2b | 54 | myled2=0; |
gagarinlg | 0:4badd5dcda2b | 55 | } |
gagarinlg | 0:4badd5dcda2b | 56 | |
gagarinlg | 0:4badd5dcda2b | 57 | int main() { |
gagarinlg | 0:4badd5dcda2b | 58 | // All LEDs are OFF |
gagarinlg | 0:4badd5dcda2b | 59 | myled1 = 0; |
gagarinlg | 0:4badd5dcda2b | 60 | myled2 = 0; |
gagarinlg | 0:4badd5dcda2b | 61 | myled3 = 0; |
gagarinlg | 0:4badd5dcda2b | 62 | myled4 = 0; |
gagarinlg | 2:d9f806076779 | 63 | ppm.rise(&rise); |
gagarinlg | 0:4badd5dcda2b | 64 | timer.start(); |
gagarinlg | 0:4badd5dcda2b | 65 | |
gagarinlg | 2:d9f806076779 | 66 | uint32_t count = 0; |
gagarinlg | 2:d9f806076779 | 67 | int16_t thr = 0; |
gagarinlg | 2:d9f806076779 | 68 | int16_t rudder = 0; |
gagarinlg | 2:d9f806076779 | 69 | int16_t x=0; |
gagarinlg | 2:d9f806076779 | 70 | int16_t y=0; |
gagarinlg | 0:4badd5dcda2b | 71 | |
gagarinlg | 0:4badd5dcda2b | 72 | while(1) { |
gagarinlg | 2:d9f806076779 | 73 | // wait(1.000); // wait tempo |
gagarinlg | 2:d9f806076779 | 74 | |
gagarinlg | 2:d9f806076779 | 75 | if(done) |
gagarinlg | 2:d9f806076779 | 76 | { |
gagarinlg | 2:d9f806076779 | 77 | thr = channels[0]; |
gagarinlg | 2:d9f806076779 | 78 | rudder = channels[1]; |
gagarinlg | 2:d9f806076779 | 79 | x = channels[2]; |
gagarinlg | 2:d9f806076779 | 80 | y = channels[3]; |
gagarinlg | 2:d9f806076779 | 81 | done = 0; |
gagarinlg | 2:d9f806076779 | 82 | joystick.update(thr, rudder, x, y, channels[4], channels[5], channels[6], channels[7], count&0, 0); |
gagarinlg | 2:d9f806076779 | 83 | } |
gagarinlg | 0:4badd5dcda2b | 84 | |
gagarinlg | 0:4badd5dcda2b | 85 | count++; |
gagarinlg | 0:4badd5dcda2b | 86 | } |
gagarinlg | 0:4badd5dcda2b | 87 | } |