TP1

Dependencies:   mbed

main.cpp

Committer:
AntoineDeb
Date:
2020-12-09
Revision:
8:51527660b735
Parent:
7:a1c1cb3a5d42
Child:
9:48e3f6385bff

File content as of revision 8:51527660b735:

#include "mbed.h"
#include "m3pi.h"

DigitalOut led1(LED1);
DigitalOut led2(LED2);

m3pi m3pi;

Serial pc(USBTX,USBRX);


//__enable_irq();
unsigned short flag = 0;
int word;
//InterruptIn USBINTERRUPT(USBRX);

void GetKeyboard()
{
    //pc.printf("Keyboard Interrupt \n");
    flag = 1;
    if(pc.readable())
        word = pc.getc();
    else pc.printf("no readable\n");
    return;
}

int main()
{
    m3pi.cls();  
    pc.printf("Bonjour \n");
    float speed = 0.1, battery = -1, position;
    //USBINTERRUPT.rise(&GetKeyboard);z
    pc.attach(&GetKeyboard, Serial::RxIrq);
    while(1)
    {
        //printf("flag = %d ", flag);
        //if(word >= 'a' && word <= 'z') {word++; pc.printf(&word); pc.printf("\n");}
        if(speed > 1) speed = 1;
        if(speed < -1) speed = -1;
        if(flag == 1)
        {
            pc.printf("in flag\n");
            //word = pc.getc();
            pc.printf("word = %c", word);
            switch(word)
            {
                // mouvement robots
                case 'z': m3pi.forward(speed); break;
                case 'q': m3pi.left(speed/2); break;
                case 's': m3pi.backward(speed); break;
                case 'd': m3pi.right(speed/2); break;
                case ' ': speed = 0; break;
                
                //accelerer / freiner
                case '+': speed+= 0.1; break;
                case '-': speed-= 0.1; break;
                case '0': m3pi.stop(); break;
                
                //infos
                case 'p': position = m3pi.line_position(); pc.printf("position = %f \n", position); break;
                case 'b': battery = m3pi.battery(); pc.printf("battery = %f \n", (battery/4.8)*100); break;
                default: pc.printf("default case \n"); break;
            }
            flag = 0;
        }
        else {}
    }
}