Имитатор сигналов на контроллр ЖКИ.
- Войдите на сайт для отправки комментариев
Ардуино пользовался несколько раз и всегда удавалось подобрать готовый скетч, но вэтот раз не получается.
Вышел из строя ЖКИ на измерителе уровня. ЖКИ управляется микроосхемой MM145453V (https://pdf1.alldatasheet.com/datasheet ... 5453V.html) Почитал даташит получается инфа на микросхему приходит по двум проводам clock и data. в соответствии с этой картинкой https://htmlimg2.alldatasheet.com/htmldatasheet/560442/TI/MM145453V/154/5/MM145453V.png.
Всего там 36 бит.
1-й бит стартовый всегда 1.
Дальше идут 33 бита информации и затем 2 бита как бы для синхронизации между сигналами clock и data они написано желательно должны быть 0-ми.
Моя задача написать программу для arduino nano , которая имитиравала бы сигналы приходящие на контроллер ЖКИ. И чтоб я мог сам устанавливать значения этих 33-х значащих бит. Это мне нужно для соответствия таблицы соответствия между входным сигналом и отображаемой на ЖКИ информации. Есть идея перенаправить эту инфу потом на ЖКИ 1602.
Но повторюсь в arduino пока практически ноль.
Прошу помощи составить алгоритм по котораму бы мог работать данный имиттатор. А затем пользуясь алгоритмом я попытался бы освайвать нужные мне темы и пробовать мисать программу. Буду очень признателен тем кто откликнется.
Немного поразмыслил мне нужно просто создать 36 переменных типа булеан. Затем присвоить каждой из них значение и вывести на как-нибудь цифровой выход. В цикле и в этом же цикле на другой цифровой выход выводить импульс clook. Это у меня будут биты данных. Но как мне привязать к ним синхроимпульсы на пине clock с точным значением как в даташите. И как задать частоту прохождения пачек моих импульсов? Использовать delay?
Хотел создать массив из переменнх булеан
Компилятор ругается Как правильно создать массив булеан?
boolean это тоже просто байты в которых может храниться только два значения 0 и 1
boolean это тоже просто байты в которых может храниться только два значения 0 и 1
Так кактогда мнеправильно массивто оформить?
boolean это тоже просто байты в которых может храниться только два значения 0 и 1
Так кактогда мнеправильно массивто оформить?
В инете про булевые массивы примеры не нашел.
Писать вместо тру и фэлсе сразу 1 и 0 ?
думаю да
продолжите дальше в таком духе, вас пошлют читать азы языка С.
ОТвет не понял можно подробнее. это комментарий не убрал . хотел в сериал вывести.
я предупреждал, изучайте основы, начните с Blink.
Согласен с вами про BLINK. Но у меня прибор стоит сломаннный ультразвуковой измеритель уровня. Мне нужно его починить. ВЫше все писал. Да и существует мнение что если начинаешь делать сразу что-то полезное и знания лучше закрепляются. А информацию про организацию правильную булевых массивов действительно не нашел в интернете. Если имеете скиньте ссылочку.
Всавил кусок вашего скетча и весь скетч собрался без ошибок. НО в мониторе порта никакие циферки не пробежали. Извините я действительно в СИ еще сильно дубоват. Так же буду признателен за ссылку на подробный справочник по командам СИ.
Прошу прощения не прописал скорость обмена с портом теперь циферки бегут.
НА пине 13 который будет имитировать DATA импулсы получить удалось правда под нагрузкой не смотрел. Теперь нужно организовать импульсы CLOCK и если получится можно будет составлять карту индикатора.
Ардуино пользовался несколько раз и всегда удавалось подобрать готовый скетч.....
Есть идея перенаправить эту инфу потом на ЖКИ 1602.
Задача не распространенная трудно найти готовый скетч. Так что извините наверное помучаю вас еще глупыми вопросами. И вообще есть желание повникать в тему.
Так вам шашечки или ехать? т.к. задачи принципиально разного уровня сложности.
поищите примеры на 1602 особенно с I2C, прежде чем с шашкой наголо
Справочник в шапке форума -Пограммирование
Поменять
на
Плюсую вышеотписавшимся, Вы не знаете синтаксис. Читать учебник - неважно, пишете ли на Wiring или C++.
Так вам шашечки или ехать? т.к. задачи принципиально разного уровня сложности.
поищите примеры на 1602 особенно с I2C, прежде чем с шашкой наголо
Справочник в шапке форума -Пограммирование
Я же написал нужно сделать генератор имитирующий сигнал на старый контроллер ЖКИ . Там два сигнала DATA и CLOCK и скорее всего это ближе к SPI . Мне нужно составить таблицу соответствия какой бит за какой символ на индикаторе отвечает. Индикатор был семисегментный со спец символами. А уж как подключить 1602 примеров действительно достаточно и изобретать велосипед не стоит.
Плюсую вышеотписавшимся, Вы не знаете синтаксис. Читать учебник - неважно, пишете ли на Wiring или C++.
Вы помогите мне с моим плохим знанием синтаксиса написать нужный мне генератор а потом я обязательно пойду читать учебник. Хочетсяприбор поскорее восстановить.
В общем я задал свой вопрос в разделе для начинающих. Что я думал предполагает плохое знание синтаксиса.
Здесь не форум по Си, здесь форум по Ардуино. Следовательно, предполагается, что Си Вы либо знаете, либо изучаете при помощи другого - специализированного форума.
И, в конце концов, решите, что именно Вам нужно:
- если побустрее починить устройство - это в раздел "Ищу исполнителя",
- если чему-то научиться, то начинать с задач попроще - с которыми в состоянии справиться при Вашем нынешнем уровне. (ну и само собой - учить язык, только где-то за пределами этого форума)
Мне нужно чтоб ардуино выдавал такой сигнал https://yadi.sk/i/PfvFoCdPLIn86A И я хотел узнать как мне этого добиться на уровне алгоритма. А зная алгоритм я бы сам перевел в СИ возможно и без этого форума.
Всех выслушал понял закрывайте тему. Кроме рассуждений о моем слабом знании СИ я не услышал ничего полезного.
я бы сказал, НАСТОЙЧИВО не желали слышать, что-то полезное.
я бы сказал, НАСТОЙЧИВО не желали слышать, что-то полезное.
Ну как же, он критерий полезности обозначил: "Вы помогите мне с моим плохим знанием синтаксиса написать нужный мне генератор а потом я обязательно пойду читать учебник."
Переведу: "Пошли вы нах, с вашими синтаксисами, мне код на халяву нужен".
я бы сказал, НАСТОЙЧИВО не желали слышать, что-то полезное.
Ну как же, он критерий полезности обозначил: "Вы помогите мне с моим плохим знанием синтаксиса написать нужный мне генератор а потом я обязательно пойду читать учебник."
Переведу: "Пошли вы нах, с вашими синтаксисами, мне код на халяву нужен".
Вообще я писал мне нужен алгоритм а не код готовыйюю Одну и туже задачу можно решить несколькими вариантами. Но только один из них будет изящен прост тоесть гениален. Я думал вы мне посоветуете используй внутренние таймеры внутренние прерывания я начал на delay скетч делать Меанндр идет но это не лучший вариант. А вы про готовые коды а сами наверное даже не удосужились картинку посмотреть какой сигнал нужен. Печаль.
Я вот только что закончил ковырять LCD дисплей. Начинал с самого элементарного посылал на нужный пин "0" или "1" и между ними задержки. Когда все заработало, начал окультуривать. Начинал - типа этого:
Сначала подобрал оптимальное время, чтобы данные шли без искажений, ну а потом уже дело техники.
Я хочу как вы отправлять 0 и 1 но дисплей будет другой 1602 у него 4 вывода и другая система кодировки. а у старого дисплея 33 вывода и своя кодировка.
Старым дисплеем управляла микросхема MM145453V и она раскидывала нужные 0 и 1 по нужным сегментам. А на нее информация приходит в виде 36 бит по двум ногам DATA и CLOCK. И теперь чтоб нужный 0 или 1 отправить в нужное место мне нужно узнать какой из 36 бит какой символ зажигает. И перекодировать эту последовательность под кодировку ЖКИ 1602. А для этого мне нужен имитатор или генератор. Который отправлял бы мне 36 бит. Допустим сначала 36 нуликов. Потом 35 нуликов и одна 1 так я разберусь какой бит за какой символ отвечает.
Я хочу как вы отправлять 0 и 1 но дисплей будет другой 1602 у него 4 вывода и другая система кодировки. а у старого дисплея 33 вывода и своя кодировка.
Чего Вы хотите от окружающих?
Чтобы они вместо Вас выучили Си? - так это невозможно.
Или чтобы вместо Вас по очевидному алгоритму сделали его программную реализацию? - так это в раздел "Ищу исполнителя".
Чтобы они посоветовали Вам, с чего начать? - так это уже сделано: "Учите язык программирования".
Чего еще?
Держи, не жалко:
<del>
не, у него это было честно расписано
Всего там 36 бит.
1-й бит стартовый всегда 1.
Дальше идут 33 бита информации и затем 2 бита как бы для синхронизации между сигналами clock и data они написано желательно должны быть 0-ми.
Держи не жалко
Мне подсказали еще вот такой вариант
Проверил работает. Ваш тоже обязательно прохверю. Выложил может кому понадобится для подобных целей.
А вопросы значит по коду людям плохо знающим СИ в этом форуме нельзя задавать ?
http://lurkmore.to/%D0%A2%D1%80%D0%BE%D0%BB%D0%BB%D1%8C
А вопросы значит по коду людям плохо знающим СИ в этом форуме нельзя задавать ?
Можно, но с непредсказуемым результатом. Попадете под хорошее настроение, может и ответят.
А вопросы значит по коду людям плохо знающим СИ в этом форуме нельзя задавать ?
Можно, но с непредсказуемым результатом. Попадете под хорошее настроение, может и ответят.
Думаете там есть вопросы? Массив из 33 палок в здравом уме придумать низзя (посоветовать тоже) )))
Думаете там есть вопросы? Массив из 33 палок в здравом уме придумать низзя (посоветовать тоже) )))
Все гениальное просто. Предложите свой изящный и простой вариант а то вы все время только задеть меня пытаетесь.
Все же попытаюсь задать вопрос что означает запись
04
uint64_t data = 0x01;
Переменная data, содержащая целое число, состоящая из 64 бит или 8 байт, беззнаковая, при инициализации ей присваивается значение 1. В книжках по си это рассматривается на первых страницах.
Все же попытаюсь задать вопрос что означает запись
04
uint64_t data = 0x01;
раз гугл запрещён - держите - https://ru.wikipedia.org/wiki/Stdint.h
Тоесть в коде anatoli_nik. сразу зарезервировали 64 бит и заполнили 0 кроме первого (000000...001)?
Еще не понял стоповых бита должно быть два а в коде вроде один?
Еще не понял стоповых бита должно быть два а в коде вроде один?
два, и один стартовый, стоповые нули (строка 32), как и просили
Скетч залил в ардуинку подцепил индикатор что-то не работает не перебирает сегменты. Видимо или задержки или скорость нужно менять.
Поясню, немного по коду выше.
Как и было запрошено, и уже пояснили другие, стартовый бит есть, есть два стоповых "нуля".
Каждую посылку передается единица только одному разряду (на сколько я понял хотелку), номер разряда отсылается в UART (надо же как-то следить), затем разряд меняется (в данном случае тупой сдвиг), затем задержка, для раздупления юзера, в данном случае две секунды (меняется в макросе timeSend).
Почему переменная (data) 64 битная? - потому что, с*ка разрабы придумали 33 битную посылку, котоая не влезает в uint32_t.
Почему я применил millis() для задержки? - Потому что нелюблю я эти delay(ms).
П.С. пока писал появилось сообщения от ТС. На каком дисплее не появляются сегменты?
Скетч из 34 поста работает?
У меня есть рабочий индикатор снят с донора . Так вот при включении загораются сразу все сегменты. Хотя просто при подаче питания на индикатор и без сигналов на DATA и CLOCK они тоже все загораются. Перебора сегментов не происходит.
Скетч из 34 поста работает. Записал все 0 и потом с краю начинаю добавлять 1 по одной и вижу какой сегмент загорается.
Нашел косяк, со строки 40 нужно заменить:
на: