Patrik Kolar / Mbed 2 deprecated aControlUnit

Dependencies:   mbed Joystick1

Committer:
pkolar1
Date:
Wed Dec 19 09:07:41 2018 +0000
Revision:
0:cc59ecac5a32
fin

Who changed what in which revision?

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