Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить

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

Вт авг 08, 2023 21:48:06

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

IMHO, ТС не достоин помощи.

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

Ср авг 09, 2023 06:31:37

2. OKF-у - На ВТОРОЙ картинке работает код, который я выложил. Там библиотека OneWire и передача работает. Че тут вам еще непонятного ?

Да, действительно не разобрался. За наезд извиняюсь.)
Посмотрел oneWire. Результат reset() (presence) можно не использовать.
Ну если через oneWire передача работает и хочется LiquidCrystal_I2C использовать, то нужно только send() переделать и вместо wire подключить oneWire.

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

Ср авг 09, 2023 09:14:01

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

IMHO, ТС не достоин помощи.
1. Мммдя. Ну хорошо - ткните носом в каком файле библиотеки и в каком месте находится процедура отправки данных. Попытаюсь переписать. Попытаюсь - потому что я ни разу не программист, а - схемотехник.
2. Схему нигде не брал, а разработал. Вернее - доработал из Интернета. И как она работает ессно понимаю. И критичные ее места тоже знаю. И как еще усовершенствовать знаю. Так что не раздувайте щеки, а покажите что вы не п***бол. С уважением.
ПС. Похоже по вашей безаппеляционности - вы наверняка он и есть. Будет много слов, много эмоций - и н**я помощи на выходе.
Последний раз редактировалось Ariadna-on-Line Ср авг 09, 2023 09:56:01, всего редактировалось 2 раз(а).

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

Ср авг 09, 2023 09:32:04

Для Сишного адуринко переделывать (или пытаться "выкусывать" их составляющие) библиотеки что для OneWire, что для Adafruit_NeoPixel без детальных знаний применяемой в компиляторе версии ассемблера одинаковый садомазохизьм.
:facepalm: :cry:
А вот насчет переделки под более "тихоходные" однопроводные протоколы (физический уровень) типа ИК или чего подобного вполне можно и самому все написать (даже "в рамках "референса"").
Но тогда адаптер у индикатора придется заново переделывать уже под конкретику выбранного протокола.
8)

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

Ср авг 09, 2023 09:45:01

2. OKF-у - На ВТОРОЙ картинке работает код, который я выложил. Там библиотека OneWire и передача работает. Че тут вам еще непонятного ?

Да, действительно не разобрался. За наезд извиняюсь.)
Посмотрел oneWire. Результат reset() (presence) можно не использовать.
Ну если через oneWire передача работает и хочется LiquidCrystal_I2C использовать, то нужно только send() переделать и вместо wire подключить oneWire.

ds.write(Sdata); // Выводим данные в конвеер сдвига
ds.reset(); // Перегружаем из конвеера в выходной регистр

Если вы про этот reset - это команда формирования временного интервала, который приводит к срабатыванию схемы и появлению данных на выходе. И ничего более. Аппаратно и программно он ничего не "ресетит"- в этом нет нужды.
Но это все не главное - главное - как внедрить этот код в библиотеку LCD модуля. Потому что с нуля написать новую библу - неподьемная задача.

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

Ср авг 09, 2023 14:37:25

Но это все не главное - главное - как внедрить этот код в библиотеку LCD модуля. Потому что с нуля написать новую библу - неподьемная задача.

Весь вопрос в том, что вы хотите. Что? "Библа" - это универсальная библиотека на все случаи, это удобно. Но часто нужны только отдельные функции этой библиотеки. И ведь как то же люди жили без Ардуино и её библиотек! И даже жили без Ардуино, с его классами и пр. Да и сейчас живут. Не везде же С++ имеется.

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

Ср авг 09, 2023 15:38:37

Но это все не главное - главное - как внедрить этот код в библиотеку LCD модуля. Потому что с нуля написать новую библу - неподьемная задача.

Весь вопрос в том, что вы хотите. Что? "Библа" - это универсальная библиотека на все случаи, это удобно. Но часто нужны только отдельные функции этой библиотеки. И ведь как то же люди жили без Ардуино и её библиотек! И даже жили без Ардуино, с его классами и пр. Да и сейчас живут. Не везде же С++ имеется.
Код:
//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) !!!

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

Ср авг 09, 2023 16:45:17

Вы какой то странный... Я спрашиваю что вы хотите, а вы указываете что мне нужно сделать...) И нужно ли?)
Код инициализации LCD_begin() уже готов и уже написан. Его менять не нужно. Это я вам говорю, что ВАМ нужно сделать.)

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

Пт авг 11, 2023 13:45:59

1/ OKF-у. То что мне надо - является названием этой ветки.
2/ В библиотеке LiquidCristal_I2C видимо надо менять не функцию send(), а функцию wire().
3/ Выложенный крайний код - я думал вы знаете 'назубок" процесс инициализации LCD и вмомент впИшите нужные данные, а я - поучусь.

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

Сб авг 12, 2023 09:28:35

Меняется транспортный протокол физического уровня.
Или соответствующая часть функции более высокого уровня.
(Хорошо, если в библиотеке они разделены).
И опять же...
Выдать из МК можно чего угодно...
А вот принять исключительно аппаратно-схемотехнической реализацией в том виде, что ожидается в "хотелках" - это уже надо чего-то очень простого (никак не uLan) применять.
Ибо в конце то ожидается развертка под требования 595го регистра - данные, строб продвижки и строб перезаписи в регистр.
А uLan это подобие UART - без наличия синхроимпульсов.
Как уже говорил ранее - надо какой-то вариант со смесью синхроимпульсов и данных делать.
То ли ШИМ, то ли ФИМ (то-ли чегось от пультов ИК, NRZ).
И "плясать" от аппаратной схемки дешифровки, что возле дисплея обеспечивает функционал 595го регистра.
8)

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

