Официальный сайт компании Arduino по адресу arduino.cc
эмулятор ds1990 (библиотека OneWireHub)
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Пнд, 01/10/2018 - 17:08
всем привет,
подскажите пожалуйста как сделать чтобы можно было менять S/N датчика DS1990 в основном цикле LOOP ?
как сделать чтобы можно было изменять значение как в массиве например ds1990A[0] = 0x03; или как-то по другому.
библиотека здесь
https://github.com/orgua/OneWireHub/blob/master/src/OneWireHub.h
https://github.com/orgua/OneWireHub/blob/master/src/DS2401.h
#include "OneWireHub.h" #include "DS2401.h" // Serial Number OneWireHub hub = OneWireHub(2); auto ds1990A = DS2401( 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55 ); void setup(){ hub.attach(ds1990A); // always online } void loop(){ hub.poll(); static bool flipFlop = 0; if (flipFlop){ flipFlop = 0; hub.detach(ds1990A); } else{ flipFlop = 1; hub.attach(ds1990A); } }
может кто подсказать?
никак, библиотека не предусматривает изменения ID. Оно и понятно, у фирменных датчиков ID поменять нельзя.
Либо убиваете один инстанс датчика и создаете новый. с нужным ID, либо переписываете библиотеку.
то есть нужно переписать библиотеку так, чтобы S/N сохранялся в массиве ?
Не очень ясно зачем, но если так уж надо, меняйте
ds1990A.ID[0] = 0x03;
Только не забудьте потом crc пересчитать
ds1990A.ID[7] = OneWireItem::crc8(ds1990A.ID, 7);
никак, библиотека не предусматривает изменения ID.
Почему? Он там public - меняй на здоровье. Неясно только нафига.
то есть нужно переписать библиотеку так, чтобы S/N сохранялся в массиве ?
Нет, чтобы изменить ID в коде - нужно добавить в класс OneWireItem метод изменения ID. Но кроме изменения ID в программе нужно уметь менять ID в железе - а с этим у вас будут огромные проблемы, поскольку у большинства датчиков ID жестко зашит и менять его нельзя.
И я не понимаю, зачем это может понадобится... Если же вы таким образом собрались перекодировать домофонные ключи типа DS1990 - вы ошиблись, эта библиотека совершенно не для этого.
Почему? Он там public - меняй на здоровье. Неясно только нафига.
а, ну да :)
то есть нужно переписать библиотеку так, чтобы S/N сохранялся в массиве ?
И я не понимаю, зачем это может понадобится... Если же вы таким образом собрались перекодировать домофонные ключи типа DS1990 - вы ошиблись, эта библиотека совершенно не для этого.
есть некоторое устройство, которое может передавать s/n ds1990 на сервер. я хочу эмулировать датчик, и вместо s/n передавить нужную мне информацию.