Подключить LCD к МК по 1-проводному интерфейсу.

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
u37
Сверлит текстолит когтями
Сообщения: 1196
Зарегистрирован: Пн май 01, 2017 20:01:45

Re: Подключить LCD к МК по 1-проводному интерфейсу.

Сообщение u37 »

Гм.
Даже интересно стало - сгрузил вышезаявленную LiquidCristal, посмотрел что в ней. Вполне ожидаемо, процедура отправки данных выделена в отдельную подпрограмму. Переписать ее на что-то другое ни разу не проблема.
У меня встречный вопрос к ТС - вы настолько ленивый, что сидите и ждете халявы уже 1.5 дня, вместо того, чтоб потратить пол часа и всё написать? Или вам трудно понять, как работает ваша схема? ... простите, зачем тогда вы вообще ее взяли?

IMHO, ТС не достоин помощи.
OKF
Это не хвост, это антенна
Сообщения: 1385
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: Подключить LCD к МК по 1-проводному интерфейсу.

Сообщение OKF »

[uquote="Ariadna-on-Line",url="/forum/viewtopic.php?p=4459279#p4459279"]2. OKF-у - На ВТОРОЙ картинке работает код, который я выложил. Там библиотека OneWire и передача работает. Че тут вам еще непонятного ?[/uquote]
Да, действительно не разобрался. За наезд извиняюсь.)
Посмотрел oneWire. Результат reset() (presence) можно не использовать.
Ну если через oneWire передача работает и хочется LiquidCrystal_I2C использовать, то нужно только send() переделать и вместо wire подключить oneWire.
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1479
Зарегистрирован: Вс май 13, 2012 00:01:54

Re: Подключить LCD к МК по 1-проводному интерфейсу.

Сообщение Ariadna-on-Line »

[uquote="u37",url="/forum/viewtopic.php?p=4459285#p4459285"]Гм.
Даже интересно стало - сгрузил вышезаявленную LiquidCristal, посмотрел что в ней. Вполне ожидаемо, процедура отправки данных выделена в отдельную подпрограмму. Переписать ее на что-то другое ни разу не проблема.
У меня встречный вопрос к ТС - вы настолько ленивый, что сидите и ждете халявы уже 1.5 дня, вместо того, чтоб потратить пол часа и всё написать? Или вам трудно понять, как работает ваша схема? ... простите, зачем тогда вы вообще ее взяли?

IMHO, ТС не достоин помощи.[/uquote]1. Мммдя. Ну хорошо - ткните носом в каком файле библиотеки и в каком месте находится процедура отправки данных. Попытаюсь переписать. Попытаюсь - потому что я ни разу не программист, а - схемотехник.
2. Схему нигде не брал, а разработал. Вернее - доработал из Интернета. И как она работает ессно понимаю. И критичные ее места тоже знаю. И как еще усовершенствовать знаю. Так что не раздувайте щеки, а покажите что вы не п***бол. С уважением.
ПС. Похоже по вашей безаппеляционности - вы наверняка он и есть. Будет много слов, много эмоций - и н**я помощи на выходе.
Последний раз редактировалось Ariadna-on-Line Ср авг 09, 2023 09:56:01, всего редактировалось 2 раза.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15545
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Подключить LCD к МК по 1-проводному интерфейсу.

Сообщение BOB51 »

Для Сишного адуринко переделывать (или пытаться "выкусывать" их составляющие) библиотеки что для OneWire, что для Adafruit_NeoPixel без детальных знаний применяемой в компиляторе версии ассемблера одинаковый садомазохизьм.
:facepalm: :cry:
А вот насчет переделки под более "тихоходные" однопроводные протоколы (физический уровень) типа ИК или чего подобного вполне можно и самому все написать (даже "в рамках "референса"").
Но тогда адаптер у индикатора придется заново переделывать уже под конкретику выбранного протокола.
8)
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1479
Зарегистрирован: Вс май 13, 2012 00:01:54

Re: Подключить LCD к МК по 1-проводному интерфейсу.

Сообщение Ariadna-on-Line »

