Широко известна приблуда I2C_LCD конвертера, позволяющая экономить ноги процессора. И библиотека под нее - LiquidCristal_I2C. То бишь вместо 6 ног использовать только две. Вопрос - существует ли приблуда для одной ноги. Ну типа 1-Wire_LCD конвертер. Интересует не столько железо (оно довольно простое), сколько готовая библиотека под него. Которую можно использовать в Arduino IDE. ПС. Номиналы деталей RC цепочек нарисованы для ручного управления в Протеусе. В реале емкости конденсаторов - 10nF.
Ммммдя ? Ну вот есть у меня LCD на HD44780. И как мне притулить его по UART-у к DigiSpark ??? Да так чтобы притуление не стало стоить дороже дисплея и ДижиСпарка вместе взятых !?
Можно и не-дороже. Берете еще один такой-же модуль MCU, подключаете к нему дисплей, реализуете поддержку приема команд по UART и подключаете его по 1-проводному интерфейсу.
к PIC МК: Low Cost 1 Wire Lcd for 8 Pin Micro Controllers. Есть код, можно портировать на другой МК. Но для себя я определил как ненадежным способом. Только если другого пути нет (а он всегда есть). Почему не нравится PCF8574 на I2c?
1. Почему не надежно ? Существует целое семейство устройств (DS18B20 например), которые вполне надежно работают. 2. Когда свободны всего 3 пина (как у DigiSpark например, два занимает USB, плюс еще - RESET)) - рад будешь каждому свободному пину.
Код:
//1-Wire to Parallel converter
#include <OneWire.h>
OneWire ds(0); // on pin 10 (a 4.7K resistor is necessary) int Sdata = 0;
Их нельзя сравнивать. DS18B20 есть CRC и целостность данных может быть проверена с большой точностью. Носите все через I2c, можно и чрез експандер и входы и выходы, и используете для большинства приложения.
Можно использовать "многосегментные" дисплейчики на основе микросхем с трехпроводным интерфейсом... Там всего-то выборка кристалла, строб сопровождения и линия данных. Тем более это "вторсырье" от весов или кассовых аппаратов... ну и туда же светодиодные блочки для адуринок на основе MAX7219... Или модифицированный протокол фазовой манипуляции от "шустрых светиков" а-ля WS2812...
Послушайте - нет нужды изобретать велосипед. Вот смотрите, всего три строчки кода -
#include <OneWire.h> ds.write(Sdata); // Выводим данные в конвеер сдвига ds.reset(); // Перегружаем из конвеера в выходной регистр. Всё - на выходе конвертора наше число.
- выполняют ВСЮ необходимую работу по проталкиванию данных через один провод.
В библиотеке LiquidCristal_I2C обязательно есть подобный участок кода по проталкиванию данных через два провода. Все что нужно - это заменить тот участок на мой. И не париться с остальным. Я не понимаю структуру библиотек. Может мудрый гуру от программирования это сделает.
Офигеть! Вы от балды что ли пишете? Такое впечатление что под шафэ... Ознакомились бы с протоколом 1-wire и тем же I2C. То что я писал выше, работало именно по 1-wire, но реализация slave была на ПИК-е. То что хотите вы, на 595-м регистре, это не 1-wire, это проще. Но OneWire библиотеки Ардуино тут не канают.
Последний раз редактировалось OKF Вт авг 08, 2023 12:43:50, всего редактировалось 1 раз.
Если хотите именно 1-wire, то от передатчика, через 1-wire, к LCD нужен еще один МК. См. сообщение u37 выше. Выбираем МК и пишем команды 1-wire для передачи и приема и готово. Одна часть уже написана с использованием библиотеки oneWire.
Лично управление I2c более используемое и перспективное, потому что (если есть дисплей?) используемые выводы дисплея нулевые (0) - почти всегда есть устройство, которое уже использует I2c, с дисплеем и без него, количество используемых выводов не меняется.
Выбираем МК и пишем команды 1-wire для передачи и приема и готово. Одна часть уже написана с использованием библиотеки oneWire.
Да, только нужно написать поддержку ведомого 1-wire. Т.е. отработку reset, presence, приёма байтов, как минимум. При обслуживании одного LCD - это не сложно, хотя и есть нюансы. Значительно проще взять МК с UART-ом (типа PIC16F628), тогда и мудрить ничего не надо. ПС. Про I2C и говорить нечего, т.к. с LCD уже используются готовые преобразователи I2C-LCD.
при чём тут Тини85 ?)) ТС использует Arduino IDE... на ATmega328... или аналогичной. Точно так же как у меня.))
Вы невнимательны. ТС хочет к Digispark, а это tiny85. Да библиотека SPI есть и для него, но 3 пина отдай. При том что I2C уже работать не будет. Конечно, можно и ногодрыгом, тогда 2 пина, но очень быстро.)
В том варианте, о коем Ariadna-on-Line мечтает, без МК на стороне дисплея никак не обойтись. А это по условию задачи неприемлемо... Остается только вариант передачи и дешифровки данных по однрму проводку с аппаратным (на рассыпухе) дешифраторе на стороне дисплея. Причем с минимальными затратами на подбор компонентов и подстройки. А тут или от ИК принцип пересылки/кодирования брать или чего-то от ШИМ или еще какой... ... Ведь дешифрация должна быть простейшей - на простой логике или на одновибраторах с простой логикой. Т.е. вариант SPI программно заворачиваем в 1 проводок на стороне МК и разворачиваем аппаратно БЕЗ МК на стороне дисплея.
В том варианте, о коем Ariadna-on-Line мечтает, без МК на стороне дисплея Остается только вариант передачи и дешифровки данных по однрму проводку с аппаратным (на рассыпухе) дешифраторе на стороне дисплея. Причем с минимальными затратами на подбор компонентов и подстройки...
1. Я выложил картинку конвертора на рассыпухе. Работает успешно. Видно переданные цифры и их бинарный вид на выходе. Осталось подключить к линиям LCD модуля и - готово. Вся заморочка-то в том, что библиотека должна быть копией стандартной LiquidCristal_I2C, но выдавать в линию сигнал 1-Wire, а не I2C. Все советы использовать еще один МК - рабочие, но это то же самое как примандрячивать ракетный двигатель к телеге. 2. OKF-у - На ВТОРОЙ картинке работает код, который я выложил. Там библиотека OneWire и передача работает. Че тут вам еще непонятного ?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения