J'essaie d'utiliser un DS18B20 multiple avec un Arduino. Dans la plupart des exemples, le capteur est initalized comme ceci:Indirection: Arduino
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
sensors-> begin();
Pour bus multiple, je peux ajouter un autre appareil:
#define ONE_WIRE_BUS_B 5
OneWire oneWire_B(ONE_WIRE_BUS_B);
DallasTemperature sensors_B(&oneWire_B);
sensors_B-> begin();
Depuis mon programme, je ne sais pas combien de bus, et quel GPIO ils vont utiliser, j'ai essayé d'utiliser indirection (pour un maximum de 5 bus).
OneWire* onewire_bus[5];
DallasTemperature* ds_bus[5];
J'initialize différents bus avec:
onewire_bus[0] = new OneWire(2);
ds_bus[0] = new DallasTemperature(onewire_bus[0]);
ds_bus[0]-> begin();
...
onewire_bus[1] = new OneWire(5);
ds_bus[1] = new DallasTemperature(onewire_bus[1]);
ds_bus[1]-> begin();
Cette approche fait le gel du conseil d'administration, ce qui est clairement un symptôme de mauvais adressage.
Quel est le problème avec la façon dont j'utilise l'indirection?
c ou C++? Quelle est la question? – user463035818
Veuillez fournir [mcve]. Je ne vois rien de manifestement faux (en termes de gestion des pointeurs) dans le code affiché. –
La question ne concerne pas le programme écrit dans [tag: c], donc ne le marque pas. –