Bonjour,
voila je veux communiquer avec le capteur SRF08 Ultra sonic range : https://www.robot-electronics.co.uk/htm/srf08tech.html (datasheet), pour cela je dois utiliser le protocole i2c, mais j'ai du mal a comprendre ce qu'il faut faire exactement pour recevoir la distance en cm. Je vous montre mon code (c++) :
mon professeur m'a donné une class I2C qui gere la transmission de donné avec les méthode read et write.
Le code ne fonctionne pas, avez vous une idée du pourquoi ?Code:int dataMSB; int dataLSB; int distance; I2C i2c(PF_14, PF_3); //SDA = PF_14 et SDL = PF_3 i2c.write(0xE0);//je veux dialoguer avec le capteur dont l'adresse est 0xE0 (adresse par default du capteur) i2c.write(0x00);//je veux envoyer une commande au registre du capteur i2c.write(0x51);//j'annonce à mon capteur de me retourner la distance en cm while(1){ i2c.write(0x02);//je demande de recevoir les bits de poids fort de la distance dataMSB = read(0xE0);// je récupere les bits de poids fort de la distance i2c.write(0x03);//je demande de recevoir les bits de poids faible de la distance (un octet) dataLSB = read(0xE0);// je récupere les bits de poids faible de la distance (un octet) distance = (dataMSB<<8)|(dataLSB); if(distance < 20) //allume led rouge else //éteind led rouge
j'ai pas l'habitude de lire des datasheets donc j'ai peut etre mal compris ce qu'il fallait faire pour recevoir les données.
Merci d'avance pour votre aide
-----