configure Pixy to detect a coloured object and seek it (coloured object)

  1. include "mbed.h"
  2. include "CMPS03.h"
  3. include "CNY70.h"
  4. include "VMA306.h"
  5. include "Pixy.h"
  6. include "PID.h"
  1. define PI 3.1415926535898

Serial pc (PA_2, PA_3, 115200); PID motor (TIM4, TIM3, PA_9, PA_8, PC_9, PC_8, PC_6, PC_5);

CMPS03 boussole (PC_4);

CNY70 ligneD (PC_3); CNY70 ligneG (PC_2); CNY70 exterior (PA_7);

VMA306 ultraSon (PB_15, PA_6, PB_14, PC_7, PB_13, PB_2);

PIXY pixy (PA_0, PA_1, 115200);

InterruptIn button (PC_13);

DigitalOut led1 (PA_5); DigitalOut led2 (PD_2); DigitalOut unused1 (PB_10); DigitalOut unused2 (PA_15); DigitalOut unused3 (PA_12); DigitalIn unused4 (PA_4, PullUp); DigitalIn unused5 (PB_0, PullUp); DigitalIn unused6 (PC_1, PullUp); DigitalIn unused7 (PC_0, PullUp);

Timer timer;

typedef enum {IDLE, WAIT1, WAIT2, HOW, GET, TURN} T_state;

main () { int x_center = 159; int error; T_pixyNMBloc NMBloc; int nbNM, nbCC; double VL=0, VR=0; T_state state=IDLE; timer.start();

while (1) { motor.setSpeed(VL, VR); switch(state) { case IDLE: if(pixy.checkPixy()==0) state=WAIT1; break; case WAIT1: if (button==0) state= WAIT2; break; case WAIT2: VL=0; VR=0; if (pixy.checkNewImage()) state=HOW; break; case HOW: pixy.detectedObject(&nbNM,&nbCC); if (nbNM==1) state= GET; else state= WAIT2; break; case GET: NMBloc=pixy.getNMBloc(); state=TURN; timer.reset(); break; case TURN: error = NMBloc.x - x_center; VL= error; VR= - error; if(pixy.checkNewImage()) state= HOW; if (timer.read()>0.5f) state=WAIT2; break;

}swith }while 1 }main=#include "mbed.h"


Please log in to post comments.