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@1:a68842ba46f5, 2018-12-19 (annotated)
- Committer:
- pkolar1
- Date:
- Wed Dec 19 09:12:23 2018 +0000
- Revision:
- 1:a68842ba46f5
- Parent:
- 0:cc59ecac5a32
.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| pkolar1 | 0:cc59ecac5a32 | 1 | #include "mbed.h" |
| pkolar1 | 0:cc59ecac5a32 | 2 | #include "Joystick.h" |
| pkolar1 | 0:cc59ecac5a32 | 3 | |
| pkolar1 | 0:cc59ecac5a32 | 4 | Serial pc(USBTX, USBRX); |
| pkolar1 | 0:cc59ecac5a32 | 5 | Joystick joystick(PTB0,PTB1); |
| pkolar1 | 0:cc59ecac5a32 | 6 | Serial serial(PTE0, NC); |
| pkolar1 | 0:cc59ecac5a32 | 7 | DigitalIn master_switch(PTC9); |
| pkolar1 | 0:cc59ecac5a32 | 8 | DigitalOut led_man(LED1); |
| pkolar1 | 0:cc59ecac5a32 | 9 | DigitalOut led_auto(LED2); |
| pkolar1 | 0:cc59ecac5a32 | 10 | void transmit(void); |
| pkolar1 | 0:cc59ecac5a32 | 11 | void conversion(void); |
| pkolar1 | 0:cc59ecac5a32 | 12 | void modeSwitch(void); |
| pkolar1 | 0:cc59ecac5a32 | 13 | bool manual = true; |
| pkolar1 | 0:cc59ecac5a32 | 14 | int direction, aim; |
| pkolar1 | 0:cc59ecac5a32 | 15 | uint8_t tx = 0; |
| pkolar1 | 0:cc59ecac5a32 | 16 | Timeout debounce; |
| pkolar1 | 0:cc59ecac5a32 | 17 | Ticker tick; |
| pkolar1 | 0:cc59ecac5a32 | 18 | |
| pkolar1 | 0:cc59ecac5a32 | 19 | void transmit() |
| pkolar1 | 0:cc59ecac5a32 | 20 | { |
| pkolar1 | 0:cc59ecac5a32 | 21 | serial.putc(tx); //tx transmit |
| pkolar1 | 0:cc59ecac5a32 | 22 | return; |
| pkolar1 | 0:cc59ecac5a32 | 23 | } |
| pkolar1 | 0:cc59ecac5a32 | 24 | |
| pkolar1 | 0:cc59ecac5a32 | 25 | void conversion() |
| pkolar1 | 0:cc59ecac5a32 | 26 | { |
| pkolar1 | 0:cc59ecac5a32 | 27 | tx = 0; |
| pkolar1 | 0:cc59ecac5a32 | 28 | if(serial.writeable()) { |
| pkolar1 | 0:cc59ecac5a32 | 29 | if(manual == true) { |
| pkolar1 | 0:cc59ecac5a32 | 30 | tx ^= (0x2 << 4); //adding ID key 0x2 (0b0010) |
| pkolar1 | 0:cc59ecac5a32 | 31 | tx = tx + direction; //binding direction and aim |
| pkolar1 | 0:cc59ecac5a32 | 32 | tx = tx + aim; |
| pkolar1 | 0:cc59ecac5a32 | 33 | } else if(manual == false) { //ID key 0x56 (0b01010110) |
| pkolar1 | 0:cc59ecac5a32 | 34 | tx = 0x56; |
| pkolar1 | 0:cc59ecac5a32 | 35 | } |
| pkolar1 | 0:cc59ecac5a32 | 36 | transmit(); |
| pkolar1 | 0:cc59ecac5a32 | 37 | } |
| pkolar1 | 0:cc59ecac5a32 | 38 | return; |
| pkolar1 | 0:cc59ecac5a32 | 39 | } |
| pkolar1 | 0:cc59ecac5a32 | 40 | |
| pkolar1 | 0:cc59ecac5a32 | 41 | void modeSwitch() |
| pkolar1 | 0:cc59ecac5a32 | 42 | { |
| pkolar1 | 0:cc59ecac5a32 | 43 | if(manual) { |
| pkolar1 | 0:cc59ecac5a32 | 44 | manual = false; |
| pkolar1 | 0:cc59ecac5a32 | 45 | led_auto = 1; |
| pkolar1 | 0:cc59ecac5a32 | 46 | led_man = 0; |
| pkolar1 | 0:cc59ecac5a32 | 47 | } else { |
| pkolar1 | 0:cc59ecac5a32 | 48 | manual = true; |
| pkolar1 | 0:cc59ecac5a32 | 49 | led_man = 1; |
| pkolar1 | 0:cc59ecac5a32 | 50 | led_auto = 0; |
| pkolar1 | 0:cc59ecac5a32 | 51 | } |
| pkolar1 | 0:cc59ecac5a32 | 52 | return; |
| pkolar1 | 0:cc59ecac5a32 | 53 | } |
| pkolar1 | 0:cc59ecac5a32 | 54 | |
| pkolar1 | 0:cc59ecac5a32 | 55 | int main() |
| pkolar1 | 0:cc59ecac5a32 | 56 | { |
| pkolar1 | 0:cc59ecac5a32 | 57 | led_man = 1; |
| pkolar1 | 0:cc59ecac5a32 | 58 | led_auto = 0; |
| pkolar1 | 0:cc59ecac5a32 | 59 | tick.attach(&conversion,0.01); //call every 10ms |
| pkolar1 | 0:cc59ecac5a32 | 60 | serial.baud(1200); //frequency |
| pkolar1 | 0:cc59ecac5a32 | 61 | serial.format(8,SerialBase::None,1); //communication(UART) |
| pkolar1 | 0:cc59ecac5a32 | 62 | while(1) { |
| pkolar1 | 0:cc59ecac5a32 | 63 | direction = joystick.DirectionDC(); //call for motors values |
| pkolar1 | 0:cc59ecac5a32 | 64 | aim = joystick.Servo(); |
| pkolar1 | 0:cc59ecac5a32 | 65 | if(master_switch == 0) debounce.attach(&modeSwitch,0.2); //autonomous - manual switch |
| pkolar1 | 0:cc59ecac5a32 | 66 | } |
| pkolar1 | 0:cc59ecac5a32 | 67 | } |