Bonjour,
Je ne comprends pas quelques point du code ci-dessous fourni par le constructeur pour un capteur de distance lidar.
Notamment, je ne comprends pas:
-
Pourquoi uart[8] ne prends pas la valeur serial read, avec cette partie de code:
for(i=2;i<9;i++)//save data in array
{
uart[i]=Serial1.read();
} -
La signification de "&" suivi de "0xff" dans la ligne:
if(uart[8]==(check&0xff))//verify the received data as per protocol
Merci pour vos réponses,
Voici le code:
int dist;//actual distance measurements of LiDAR
int strength;//signal strength of LiDAR
int check;//save check value
int uart[9];//save data measured by LiDAR
const int HEADER=0x59;//frame header of data package
int i=0;
//Takes setting the LiDAR samplerate rate at 10Hz as an example, and other settings can be modified accordingly.
void setup()
{
Serial.begin(115200);//set bit rate of serial port connecting Arduino with computer
Serial1.begin(115200); //set bit rate of serial port connecting LiDAR with Arduino
configure(samplerate_10,6,return_samplerate,samplerate_10,6,info_samplerate_10);
configure(save,4,return_save,save_success,5,info_save);
}
// According to the data protocol in TFmini Plus manual, the distance display can be obtained and displayed through serial terminal.
void loop()
{
delay(100);
if (Serial1.available())//check if serial port has data input
{
if(Serial1.read()==HEADER)//assess data package frame header 0x59
{
uart[0]=HEADER;
if(Serial1.read()==HEADER)//assess data package frame header 0x59
{
uart[1]=HEADER;
for(i=2;i<9;i++)//save data in array
{
uart[i]=Serial1.read();
}
check=uart[0]+uart[1]+uart[2]+uart[3]+uart[4]+uart[5]+uart[6]+uart[7];
if(uart[8]==(check&0xff))//verify the received data as per protocol
{
dist=uart[2]+uart[3]*256;//calculate distance value
strength=uart[4]+uart[5]*256;//calculate signal strength value
Serial.print("distance=");
Serial.print(dist);
Serial.print('\t');
//Serial.print("strength=");
//Serial.print(strength);
Serial.print('\n');
}
}
}
}
}