Stále mám problém s narážením nožiček do překážek které jsou přímo před pavoučkem ale mírně stranou. Řeším to tak že při pohybu vpřed kmitá servo ultrazvuku vlevo, vpravo a přímo vpřed. Změří všechny tři hodnoty a vyhodnotí nejkratší vzdálenost a tu potřebuji :
Kód: Vybrat vše
//******************************************** KMITANI SERVA ************************************************************
void zmerit_vzdalenost() { //čtení vzdálenosti ultrazvuku
sonarServo.write (50,230,true); // vzdálenost mírně vlevo 50° 230 - rychlost otáčení
ultrazvuk ();
vzdalenost1 = vpred;
sonarServo.write (130,230,true); // vzdálenost mírně vpravo 130°
ultrazvuk ();
vzdalenost2 = vpred;
sonarServo.write (90,230,true); // vzdálenost přímo vpředu 90°
ultrazvuk ();
vzdalenost3 = vpred;
if ((vzdalenost1 < vzdalenost2) and (vzdalenost1 < vzdalenost3)){ // vyhodnocení vzdáleností
vzdalenost = vzdalenost1;
}
else if ((vzdalenost2 < vzdalenost1) and (vzdalenost2 < vzdalenost3)){
vzdalenost = vzdalenost2;
}
else {
vzdalenost = vzdalenost3;
}
}
ještě musím doplnit že hodnota "vpred" je vzdálenost získaná z ultrazvuku.
Nejsem si jistý jestli je to správně protože občas pavouček zareaguje poněkud nepředvídatelně.
Díky