Bonsoir, j'ai récupéré la documentation des trames à envoyer en I2C.
Voici l'exemple pour l'écriture:
Start
Slave adresse sur 7 bits, le bit faible étant le Read/Write (0 étant apparemment le Write et 1 Read)
Adresse sur 8 bites
Data Type sur 8 bites étant 0x80 + le nombre de data
Data Byte 1
Data Byte n
Cheksum
Stop
Voila bon j'ai essayer des truc mais j'arrive à rien encore. Je me foutrais des claques parfois
L'adresse de la carte étant 0x38
Si par exemple on essaye d'allumer le rétroéclairage l'adresse est 0x20 et il comporte 1 bit, 1 pour allumer et 0 pour éteindre
pour le checksum, voici le code que j'ai récupéré:
checksum = slaveAddr | I2C_WRITE;
for (idx = 0; idx < dataSize + 2; idx++){
checksum += I2CXD_Message[idx];
}
checksum = ~checksum;
Avec :
#define I2C_WRITE 0
unsigned char slaveAddr
unsigned char dataSize
unsigned char checksum;
unsigned char idx;
Si vous pouvez m'aider un peut, je pensais avoir compris ce qu' il m'avait dit mais cela marche pas, je pense que je me plante avec l'histoire des adresse en 7bites sans le poids faible
Pour l'envoie j'ai crée un méthode:
void I2C_Write(unsigned char Addr, unsigned char * Buff, unsigned char Size)
{
Wire.beginTransmission(Addr);
Wire.send(Buff, Size);
Wire.endTransmission();
}