joy

Dependencies:   mbed USBDevice USBJoystick_

Committer:
gagarinlg
Date:
Sun Aug 01 17:36:27 2021 +0000
Revision:
2:d9f806076779
Parent:
0:4badd5dcda2b
done

Who changed what in which revision?

UserRevisionLine numberNew 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 }