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

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

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

Сообщение u37 »

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

IMHO, ТС не достоин помощи.
Реклама
OKF
Это не хвост, это антенна
Сообщения: 1393
Зарегистрирован: Вт июн 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
Это не хвост, это антенна
Сообщения: 1482
Зарегистрирован: Вс май 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
Друг Кота
Сообщения: 15574
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

Для Сишного адуринко переделывать (или пытаться "выкусывать" их составляющие) библиотеки что для OneWire, что для Adafruit_NeoPixel без детальных знаний применяемой в компиляторе версии ассемблера одинаковый садомазохизьм.
:facepalm: :cry:
А вот насчет переделки под более "тихоходные" однопроводные протоколы (физический уровень) типа ИК или чего подобного вполне можно и самому все написать (даже "в рамках "референса"").
Но тогда адаптер у индикатора придется заново переделывать уже под конкретику выбранного протокола.
8)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1482
Зарегистрирован: Вс май 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
Это не хвост, это антенна
Сообщения: 1393
Зарегистрирован: Вт июн 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
Это не хвост, это антенна
Сообщения: 1482
Зарегистрирован: Вс май 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
Это не хвост, это антенна
Сообщения: 1393
Зарегистрирован: Вт июн 07, 2011 08:03:18

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

Сообщение OKF »

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

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

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

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

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

Сообщение BOB51 »

Меняется транспортный протокол физического уровня.
Или соответствующая часть функции более высокого уровня.
(Хорошо, если в библиотеке они разделены).
И опять же...
Выдать из МК можно чего угодно...
А вот принять исключительно аппаратно-схемотехнической реализацией в том виде, что ожидается в "хотелках" - это уже надо чего-то очень простого (никак не uLan) применять.
Ибо в конце то ожидается развертка под требования 595го регистра - данные, строб продвижки и строб перезаписи в регистр.
А uLan это подобие UART - без наличия синхроимпульсов.
Как уже говорил ранее - надо какой-то вариант со смесью синхроимпульсов и данных делать.
То ли ШИМ, то ли ФИМ (то-ли чегось от пультов ИК, NRZ).
И "плясать" от аппаратной схемки дешифровки, что возле дисплея обеспечивает функционал 595го регистра.
8)
veso74
Поставщик валерьянки для Кота
Сообщения: 1909
Зарегистрирован: Сб май 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 КБ) 134 скачивания
HelloWorld_1_wire_SRLCD123.zip
(14.97 КБ) 141 скачивание
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1482
Зарегистрирован: Вс май 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 КБ) 142 скачивания
Последний раз редактировалось Ariadna-on-Line Вс авг 13, 2023 23:51:49, всего редактировалось 1 раз.
veso74
Поставщик валерьянки для Кота
Сообщения: 1909
Зарегистрирован: Сб май 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
Это не хвост, это антенна
Сообщения: 1482
Зарегистрирован: Вс май 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 КБ) 136 скачиваний
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1482
Зарегистрирован: Вс май 13, 2012 00:01:54

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

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

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

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

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

Вот разработка. Сделать в реале пока нет возможности. Так что прошу тапками не кидаться и на усы не наступать.
Вложения
ShiftRegLCD123.zip
(11.03 КБ) 135 скачиваний
Безымянный_0.png
(22.5 КБ) 165 скачиваний
Безымянный_1.png
(32.11 КБ) 133 скачивания
Последний раз редактировалось Ariadna-on-Line Вт авг 22, 2023 12:09:12, всего редактировалось 2 раза.
veso74
Поставщик валерьянки для Кота
Сообщения: 1909
Зарегистрирован: Сб май 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
Это не хвост, это антенна
Сообщения: 1482
Зарегистрирован: Вс май 13, 2012 00:01:54

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

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

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

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

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

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

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