[uquote="OKF",url="/forum/viewtopic.php?p=4459385#p4459385"][uquote="Ariadna-on-Line",url="/forum/viewtopic.php?p=4459279#p4459279"]2. OKF-у - На ВТОРОЙ картинке работает код, который я выложил. Там библиотека OneWire и передача работает. Че тут вам еще непонятного ?[/uquote]
Да, действительно не разобрался. За наезд извиняюсь.)
Посмотрел oneWire. Результат reset() (presence) можно не использовать.
Ну если через oneWire передача работает и хочется LiquidCrystal_I2C использовать, то нужно только send() переделать и вместо wire подключить oneWire.[/uquote]
ds.write(Sdata); // Выводим данные в конвеер сдвига
ds.reset(); // Перегружаем из конвеера в выходной регистр

Если вы про этот reset - это команда формирования временного интервала, который приводит к срабатыванию схемы и появлению данных на выходе. И ничего более. Аппаратно и программно он ничего не "ресетит"- в этом нет нужды.
Но это все не главное - главное - как внедрить этот код в библиотеку LCD модуля. Потому что с нуля написать новую библу - неподьемная задача.
OKF
Это не хвост, это антенна
Сообщения: 1385
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: Подключить LCD к МК по 1-проводному интерфейсу.

Сообщение OKF »

[uquote="Ariadna-on-Line",url="/forum/viewtopic.php?p=4459435#p4459435"]Но это все не главное - главное - как внедрить этот код в библиотеку LCD модуля. Потому что с нуля написать новую библу - неподьемная задача.[/uquote]
Весь вопрос в том, что вы хотите. Что? "Библа" - это универсальная библиотека на все случаи, это удобно. Но часто нужны только отдельные функции этой библиотеки. И ведь как то же люди жили без Ардуино и её библиотек! И даже жили без Ардуино, с его классами и пр. Да и сейчас живут. Не везде же С++ имеется.
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1479
Зарегистрирован: Вс май 13, 2012 00:01:54

Re: Подключить LCD к МК по 1-проводному интерфейсу.

Сообщение Ariadna-on-Line »

[uquote="OKF",url="/forum/viewtopic.php?p=4459562#p4459562"][uquote="Ariadna-on-Line",url="/forum/viewtopic.php?p=4459435#p4459435"]Но это все не главное - главное - как внедрить этот код в библиотеку LCD модуля. Потому что с нуля написать новую библу - неподьемная задача.[/uquote]
Весь вопрос в том, что вы хотите. Что? "Библа" - это универсальная библиотека на все случаи, это удобно. Но часто нужны только отдельные функции этой библиотеки. И ведь как то же люди жили без Ардуино и её библиотек! И даже жили без Ардуино, с его классами и пр. Да и сейчас живут. Не везде же С++ имеется.[/uquote]

Код: Выделить всё

//1-Wire to Parallel converter

#include <OneWire.h> 
OneWire  ds(0);  // on pin 0 (a 4.7K resistor is necessary)

