librairie pour robot Zumo
Diff: zumo.cpp
- Revision:
- 12:d9c9ef63c5ff
- Parent:
- 11:1082c5b3b418
diff -r 1082c5b3b418 -r d9c9ef63c5ff zumo.cpp
--- 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) {