DS2408. Читать научились, а писать еще нет.
- Войдите на сайт для отправки комментариев
Втр, 12/11/2013 - 01:12
Доброго времени суток, дорогие товарищи. Подскажите пожалуста как управлять этой заразой. Состояние входов\выходов прочитать могу, а вот как управлять светодиодами, к примеру, не могу раму собрать. Подскажите хотя-бы в какую сторону копать.
Судя по даташиту нужно записать в определённый регистр один байт. Но как это сделать ума не приложу.
Заранее благодарен.
https://github.com/search?q=DS2408
Если в даташите не понятно то глянь библиотеку которую писали еще под старую версию IDE Arduino.
Спасибо. Уже смотрю... Но что-то всё равно светодиоды не моргают, морды такие.
Решено.
Судя по всему какя-то ошибка(несоответствие) в файле примера. Удалил одну строку с условием и светодиоды заморгали.
Всем спасибо за внимание.
ну а написать остальным чего и как?
Прошу прощения. Как-то не подумал.
Проблемную строку пометил коментарием.
А вобще для того что-бы светодиоды запигали достаточно вот этого:
GreenDer ,
у вас на шине подключенны 2 штуки ds2408 судя по ID устройств, на одной "висят" светодиоды, на другой физические кнопки, я правильно понимаю?
Нет. на шине два ds2408 со светодиодами. Скетч поочередно переключает светодиоды на них. Кнопок нет.
Добрый день!
Сложно сказать - переменная devices, видимо, описана в DS2408.h, и поэтому из скеча ен понятна её структура. Ну проверить-то просто: напишите в 30-й строке (2-й скеч), что-нибудь типа:
Serial.Println(devices[index][7]);
И посмотрите, что она вам выводит: 0xBD или нет :).
Да уже разобрался, спасибо.
Это явная ошибка автора скетча. index[7] это последний байт имени конкретного устройства. Т.к у меня все подключенные устройства имеют другие имена то проверка условия естественно заканчивалась false.
Видимо автор хотел сделать проверку на принадлежность устроства к семейству DS2408, но перепутал байты. Нужно было первый байт проверять.
Хочу реализовать удалённое управление четырьмя релюшками. Думал купить DS2408. Скажите, какие плюсы у неё? Не легче ли использовать вместо неё atmega328? atmega328 стоит 30р. Ардуинка на atmega328 стоит 80р. А DS2408 стоит от 260р. Что ей можно сделать, чего нельзя реализовать на обычной ардуино?
Да всё можно реализовать обоими способами. Основная фича DS2408 - это то, что в неё уже вшит протокол 1-wire. Т.е. вам вообще не надо париться с кодом на клиентской (исполняющей) стороне. Причём реализован он хардверно, с правильными таймингами. Т.е. танцы с бубном будут сведены к минимуму. Или даже полностью исключены, если и мастер хардверный использовать. Плюс почти никакой обвязки не надо. Но это всё актуально, если у вас большие расстояния. А если 4 релюшки в одном месте (иначе зачем DS2408?), да на рассоянии в пол-метра, то смысл, конечно не очевиден. В этом случае я б в сторону I2C какого-нибудь посмотрел...
Если же расстояния большие (несколько метров и дальше), то лучше бы именно хардверные 1-Wire устройства - больше вероятность, что заработает :).
Ясно. Расстояние около 15метров.
У неё 8 каналов. Есть возможность сконфигурировать четыре как вход, и четыре как выход? Нужно подавать питание на релюхи, если релюха сработала, то при запуске устройства есть подтверждающий сигнал, когда устройство запустилость и нормально функционирует сухой контакт этого устройста размыкается. Тоесть нужно на некоторые подавать, а с некоторых считывать. Считывать нужно два состояния, либо Есть сигнал, Либо нет.
У неё 8 IO каналов, каждый из которых может работать как угодно и независимо друг от друга. Т.е. 4 входа/4 выхода тоже можно. При этом она как таковая не конфигурируется специально. Режим работы зависит от схемы включения. А с точки зрения софта: там 2 регистра. В один регистр вы записываете состояния, которые хотите назначить соответствующим ногам (для Outputs), а из второго считываете реальное состояние ног в данный момент (режим Input). Там всё просто.
Я в таком режиме работал с DS2413 - это двухканальный ключ. Но работает по-аналогии.
По поводу 15 м - I2C тогда не вариант. Тогда либо какой-нибудь RS485 использовать, либо вот как раз 1-wire. Для 1-wire 15 метров - это фигня.
можете поделиться примером, когда "В один регистр вы записываете состояния, которые хотите назначить соответствующим ногам (для Outputs)"?
Надо записывать все 8 состояний, или только одно, которое надо изменить?
Ни в одном из примеров в сети не удалось найти пример использования функции set_register, везде используют только set_state.
И в примере из поста #5 за что отвечают MODE, ACTIVTY, STATE,? В самой библиотеке комментарии настолько скудные, что нифига непонятно.
Я работал только с DS2413. Если поможет - вечером приведу пример. Делал всё по Datasheet.
думаю, поможет. Они во многом схожи.
Один в один. Разница только в количестве пинов.
Прошу прощения, никак не получается добраться до компьютера. Если подождёте, смогу ответить в четверг.
Я ещё жду :)
Я ещё жду :)
Фигасе терпеливый какой!
где был?
ds2413 корявенький код записи
чтения