int Sdata = 0;
//=====
void setup() {
  
   Serial.begin(9600);   
//LCD_begin();   //  Дисплей должен быть инициализирован
}
//===== 
void loop()  {
  
   Serial.print("Sdata= ");
   Serial.println(Sdata);

LCD_backlight();   
   delay(64000);  // Странно, но это значение дает 1 секунду.
   
LCD_noBacklight();           
   delay(64000);  // Странно, но это значение дает 1 секунду.
}
//=============
void Data_Transf(int Sdata) {  //  Рабочая лошадка всего алгоритма
  ds.write(Sdata);  //  Загружаем биты данных на конвеер
  ds.reset();       //  Выгружаем данные с конвеера в выходной регистр (байт)
  delay(1);         //  Делаем паузу для успокоения переходных процессов   
}
//=============
void LCD_begin() {  //  Здесь должна быть череда посылок для инициализации
                              //  То что здесь сейчас - только для примера.
Data_Transf(B00110000);
delayMicroseconds(4200);
Data_Transf(B00110000);
delayMicroseconds(150);
Data_Transf(B00110000);

Data_Transf(B00100000); // Function Set - 4 bits mode
delayMicroseconds(37);
Data_Transf(B00101000);  // Function Set - 4 bits(Still), 2 lines, 5x8 font
delayMicroseconds(37);    
}
//=============
void LCD_backlight() {  
  Sdata = (Sdata | B00010000);
  Data_Transf(Sdata);
  delay(1);         //  Делаем паузу для успокоения переходных процессов  
}
//=============
void LCD_noBacklight() {  
  Sdata = (Sdata & B11101111);
  Data_Transf(Sdata);
  delay(1);         //  Делаем паузу для успокоения переходных процессов  
}
//=============
Вот смотрите - код, который не касается самого LCD, а только мигает подсветкой. Там есть функция Data_Transf(data), которая будет главной. LCD первым делом должен - инициализироваться. Подпрограмма LCD_begin() для этой цели. Точнее "рыба" под нее. Вам надо - поставить нужные числа. И все остальные команды библиотеки дисплея будут выглядеть точно так же.
Умеете ? Напишите хотя бы код инициализации дисплея для 4-битовой шины обмена (как I2C на PCF8574) !!!
OKF
Это не хвост, это антенна
Сообщения: 1385
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: Подключить LCD к МК по 1-проводному интерфейсу.

Сообщение OKF »

Вы какой то странный... Я спрашиваю что вы хотите, а вы указываете что мне нужно сделать...) И нужно ли?)
Код инициализации LCD_begin() уже готов и уже написан. Его менять не нужно. Это я вам говорю, что ВАМ нужно сделать.)
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1479
Зарегистрирован: Вс май 13, 2012 00:01:54

Re: Подключить LCD к МК по 1-проводному интерфейсу.

Сообщение Ariadna-on-Line »

1/ OKF-у. То что мне надо - является названием этой ветки.
2/ В библиотеке LiquidCristal_I2C видимо надо менять не функцию send(), а функцию wire().
3/ Выложенный крайний код - я думал вы знаете 'назубок" процесс инициализации LCD и вмомент впИшите нужные данные, а я - поучусь.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15545
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Подключить LCD к МК по 1-проводному интерфейсу.

Сообщение BOB51 »

Меняется транспортный протокол физического уровня.
Или соответствующая часть функции более высокого уровня.
(Хорошо, если в библиотеке они разделены).
И опять же...
Выдать из МК можно чего угодно...
А вот принять исключительно аппаратно-схемотехнической реализацией в том виде, что ожидается в "хотелках" - это уже надо чего-то очень простого (никак не uLan) применять.
Ибо в конце то ожидается развертка под требования 595го регистра - данные, строб продвижки и строб перезаписи в регистр.
А uLan это подобие UART - без наличия синхроимпульсов.
Как уже говорил ранее - надо какой-то вариант со смесью синхроимпульсов и данных делать.
То ли ШИМ, то ли ФИМ (то-ли чегось от пультов ИК, NRZ).
И "плясать" от аппаратной схемки дешифровки, что возле дисплея обеспечивает функционал 595го регистра.
8)
veso74
Поставщик валерьянки для Кота
Сообщения: 1903
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: Подключить LCD к МК по 1-проводному интерфейсу.

Сообщение veso74 »

GitHub: ShiftRegLCD123_2012.02.12
ShiftRegLCD123 - 1,2 and 3-wire shiftregister-based HD44780 compatible LCD library for Arduino
Connects a Hitachi HD44780 compatible LCD using 1, 2 or 3 pins from the Arduino via an 8-bit shift register (SR from now on).
HW compatible with LCD3Wire and old ShiftRegLCD libraries.
Для схемы с 595 без диод в ShiftRegLCD123.cpp закомментировал строчку:

Код: Выделить всё

...
// Comment out next line if not charging quicker via diodes.
#define LCD_SLIGHTLY_FASTER_1_WIRE
...
Есть некоторая неточность/необходимость внесения поправок/ с print (версии Arduino IDE?, другое?), но за несколько минут тестирования не стал искать причину. Печать посимвольно работает.

