Problémy s ultrazvukovými senzory HC SR-04
Napsal: 11 led 2014, 10:16
Zdravím,
mám na robotovi namontováno 5 ultrazvuků HC SR-04 a mám problém, že ultrazvuky chvíli ukazují přesnou hodnotu, poté na chvíli ukážou hodnotu o dost nižší a pak zase chvíli ukazují přesnou hodnotu. Ke zjišťování hodnot používám na arduinu knihovnu: http://blog.iteadstudio.com/arduino-lib ... e-hc-sr04/. Mohli byste mi prosím poradit čím by to mohlo být způsobeno?
Díky
mám na robotovi namontováno 5 ultrazvuků HC SR-04 a mám problém, že ultrazvuky chvíli ukazují přesnou hodnotu, poté na chvíli ukážou hodnotu o dost nižší a pak zase chvíli ukazují přesnou hodnotu. Ke zjišťování hodnot používám na arduinu knihovnu: http://blog.iteadstudio.com/arduino-lib ... e-hc-sr04/. Mohli byste mi prosím poradit čím by to mohlo být způsobeno?
Díky
Kód: Vybrat vše
void sendSensorData(bool pi) {
byte toSend[18];
int temp;
toSend[0] = 13; //start byte
temp = left.Ranging(CM);
toSend[1] = getFirstByte(temp);
toSend[2] = getSecondByte(temp);
temp = right.Ranging(CM);
toSend[3] = getFirstByte(temp);
toSend[4] = getSecondByte(temp);
temp = front.Ranging(CM);
toSend[5] = getFirstByte(temp);
toSend[6] = getSecondByte(temp);
temp = back.Ranging(CM);
toSend[7] = getFirstByte(temp);
toSend[8] = getSecondByte(temp);
toSend[9] = leftEncoderData[0];
toSend[10] = leftEncoderData[1];
toSend[11] = rightEncoderData[0];
toSend[12] = rightEncoderData[1];
temp = radar.getDistance();
toSend[13] = getFirstByte(temp);
toSend[14] = getSecondByte(temp);
temp = roundf(getRobotHeading(compass, RADIANS)*10);
toSend[15] = getFirstByte(temp);
toSend[16] = getSecondByte(temp);
toSend[17] = 10; //stop byte
if (pi) {
Serial.write(toSend, 18);
} else {
Bluetooth.write(toSend, 18);
}
}
byte getFirstByte(int data) {
return data & 0xFF;
}
byte getSecondByte(int data) {
return data & 0xFF00;
}