test

Dependencies:   PwmInRC USBDevice USBJoystick

Committer:
gagarinlg
Date:
Sun Jul 25 14:40:13 2021 +0000
Revision:
0:759e6d265ddd
first;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gagarinlg 0:759e6d265ddd 1 #include "mbed.h"
gagarinlg 0:759e6d265ddd 2 #include "USBJoystick.h"
gagarinlg 0:759e6d265ddd 3
gagarinlg 0:759e6d265ddd 4 USBJoystick joystick;
gagarinlg 0:759e6d265ddd 5 DigitalOut myled1(LED1);
gagarinlg 0:759e6d265ddd 6 DigitalOut myled2(LED2);
gagarinlg 0:759e6d265ddd 7 DigitalOut myled3(LED3);
gagarinlg 0:759e6d265ddd 8 DigitalOut myled4(LED4);
gagarinlg 0:759e6d265ddd 9
gagarinlg 0:759e6d265ddd 10 InterruptIn mybutton(USER_BUTTON);
gagarinlg 0:759e6d265ddd 11
gagarinlg 0:759e6d265ddd 12 double tempo = 0.3; // LED blinking delay
gagarinlg 0:759e6d265ddd 13 PinName pin = D7;
gagarinlg 0:759e6d265ddd 14 // Change LEDs blinking frequency
gagarinlg 0:759e6d265ddd 15 void change_blinking_frequency() {
gagarinlg 0:759e6d265ddd 16 if (tempo == 0.3) // If leds have low frequency
gagarinlg 0:759e6d265ddd 17 tempo = 0.1; // Set the fast frequency
gagarinlg 0:759e6d265ddd 18 else // If leds have fast frequency
gagarinlg 0:759e6d265ddd 19 tempo = 0.3; // Set the low frequency
gagarinlg 0:759e6d265ddd 20 }
gagarinlg 0:759e6d265ddd 21
gagarinlg 0:759e6d265ddd 22 InterruptIn interrupt(pin);
gagarinlg 0:759e6d265ddd 23 Timer timer;
gagarinlg 0:759e6d265ddd 24
gagarinlg 0:759e6d265ddd 25 uint32_t interval;
gagarinlg 0:759e6d265ddd 26 uint32_t channels[9];
gagarinlg 0:759e6d265ddd 27 uint32_t channel;
gagarinlg 0:759e6d265ddd 28 bool done=false;
gagarinlg 0:759e6d265ddd 29
gagarinlg 0:759e6d265ddd 30 void rise()
gagarinlg 0:759e6d265ddd 31 {
gagarinlg 0:759e6d265ddd 32 interval=timer.read_us();
gagarinlg 0:759e6d265ddd 33 if(interval > 3000)
gagarinlg 0:759e6d265ddd 34 {
gagarinlg 0:759e6d265ddd 35 done = true;
gagarinlg 0:759e6d265ddd 36 channel=0;
gagarinlg 0:759e6d265ddd 37 return;
gagarinlg 0:759e6d265ddd 38 }
gagarinlg 0:759e6d265ddd 39 int length = interval - 1000;
gagarinlg 0:759e6d265ddd 40 if(length < 0)
gagarinlg 0:759e6d265ddd 41 length = 0;
gagarinlg 0:759e6d265ddd 42 else if(length>1023)
gagarinlg 0:759e6d265ddd 43 length=1023;
gagarinlg 0:759e6d265ddd 44 length /= 4;
gagarinlg 0:759e6d265ddd 45 length -= 127;
gagarinlg 0:759e6d265ddd 46
gagarinlg 0:759e6d265ddd 47 channels[channel] = length;
gagarinlg 0:759e6d265ddd 48 channel++;
gagarinlg 0:759e6d265ddd 49 }
gagarinlg 0:759e6d265ddd 50
gagarinlg 0:759e6d265ddd 51 int main() {
gagarinlg 0:759e6d265ddd 52 // All LEDs are OFF
gagarinlg 0:759e6d265ddd 53 myled1 = 0;
gagarinlg 0:759e6d265ddd 54 myled2 = 0;
gagarinlg 0:759e6d265ddd 55 myled3 = 0;
gagarinlg 0:759e6d265ddd 56 myled4 = 0;
gagarinlg 0:759e6d265ddd 57
gagarinlg 0:759e6d265ddd 58 // Change LEDs blinking frequency when button is pressed
gagarinlg 0:759e6d265ddd 59 mybutton.fall(&change_blinking_frequency);
gagarinlg 0:759e6d265ddd 60 timer.start();
gagarinlg 0:759e6d265ddd 61 interrupt.rise(&rise);
gagarinlg 0:759e6d265ddd 62 // interrupt.fall(this, &RadioChannel::fall);
gagarinlg 0:759e6d265ddd 63 uint8_t count=0;
gagarinlg 0:759e6d265ddd 64 while(1) {
gagarinlg 0:759e6d265ddd 65 if(done)
gagarinlg 0:759e6d265ddd 66 {
gagarinlg 0:759e6d265ddd 67 joystick.update(count, 0, channels[0], 0, 0, 0);
gagarinlg 0:759e6d265ddd 68 done = false;
gagarinlg 0:759e6d265ddd 69 }
gagarinlg 0:759e6d265ddd 70 joystick.update(count, 0, channels[0], 0, 0, 0);
gagarinlg 0:759e6d265ddd 71 count++;
gagarinlg 0:759e6d265ddd 72 wait(0.001);
gagarinlg 0:759e6d265ddd 73 }
gagarinlg 0:759e6d265ddd 74 }