Код: Выделить всё

  // Print a message to the LCD.
  // srlcd.print("HELLO, WORLD!");

  srlcd.setCursor(5, 0);
  srlcd.print('H');
  srlcd.print('E');
  srlcd.print('L');
  srlcd.print('L');
  srlcd.print('O');
Изображение
Вложения
atmega328_SRLCD123_pdsprj.zip
(18.66 КБ) 130 скачиваний
HelloWorld_1_wire_SRLCD123.zip
(14.97 КБ) 140 скачиваний
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1479
Зарегистрирован: Вс май 13, 2012 00:01:54

Re: Подключить LCD к МК по 1-проводному интерфейсу.

Сообщение Ariadna-on-Line »

[uquote="veso74",url="/forum/viewtopic.php?p=4461046#p4461046"]GitHub: ShiftRegLCD123_2012.02.12
[quote]...Печать посимвольно работает.[/uquote]Спасибо дорогой. Это именно то что я хотел. Печать фразами тоже работает, но только в Диджиспарке (те в АТтини85). В Уно действительно печатает только посимвольно. Видимо какой-то программный затык. Гуру разберутся.
Спаяю приблуду аналогичную I2C, но уже для 1-Wire. Чтоб подключать к Диджиспарку. Дешево и по делу.
Тема исчерпана, всем спасибо.
ПС. В схеме не задействован Вывод 595-ки Q0. Это бесцельное расходование ресурса. Есть возможность его включить в работу. Но требуется модернизация библиотеки.
Вложения
Безымянный.png
(53.14 КБ) 136 скачиваний
Последний раз редактировалось Ariadna-on-Line Вс авг 13, 2023 23:51:49, всего редактировалось 1 раз.
veso74
Поставщик валерьянки для Кота
Сообщения: 1903
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: Подключить LCD к МК по 1-проводному интерфейсу.

Сообщение veso74 »

Эти схемы были актуальны раньше. Теперь с I2c при низкой стоимости напр. на PCF8574 можете включить, например. 8 LCD (с разными показаниями, расширители с разными адресами) I2c по 2 проводам, или до 64 цифровых входов и/или выходов. A eсли замените expander на напр. MCP23017, входов/выходов уже возможно 128. В медленных процессах (и не только) работает безотказно, вне зависимости от клока МК например. Но предпочитаю для случая "следующий" тип МК - с достаточным количеством выводов для буд. конструкции, а мне минимизация интересна с точки зрения возможных решений и напр. на случай непредвиденных обстоятельств (напр. плата сделана, нет 6 св. выхода МК, а хотим добавить LCD). Так что все в руках конструктора :).
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1479
Зарегистрирован: Вс май 13, 2012 00:01:54

Re: Подключить LCD к МК по 1-проводному интерфейсу.

Сообщение Ariadna-on-Line »

[uquote="veso74",url="/forum/viewtopic.php?p=4461755#p4461755"]Эти схемы были актуальны раньше. Теперь с I2c при низкой стоимости напр...[/uquote]Совершенно с вами согласен. Как говорится - делать атомные бомбы совершенно не обязательно. Обязательно - УМЕТЬ их делать. Теперь я спокоен, зная что смогу "выкрутиться" из ситуации даже при единственном свободном пине МК.
ПС. С первого же взгляда на исходную схему понятно, что выход Q0 всегда будет "0", те непригодным для использования. Задний нарастающий фронт интервала стробирования раньше приведет к срабатыванию регистра сдвига и появлению в младшем бите Q0 "дикого нуля". Небольшая доработка с введением RC цепи (100ом, 150пФ) позволяет блокировать этот эффект. У нас появляется дополнительный выход. Например для активного зуммера. Пока думаю как модернизировать библиотеку чтоб его задействовать.
Вложения
Безымянный.png
(46.35 КБ) 133 скачивания
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1479
Зарегистрирован: Вс май 13, 2012 00:01:54

Re: Подключить LCD к МК по 1-проводному интерфейсу.

Сообщение Ariadna-on-Line »

