Bonjour. J'ai une sonde thermostat qui fonctionne avec la bibliothèque onewire , et je voudrais comparer la mesure avec une autre info reçue sur le bus I2C qui fonctionne avec la bibliothèque wire.
Outre le fait que les 2 bibliothèques se ressemblent par le nom, ma question est savoir si elles sont compatibles.
Elles ne sont pas compatibles, les protocoles étant différents.
Precision de vocabulaire :
OneWire est une bibliothèque.
Wire n’est pas une bibliothèque.
Wire est un objet instancié a partir de la bibliothèque TwoWire.
Exactement comme avec la bibliothèque onewire tu dois instancier un objet, là l’objet Wire est preinstancié pour rendre les bibliothèques qui utilisent l’i2c plus homogènes.
C’est assez rare, mais il peut arriver dans certaines bibliothèques que leur auteur n’apprecie pas ce nom de Wire qui peut porter à confusion, ou qui veulent lancer l’i2c avec des options particulières et instancie leur propre objet avec, bien sur, un nom différent.
Bonjour,
IIC ou TwoWireInterface est un bus 2 fils physiquement géré par le micro. La bibliothèque Wire.h te permet une gestion plus facile de ce bus.
OneWire est un bus 1fil qui n'est pas physiquement géré par le micro. OneWire.h est la bibliothèque qui virtualise ce bus. La bibliothèque DallasTempérature.h a besoin de la bibliothèque OneWire pour ses composants utilisant ce bus. Utilisation assez transparente par un simple pointeur, ce bus n'ayant pas la souplesse du bus IIC ne requiert pas une gestion évoluée.
Ton problème vient probablement du fait que tu envoies ta demande puis la lecture immédiatement à la suite
Je ne sais pas quel composant tu utilises mais celui-ci demande généralement un délai pour formuler la réponse. Essaies d'insérer un delai entre demande et lecture.
Pour faire simple et localiser la panne j'ai tout simplifié:
OneWire oneWire(2);
DallasTemperature ds(&oneWire);
void setup() {
Serial.begin(9600); // définition de l'ouverture du port série
ds.begin(); // sonde activée
}
void loop() {
ds.requestTemperatures();
int t = ds.getTempCByIndex(0);
Serial.print(t);
Serial.println( " C");
delay(100);
}
et bien ça ne fonctionne toujours pas. Serait ce du à mon arduino mega ? Bus 003 Device 005: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC
C'est un ltdi
Vendu sur ali express
UNO R3 (CH340G) MEGA328P pour Arduino UNO R3 + câble USB ATMEGA328P-AU carte de développement 16Mhz TYPE-C
J'approche du but. J'ai repris un vieil arduino et ça marche.
Arduino SA Uno R3 (CDC ACM)
Rétablissement du 1er arduino, reprise de tout le câblage Ça marche.
Merci. Tu m'as bien aidé à trouver la solution. Il fallait simplifier par tous les bouts.
Bonne soirée.