test
Dependencies: PwmInRC USBDevice USBJoystick
main.cpp@2:de9088be01f5, 2021-07-25 (annotated)
- Committer:
- gagarinlg
- Date:
- Sun Jul 25 15:26:11 2021 +0000
- Revision:
- 2:de9088be01f5
- Parent:
- 0:759e6d265ddd
testtest;
Who changed what in which revision?
User | Revision | Line number | New 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 | } |