Сумел-таки модернизировать библиотеку, чтобы задействовать ВСЕ биты регистра 595. Но после анализа библы - пришлось изменить схему. А поскольку появился дополнительный пин - добавил в библу пару функций buzzerOn() / buzzerOff() чтобы управлять им. Подразумевается что ЖК модуль можно "озвучить". Когда разработаю печатку - выложу плату и библиотеку. Всем спасибо. Тема исчерпана.
Вложения
Безымянный.png
(56.89 КБ) 137 скачиваний
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1479
Зарегистрирован: Вс май 13, 2012 00:01:54

Re: Подключить LCD к МК по 1-проводному интерфейсу.

Сообщение Ariadna-on-Line »

Вот разработка. Сделать в реале пока нет возможности. Так что прошу тапками не кидаться и на усы не наступать.
Вложения
ShiftRegLCD123.zip
(11.03 КБ) 133 скачивания
Безымянный_0.png
(22.5 КБ) 157 скачиваний
Безымянный_1.png
(32.11 КБ) 132 скачивания
Последний раз редактировалось Ariadna-on-Line Вт авг 22, 2023 12:09:12, всего редактировалось 2 раза.
veso74
Поставщик валерьянки для Кота
Сообщения: 1903
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: ПодклюЧто вы называчить LCD к МК по 1-проводному интерфе

Сообщение veso74 »

Что называете "разработка"? Дайте прог. код.
(Мне не нужно. Но для всех, кто интересно. Иначе смысла в форумах нет).
---
Спасибо.
ELECTROS
Открыл глаза
Сообщения: 68
Зарегистрирован: Пт ноя 11, 2016 09:17:49

Re: Подключить LCD к МК по 1-проводному интерфейсу.

Сообщение ELECTROS »

[uquote="Ariadna-on-Line",url="/forum/viewtopic.php?p=4458615#p4458615"]Широко известна приблуда I2C_LCD конвертера, позволяющая экономить ноги процессора. И библиотека под нее - LiquidCristal_I2C. То бишь вместо 6 ног использовать только две.
Вопрос - существует ли приблуда для одной ноги. Ну типа 1-Wire_LCD конвертер. Интересует не столько железо (оно довольно простое), сколько готовая библиотека под него. Которую можно использовать в Arduino IDE.
ПС. Номиналы деталей RC цепочек нарисованы для ручного управления в Протеусе. В реале емкости конденсаторов - 10nF.[/uquote]
У даласа есть спец конвертор 1Wire -> 8 цифровых ног (обратный преобразователь не помню есть или нет), марку микросхемы не помню, помню что использовал когда то лет 8 назад, но ценник был не из дешевых, но поищите малоли что произошло за столько лет.
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1479
Зарегистрирован: Вс май 13, 2012 00:01:54

Re: Подключить LCD к МК по 1-проводному интерфейсу.

Сообщение Ariadna-on-Line »

Давно знаю. Спасибо что напомнили. DS2408S. Двунаправленный конвертор. Заказал пяток на Али. Дай бог если пришлют микры, а не кирпичики с ножками. НО - Мне надо управлять не микрой, а дисплейным модулем через эту микру. А это - другое. Коль все придумано до нас - попробую поискать готовую библу для начала. С уважением.
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1479
Зарегистрирован: Вс май 13, 2012 00:01:54

Re: Подключить LCD к МК по 1-проводному интерфейсу.

Сообщение Ariadna-on-Line »

Ардуино ИДЕ. Штатный пример к библиотеке OneWire. DS2408_switch. Компилируется нормально. Запускаю в Протеусе. Для этого пришлось в свойствах модели 2408 уменьшить ресет-интервал с 680мкС до 480 мкс (именно столько формирует симулятор). Симулятор видит девайс, читает идентификатор. Но не управляет выходами. Соответственно и читает с них только bx11111111. Кому удалось победить модель сего девайса ? С уважением.
ПС. Перебор наугад библиотек и скетчей позволил-таки увидеть работу выходов на модели DS2408. Дело оказалось именно в софте. Протеус в очередной раз не подкачал.
Ответить

Вернуться в «Arduino»