Robot secondaire

Dependencies:   RoboClaw mbed StepperMotor

Fork of RoboClaw by Simon Emarre

main.cpp

Committer:
sype
Date:
2016-04-13
Revision:
41:b5a2fbc20beb
Parent:
39:309f38d1e49c
Child:
43:d5aaff7d2bec

File content as of revision 41:b5a2fbc20beb:

#include "func.h"

#define dt 10000
#define ATTENTE 0
#define GO 1
#define STOP 2

/* Déclaration des différents éléments de l'IHM */
InterruptIn mybutton(USER_BUTTON);
DigitalIn button(USER_BUTTON);
DigitalOut led(LED1);
DigitalOut bleu(PC_5);
DigitalOut blanc(PC_6);
DigitalOut rouge(PC_8);

/* AX12 */
AX12 left_hand(PA_15, PB_7, 4, 250000);
AX12 right_hand(PA_15, PB_7, 1, 250000);

/* Sharp */
AnalogIn capt1(PA_4);
AnalogIn capt2(PB_0);
AnalogIn capt3(PC_1);
AnalogIn capt4(PC_0);

/* Moteurs pas à pas */
Stepper RMot(NC, PB_10, PA_8);
Stepper ZMot(NC, PB_5, PB_4);
Stepper LMot(NC, PB_3, PA_10);
/* Fins de course */
InterruptIn EndR(PB_15);
InterruptIn EndZ(PB_14);
InterruptIn EndL(PB_13);

Ticker ticker;

Serial logger(USBTX, USBRX);
//Serial logger(PA_9, PA_10);
RoboClaw roboclaw(460800, PA_11, PA_12);
Odometry odo(61.7, 61.8, ENTRAXE, 4096, roboclaw);

int i = 0, state = 0;
bool EL = false, EZ = false, ER = false;

void update_main(void);
void init(void);

/** Debut du programme */
int main(void)
{
    init();
    /* Code AStar */

    /*double angle_v = 2*PI/5;
    double distance_v = 200.0;
    std::vector<SimplePoint> path;
    Map map;


    //Construction des obstacles
    map.build();

    float x=odo.getX();
    float y=odo.getY();
    float the = 0;

    map.AStar(x, y, 1600, 1000, 75);
    path = map.path;

    for(int i=0; i<path.size();i++) {
        the = (float) atan2((double) (path[i].y - odo.getY()), (double) (path[i].x - odo.getX()));
        odo.GotoXYT(path[i].x, path[i].y, the);
    }

    map.AStar(odo.getX(), odo.getY(), 0, 1000, 75);
    path = map.path;

    for(int i=0; i<path.size();i++) {
        the = (float) atan2((double) (path[i].y - odo.getY()), (double) (path[i].x - odo.getX()));
        odo.GotoXYT(path[i].x, path[i].y, the);
    }*/

    //odo.GotoThet(PI);
    //odo.GotoThet(0);
    //odo.TestEntraxe(3);

    //odo.GotoThet(-PI/2);
    //wait(2000);
    //odo.GotoXYT(2250,500,0);

    //odo.TestEntraxe(5);
    //odo.Forward(1000);
    while(1)
    {
        JPO();
    }
}

void init(void)
{
    roboclaw.ForwardM1(ADR, 0);
    roboclaw.ForwardM2(ADR, 0);
    logger.baud(9600);
    logger.printf("Hello from main !\n\r");
    wait_ms(500);
    bleu = 1;
    blanc = 1;
    rouge = 1;
    wait_ms(1000);
    bleu = 0;
    blanc = 0;
    rouge = 0;
    
    //odo.setPos(0, 1000, 0);
    while(button);
    wait(1);

    mybutton.fall(&pressed);
    mybutton.rise(&unpressed);

    EndL.fall(&ELpressed);
    EndL.rise(&ELunpressed);
    EndZ.fall(&EZpressed);
    EndZ.rise(&EZunpressed);
    EndR.fall(&ERpressed);
    EndR.rise(&ERunpressed);

    wait_ms(100);
    ticker.attach_us(&update_main,dt); // 100 Hz
    logger.printf("End init\n\r");
}

void update_main(void)
{
    odo.update_odo();
    checkAround();
}