librairie pour robot Zumo
Diff: zumo.cpp
- Revision:
- 12:d9c9ef63c5ff
- Parent:
- 11:1082c5b3b418
--- a/zumo.cpp Mon Jan 10 08:59:37 2022 +0000 +++ b/zumo.cpp Mon Jan 10 23:00:47 2022 +0000 @@ -35,6 +35,71 @@ return v; } +// angle envoyé au centime de deg rot et sens trigo +char zumo::rotate_speed_gyro_wait (short spd,short rot){ + char v; + _ser.putc(SEND_ROTATE_GYRO); + _ser.putc(spd&0xff); + _ser.putc((spd>>8)&0xff); + _ser.putc(rot&0xff); + _ser.putc((rot>>8)&0xff); + v=_ser.getc(); + v=_ser.getc(); + return v; +} + +char zumo::Calibrate_line_sensor_wait (){ + char v; + _ser.putc(SEND_CALIBRE_LIGNE); + v=_ser.getc(); //accusé commande prise + v=_ser.getc(); // accusé commande terminée + return v; +} + + +char zumo::read_data_wait (char whatdata,char*tab){ + char v; + _ser.putc(SEND_ROTATE_GYRO); + _ser.putc(whatdata&0xff); + v=_ser.getc(); +/*#define DATA_SENSOR_GYRO 0x12 +#define DATA_SENSOR_MEANDIST 0x24 +#define DATA_SENSOR_LRDIST 0x38 +#define DATA_SENSOR_LIGNE 0x42 +#define DATA_SENSOR_LIGNE_5BIT 0x51 +#define DATA_SENSOR_OBSTACLE 0x62*/ + v=v&0x0F; + if(v!=0){ + for(char i=0;i<v;i++){ + tab[i]= _ser.getc(); + } + return 0x0A; + // retour de donnée + }else{ + return 0x0E; + } +} + + +// avance tout droit de dist mm limite de 3000mm + // avec speed positif (car calcul sens par dist) + // angle envoyé au centime de deg rot et sens trigo +char zumo::avance_wait(short spd, short dist){ + char v; + if(dist<=3000) { + _ser.putc(SEND_AVANCE); + _ser.putc(spd&0xff); + _ser.putc((spd>>8)&0xff); + _ser.putc(dist&0xff); + _ser.putc((dist>>8)&0xff); + v=_ser.getc(); + v=_ser.getc(); // 0x0B bloquant jusqu'à fin trajectoire + return v; + }else{ + return (0x0E); + } +} + float zumo::battery() { } @@ -48,10 +113,6 @@ } -char zumo::sensor_auto_calibrate() { - -} - void zumo::PID_start(int max_speed, int a, int b, int c, int d) {