RF control

Dependencies:   mbed Joystick1

main.cpp

Committer:
pkolar1
Date:
2018-12-19
Revision:
1:a68842ba46f5
Parent:
0:cc59ecac5a32

File content as of revision 1:a68842ba46f5:

#include "mbed.h"
#include "Joystick.h"

Serial pc(USBTX, USBRX);
Joystick joystick(PTB0,PTB1);
Serial serial(PTE0, NC);
DigitalIn master_switch(PTC9);
DigitalOut led_man(LED1);
DigitalOut led_auto(LED2);
void transmit(void);
void conversion(void);
void modeSwitch(void);
bool manual = true;
int direction, aim;
uint8_t tx = 0;
Timeout debounce;
Ticker tick;

void transmit()
{
    serial.putc(tx);                      //tx transmit
    return;
}

void conversion()
{
    tx = 0;
    if(serial.writeable()) {
        if(manual == true) {
            tx  ^=  (0x2 << 4);          //adding ID key 0x2 (0b0010)
            tx  = tx + direction;        //binding direction and aim
            tx  = tx + aim;
        } else if(manual == false) {     //ID key 0x56 (0b01010110)
            tx = 0x56;
        }
        transmit();
    }
    return;
}

void modeSwitch()
{
    if(manual) {
        manual = false;
        led_auto = 1;
        led_man = 0;
    } else {
        manual = true;
        led_man = 1;
        led_auto = 0;
    }
    return;
}

int main()
{
    led_man = 1;
    led_auto = 0;
    tick.attach(&conversion,0.01);          //call every 10ms
    serial.baud(1200);                      //frequency
    serial.format(8,SerialBase::None,1);    //communication(UART)
    while(1) {
        direction = joystick.DirectionDC(); //call for motors values
        aim = joystick.Servo();
        if(master_switch == 0) debounce.attach(&modeSwitch,0.2); //autonomous - manual switch         
    }
}