Сб авг 12, 2023 12:11:20

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 KiB) Скачиваний: 28
HelloWorld_1_wire_SRLCD123.zip
(14.97 KiB) Скачиваний: 33

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

Вс авг 13, 2023 15:37:40

GitHub: ShiftRegLCD123_2012.02.12
[quote]...Печать посимвольно работает.
Спасибо дорогой. Это именно то что я хотел. Печать фразами тоже работает, но только в Диджиспарке (те в АТтини85). В Уно действительно печатает только посимвольно. Видимо какой-то программный затык. Гуру разберутся.
Спаяю приблуду аналогичную I2C, но уже для 1-Wire. Чтоб подключать к Диджиспарку. Дешево и по делу.
Тема исчерпана, всем спасибо.
ПС. В схеме не задействован Вывод 595-ки Q0. Это бесцельное расходование ресурса. Есть возможность его включить в работу. Но требуется модернизация библиотеки.
Вложения
Безымянный.png
(53.14 KiB) Скачиваний: 43
Последний раз редактировалось Ariadna-on-Line Вс авг 13, 2023 23:51:49, всего редактировалось 1 раз.

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

Вс авг 13, 2023 21:59:02

Эти схемы были актуальны раньше. Теперь с I2c при низкой стоимости напр. на PCF8574 можете включить, например. 8 LCD (с разными показаниями, расширители с разными адресами) I2c по 2 проводам, или до 64 цифровых входов и/или выходов. A eсли замените expander на напр. MCP23017, входов/выходов уже возможно 128. В медленных процессах (и не только) работает безотказно, вне зависимости от клока МК например. Но предпочитаю для случая "следующий" тип МК - с достаточным количеством выводов для буд. конструкции, а мне минимизация интересна с точки зрения возможных решений и напр. на случай непредвиденных обстоятельств (напр. плата сделана, нет 6 св. выхода МК, а хотим добавить LCD). Так что все в руках конструктора :).

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

Пн авг 14, 2023 00:06:01

Эти схемы были актуальны раньше. Теперь с I2c при низкой стоимости напр...
Совершенно с вами согласен. Как говорится - делать атомные бомбы совершенно не обязательно. Обязательно - УМЕТЬ их делать. Теперь я спокоен, зная что смогу "выкрутиться" из ситуации даже при единственном свободном пине МК.
ПС. С первого же взгляда на исходную схему понятно, что выход Q0 всегда будет "0", те непригодным для использования. Задний нарастающий фронт интервала стробирования раньше приведет к срабатыванию регистра сдвига и появлению в младшем бите Q0 "дикого нуля". Небольшая доработка с введением RC цепи (100ом, 150пФ) позволяет блокировать этот эффект. У нас появляется дополнительный выход. Например для активного зуммера. Пока думаю как модернизировать библиотеку чтоб его задействовать.
Вложения
Безымянный.png
(46.35 KiB) Скачиваний: 29

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

Ср авг 16, 2023 15:19:10

Сумел-таки модернизировать библиотеку, чтобы задействовать ВСЕ биты регистра 595. Но после анализа библы - пришлось изменить схему. А поскольку появился дополнительный пин - добавил в библу пару функций buzzerOn() / buzzerOff() чтобы управлять им. Подразумевается что ЖК модуль можно "озвучить". Когда разработаю печатку - выложу плату и библиотеку. Всем спасибо. Тема исчерпана.
Вложения
Безымянный.png
(56.89 KiB) Скачиваний: 45

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

Пн авг 21, 2023 22:39:55

Вот разработка. Сделать в реале пока нет возможности. Так что прошу тапками не кидаться и на усы не наступать.
Вложения
ShiftRegLCD123.zip
(11.03 KiB) Скачиваний: 23
Безымянный_0.png
(22.5 KiB) Скачиваний: 46
Безымянный_1.png
(32.11 KiB) Скачиваний: 32
Последний раз редактировалось Ariadna-on-Line Вт авг 22, 2023 12:09:12, всего редактировалось 2 раз(а).

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

Пн авг 21, 2023 23:06:46

Что называете "разработка"? Дайте прог. код.
(Мне не нужно. Но для всех, кто интересно. Иначе смысла в форумах нет).
---
Спасибо.

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

Ср авг 23, 2023 10:33:03

Широко известна приблуда I2C_LCD конвертера, позволяющая экономить ноги процессора. И библиотека под нее - LiquidCristal_I2C. То бишь вместо 6 ног использовать только две.
Вопрос - существует ли приблуда для одной ноги. Ну типа 1-Wire_LCD конвертер. Интересует не столько железо (оно довольно простое), сколько готовая библиотека под него. Которую можно использовать в Arduino IDE.
ПС. Номиналы деталей RC цепочек нарисованы для ручного управления в Протеусе. В реале емкости конденсаторов - 10nF.

У даласа есть спец конвертор 1Wire -> 8 цифровых ног (обратный преобразователь не помню есть или нет), марку микросхемы не помню, помню что использовал когда то лет 8 назад, но ценник был не из дешевых, но поищите малоли что произошло за столько лет.

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

Ср авг 23, 2023 11:25:04

Давно знаю. Спасибо что напомнили. DS2408S. Двунаправленный конвертор. Заказал пяток на Али. Дай бог если пришлют микры, а не кирпичики с ножками. НО - Мне надо управлять не микрой, а дисплейным модулем через эту микру. А это - другое. Коль все придумано до нас - попробую поискать готовую библу для начала. С уважением.

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

Сб авг 26, 2023 23:43:28

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