TP1

Dependencies:   mbed

main.cpp

Committer:
AntoineDeb
Date:
2020-12-09
Revision:
9:48e3f6385bff
Parent:
8:51527660b735
Child:
10:4276eb0b8d4c

File content as of revision 9:48e3f6385bff:

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

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

m3pi m3pi;

Serial pc(USBTX,USBRX);

LocalFileSystem local("local");  


void readBattery()
{
    char s[500];
    char* s2 = "Battery:%f V\n";
    sprintf(s, s2, m3pi.battery());
    for (int i=0; i<strlen(s); i++) {
        pc.putc(s[i]);
    }
    pc.printf("\r");
}

void readSensors()
{
    char s[500];
    char* s2 = "Sensors:(%u,%u,%u,%u,%u) \n";
    unsigned short val[5];
    m3pi.calibrated_sensors(val);
    sprintf(s, s2, val[0],val[1],val[2],val[3],val[4]);
    for (int i=0; i<strlen(s); i++) {
        pc.putc(s[i]);
    }
    pc.printf("\r");
}


//__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;
}
void writetofile()
{
    FILE *fp = fopen("/local/out.txt", "w");  // Open "out.txt" on the local file system for writing
    while(word!='x')
    {
        switch(word)
            {
                case 'z': fprintf(fp,"zz\n");break;
                case 'q': fprintf(fp,"qq\n");break;
                case 's': fprintf(fp,"ss\n");break;
                case 'd': fprintf(fp,"dd\n");break;
                
            }
            wait(0.5);
            
        
        }
    fclose(fp);
    }
    
void openfile()
{
    char chaine[2];
    FILE *fp = fopen("/local/out.txt", "r");
    if (fp!=NULL)
    {
        while (!feof(fp)) // On lit le fichier tant qu'on ne reçoit pas d'erreur (NULL)
        {
            fgets(chaine,2,fp);
            switch (chaine[0])
            {
                case 'z': 
                    m3pi.forward(0.5);
                    wait(0.5);
                    m3pi.stop();
                    break;
                case 's':
                    m3pi.backward(0.5);
                    wait(0.5);
                    m3pi.stop();
                    break;
                case 'q':
                    m3pi.left(0.5);
                    wait(0.5);
                    m3pi.stop();
                    break;
                case 'd':
                    m3pi.right(0.5);
                    wait(0.5);
                    m3pi.stop();
                    break;                
                }
        }
    }
    fclose(fp);
    }
 


int main()
{
    m3pi.cls();  
    pc.printf("Bonjour \n");
    //USBINTERRUPT.rise(&GetKeyboard);z
    pc.attach(&GetKeyboard, Serial::RxIrq);
    //flag=0;
    while(1)
    {

        if(flag == 1)
        {
            pc.printf("in flag\n");
            //word = pc.getc();
            pc.printf("word = %c", word);
            switch(word)
            {
                case 'z':
                    m3pi.forward(0.5);
                    wait(0.5);
                    m3pi.stop();
                    break;
                case 'q':
                    m3pi.left(0.5);
                    wait(0.5);
                    m3pi.stop();
                    break;
                case 's':
                    m3pi.backward(0.5);
                    wait(0.5);
                    m3pi.stop();
                    break;
                case 'd':
                    m3pi.right(0.5);
                    wait(0.5);
                    m3pi.stop();
                    break;
                case 'b':
                    readBattery();
                    break;
                case 'c':
                    readSensors();
                    break;
                case 'p':
                    writetofile();
                    break;
                case 'r':
                    openfile();
            }
            flag=0;
        }
        else {}
    }
}