Bonjour,
J'ai un problème pour coder mon capteur de pression sur matlab. J'ai trouvé le code sur internet et il marche mais je n'arrive pas à le traduire d'arduino à matlab.
voici le code :.Code:#include "Wire.h" #define addrs 0x6C // I2C bus address int P; int I; float T; int initialize(int i2c_addr) { //INITIALIZATION AFTER POWER UP Wire.beginTransmission(i2c_addr); Wire.write(0x0B); Wire.write(0x00); int x = Wire.endTransmission(); return x; } int pressure(int i2c_addr) { //MCU MODE Wire.beginTransmission(i2c_addr); Wire.write(0x00); Wire.write(0xD0); // reg 0 - address register high byte // Wire.write(0x51); // reg 1 - address register low byte Wire.write(0x40); // reg 1 - address register low byte Wire.write(0x18); // reg 2 - serial control register - indicate # bytes among others (page 7 bottom) Wire.write(0x06); // reg 3 - value to be written to SENS control register int x = Wire.endTransmission(); delay(33); //WRITE Wire.beginTransmission(i2c_addr); Wire.write(0x00); Wire.write(0xD0); Wire.write(0x51); Wire.write(0x2C); x = Wire.endTransmission(); //READ Wire.beginTransmission(i2c_addr); Wire.write(0x07); x = Wire.endTransmission(); Wire.requestFrom(i2c_addr, 2); byte hibyte = Wire.read(); byte lobyte = Wire.read(); long raw = word( hibyte, lobyte); //Serial.print("raw pressure:\t "); //Serial.println(raw); // D6F-PH5050AD3 ==> rangeMode=500 ==> int rd_pressure = ((raw - 1024) * rangeMode * 2 / 60000L) - rangeMode // D6F-PH0505AD3 ==> rangeMode=50 ==> int rd_pressure = ((raw - 1024) * rangeMode * 2 / 60000L) - rangeMode // D6F-PH0025AD1 ==> rangeMode=250 ==> int rd_pressure=(raw - 1024) * rangeMode / 60000L int rangeMode = 500; int rd_pressure = ((raw - 1024) * rangeMode * 2 / 60000) - rangeMode; return rd_pressure; }
Pour le moment je n'ai fait que le tout début et encore je ne sais pas si je suis dans le bon.Il n'y pas vraiment d'information concernant la bibliothèque wire dans matlab du coup je bloque un peu. En effet tout les "wire" me bloquent je sais pas comment les traduire sur matlab... Je sais que ce n'est qu'une fonction mais je ne sais pas quoi cela correspond sur matlab. J'ai réussi celui pour la température assez facilement, il suffisait juste de lire le volt au pin et voilà.Code:a = arduino('COM4','Uno','Wire','I2C') dev = i2cdev(a,'0x6C')
J'espère avoir été assez clair, n'hésiter pas à me demander des précisions.
Bien à vous, et merci d'avance.
-----