не могу програмно настроить пины на лед драйвере АТ1628
- Войдите на сайт для отправки комментариев
Сб, 25/11/2017 - 10:39
В общем есть плата с 7ми сегментными дисплеями. Хочу настроить управление, но вот загвоздка там стоят лед драйвера AT1628 я использовал библиотеку от ТМ1628 но вот беда выводится не на те пины как изменить ? Вернее вопрос даже такой как на драйверах настраивать значение выводов ?
Какая используется библиотека - ХЗ!
Что написано в скетче - ХЗ!
Как светодиоды распаяны на ноги микросхемы - ХЗ!
Ответ на вопрос: ХЗ х ХЗ х ХЗ = ХЗ3
библиотека tm1628_Master, смысл прилагать текст скетча не вижу, семисегментные модули припаяны wt4031asr, и извините что так мало инфы дал на форумах почти не был
Вообще-то, я хотел Вам рассказать как можно настроиться на незнакомую плату (я как раз недавно это делал для TM1668), но ...
библиотека tm1628_Master
Вы предлагаете мне самому её гуглить, а если их несколько версий, то пытаться угадать какая именно у Вас? Ссылка, видимо, секретная?
смысл прилагать текст скетча не вижу
Смысла пытаться угадать как именно Вы формируете сегменты не вижу. Раз Вам лень привести скетч, то мне, тем более, лень угадывать что у Вас там написано.
извините что так мало инфы дал
Да, не извиняйтесь, мне Ваша инфа и не нужна вовсе, у меня-то нет проблемы. Я думал, что это нужно Вам, но, похоже, ошибся.
Нет вы не ошиблись и мне правдо очень нужно! Вы можете помочь ! Я ето понял Скажите что нужно я всё выложу
Ну вот скетчь но не мой он просто зажигает 2 сегмента
Если можно както наладить диалог с вами был бы рад
А библиотеку я нашёл наобум и уже не помню где ссылки не осталось ((( Как прикрепить сюда не знаю
Вот на всякий случай фото моего мучения
сегменты называются wt4031asr
Пока перевставьте вот так, а я через полчаса вернусь и посмотрю.
Я пока смотрю на вот эту библиотеку. Сверьте, у Вас такая или другая?
Она самая
Ну, в таком случае у меня для Вас плохая новость - её писал непрофессионал, а потому менять придётся много.
Для начала я обясню Вам суть проблемы, чтобы Вы понимали главную идею, так Вам будет легче вносить правки - всегда лучше, когда понимаешь, что делаешь.
У 7-мисегментного индикатора есть 8 сегментов (да, я тоже вспомнил "Сказку о Тройке"). Они обозначаются буквами а-g и dp вот так
Автор библиотеки зачем-то ввёл нестандартное обозначение цифрами, но это не важно.
Поехали дальше.
В микросхемах типа Вашей обычно пишут какой сегмент индикатора к какой ноге микросхемы подводить. Но при разводке платы это часто бывает неудобно и люди подводят так, как удобно, чтобы поменьше перемычек делать, а потом отрабатывают это программно.
Обычно это (настройка соответствия ног сегментам) делает в одном месте. И, если что, то и менять надо в одном месте.
Вот посмотрите, как это сделано у меня в примере кода для TM1668. В строках 40-46 я задаю соответствие ног сегментам. А в строках 61-83 я задаю собственно цифры, буквы и прочие смиволы. Причеём цифры и буквы я задаю через сегменты, т.е. цифра 0 - это сегменты A, B, C, D, E и F, цифра 1 - это сегменты B и С. Там именно это и написано. Строки 61-83 всегда одинаковые -= они не зависят от того на каких сегментах сидят ноги микросхему, т.к., например, 1 всегда будет B и C, так ведь! При таком задании, если мне надо поменять соответсвие ног сегментам, я меняю только строки 40-46. Ничего другого менять не надо. В строках 61-83 поменяется всё само и цифры останутся правильными.
теперь посмотрите как это сделано у автора библиотеки. Сегменты заданы в строках 17-24 файла TM1628.h, а цифры заданы в строках 35-50 файла TM16XXFonts.h. Но цифры заданы не через сегменты! Они заданы прямо битами. Поэтому, если Выам придётся менять соответсвие пинам сегментам, то менять придётся сразу в двух (как минимум) местах, что доставит гораздоб больше головной боли. Вот почему я сказал. что писал непрофессионал.
у меня она 47. И после неё вставьте строку
Затем в файле TM1628.cpp найдите функцию
у меня это строки 129-133. И после неё вставьте функцию
Пока я буду писать, что делать дальше, сделайте это и убедитесь, что программа нормально компилируется (там это называется "проверка", кажется).
Убедитесь. А я пока пишу дальше.
скомпилировалось
Я видно не понял вообще ничего я закоментировал ети строки , но несколько сегментов таки загораются
хотя как я понял не должны совсем
совсем забыл работаю на ардуине МЕГА 2560
Я видно не понял вообще ничего я закоментировал ети строки , но несколько сегментов таки загораются
В том-то и дело!
У меня аналогичные строки являются основой для всего остального! Именно потому, для Вашей задачи хватило бы только их поменять.
А у автора библиотеки это строки не пришей кобыле хвост - всё остальное сделано само по себе, без них.
Сравниете мои строки 61-83 со строками 35-50 файла TM16XXFonts.h. Мои определения цифр сделаны через ранее определённые сегменты. А у автора бибилиотеки онс сделаны через голимые биты, а на определения сегментов (те строки. что Вы закомментировали) плевать.
Вот именно это и говорит о непрофессионализме, и именно это нам сейчас создаст массу головной боли.
Значит так, берите вот такой скетч
и скажите мне загорелись ли ВСЕ сегменты 0-ой цифры.
Попробуйте первую, втроую и т.д. цифры (там в комментария написано что менять).
Расскажите, что получилось.
'class TM1628' has no member named 'setRaw' ошибка компиляции
а теперь так:
'TM1628' does not name a type
В прошлом посте я просил Вас вставить в файлы библиотеки setRaw. Вы вставили? В те самые файлы, откуда берётся бибилиотека? Нормально сохранили? Боюсь, что нет. Вставьте как следует, сохраните. Попробуйте перезапустить IDE. И скажите, что получается.
всё как вы сказали всё на месте не работает ошибка
вот кусок из h
а вот из cpp
Так не бывает. Что-то не так.
1. Убедитесь, что Вы правите именно те файлы, которые берёт IDE, а не например, копию библиотеки в том месте, куда Вы её скачали. Скажите где они у Вас расположены. Вы знаете, где установлены библиотеки? Вы именно там правите?
2. Выкладывайте сюда файлы библиотеки которые правили - оба.
Всё правильно.
Значит, см. п.1 в предыдущем посте.
То, что старый скетч (без setRaw) у Вас компилировался говорит о том, что Вы поправили где-то в другом месте, а рабочая библиотека - не поправлена.
C:\Program Files (x86)\Arduino\libraries\TM1628-master это путь к библиотеке именно их правлю
Как прикрепть файлы тут ?
Прикреплять не надо, Вы дали куски пока хватит.
Правите в неправильном месте.
Посмотрите, если ли там рядом папка C:\Program Files (x86)\Arduino\libraries\TM1628
Есть?
нету
У меня есть скайп и майл если есть возможность через микрофон говорить ето бы упростило задачу )))
Если нет, ищите папку в которой лежат Ваши скетчи. Все скетчи. Её легко найти. В IDE нажмите "Файл"|"Настройки" И в самом верху увидите "Расположение папки скетчей.
Вот в папке скетчей и лежит подпапка libraries, а в ней должна быть подпапка TM1628. Есть? Вот там надо править.
нету там папки библиотек
Так, ну хорошо, но то место неправильное.
Давайте так.
1. В скетче закомментируйте строку с setRaw
2. Убедитесь, что компилируется.
3. Уберите ту папку TM1628-maste (скопируйте куда-нибудь и удалите нафиг.
4. запустите компиляцию и посмотрите. Скопилировалось?
Кстати, давайте скайп, я позвоню (не удивляйтесь женскому имени - это скайп жены)
alexey3148 - скайп
ссылка на даташит микросхемы тм1628 http://www.datasheet13.com/tm1628-%D0%B4%D0%B0%D1%82%D0%B0%D1%88%D0%B8%D...
В этом даташите не описаны команды и регистры памяти. Вот более подробный даташит - http://aitendo3.sakura.ne.jp/aitendo_data/product_img/ic/LED-driver/TM1628english.pdf
Изучил даташиит. Есть две новости.
1. (хорошая)
Эта микросхема почти ничем не отличается от TM1668, которую я мучил в посте, на который ссылался выше. мы можем в хвост и в гриву использовать те наработки.
2. (так себе)
Подключение у Вас явно нестандартное. У Вас на панели 8 цифр, а микросхема поддерживает до 7-ми (либо 6 при 12 сегментах, либо 7 при 11-ти сегментах). Значит либо одна, либо 2 цифры подключены как-то "через зад", с этим надо будет разбираться. (Похоже, подключено 6х12 - помните мы с шестью легко работали, а две левые - ни в какую).
Исходя из этих новостей (особенно из 2-ой), план такой. Нафиг любые бибилотеки, гораздо проще всё сделать простым кодом, на основе того, что у меня был. Когда разберёмся, обернуть его в "библиотеку" - как два пальца.
Сначала дожмём дисплей, потом займёмся кнопками, с ними проще (сколько их там у Вас физически, кстати?).
По времени, будь Ваш девайс у меня, я бы дожал его за три-четрые часа, но так, как мы работали сегодня, думаю несколько вечеров потратим. К сожалению, наступающая неделя у меня сумасшедшая (см., а я там руковожу конторой, которая собственно проводит мероприятие). Но посмотрим. Если Вам не горит это прямо "вчера", то за несколько вечеров, пусть не каждый день, без проблем всё сделаем.
Постараюсь завтра заранее уже выложить сектч для начала исследования.
Ну в общем у меня кое что получилось
Есть несколько вопросов, Я похоже не использовал библиотеку совсем или я неправильно чтото понял
Ну да ето ладно вот код
Циклы не вставлял с ними не работает при прогоне в циклах до 255 обоих значений загораются и светодиоды зелёные и красные
Ну в общем етот код прорисовывает полностью все кластеры 6ти экранчиков
потом в первом пишет по порядку циферки а дальше сбой
С адресацией я так и не понял как она сформирована
Только 6-ти? Т.е. самые левые таки не работают.
Алексей, пока суд да дело, Вы бы не посмотрели на эти две самые левые цифры, которые мы вчера засветить не смогли, как и куда они подключены. Может они вообще как-то отлельно (мимо этой микросхемы), а если к ней, то к каким пинами. Возьмите мультиметр, посмотрите. А то, легально-то 8 цифр к микросхеме подключить нельзя, значит есть там какая-то хитрость в подключении.
Мы сегодня сделаем всё без библиотеки вовсе, там всё будет в наших руках, так что, прорвёмся.
я же говорю все заработали
они по три цифры
Знаете непонимание оттого, что мы говорим на разных языках.
Давайте, чтобы понимать друг друга, договоримся о терминоголии.
1. Индиатор или цифра - это 7-сегментный индиктор. Их у Вас 8. Давайте пока договоримся об их нумерации справа налево. Самый правый - нулевой, самый левый - седьмой.
2. сегмент - один из восьми сегментов индикатора A, B, ... G, Dp
3. Дополнительный светодиод - отдельно стоящий светодиод, который загорается при включении какого-нибудь неиспользуемого для цифр семента того или иного индикатора.
Как я Вас понял, у Вас светились 7 индикаторов из 8-ми (светились с 0 по 6-ой, а седьмой не светился). Правильно?
То, что при значении 48 светилось два сразу - правильно. Очевидно светились те, которые светилдись при 16 и 32. так ведь? Попрбуйте там не 48, а 64.
Но, по любому, управление этой микросхемой очень простое и мы сегодня просто поуправляем ею "в лоб". Безо всякой библиотеки. Это будет проще потому, что не надло угадывать что там в библиотеке куда выведено.
Сейчас у емня дергание туда сюда, но в 6 я точно свободен и мы этим займёмся.
у меня светились 6 семисегментных индикаторов они по три в блоке а не по 4ре как вам кажется ))
Тоесть полностью работали оба модуля по три 7ми сегментных блока
Ну как то так
По поводу адресов нашёл адреса отдельных светодиодов 2.64-зелёный , 0.64-второй зелёный, 7.64 - первый красный, 6.64 - второй красный
Не теряйте времени на адреса
Запустите вот этот скетч и скажите мне что засветлисось. Я ожидаю, что засветится ВСЕ, ЧТО МОЖЕТ. Так ли это?
Если всё засветилось хорошо, то поэкспериментируйте со строк 77. Там можно писать
setBrightness(0); // ничего не светится
до
setBrightness(8); // максимальная яроксть
Ну и средние значения между 0 и 8. Работает установка яркости?
вы абсолютно правы загорелось всё
Яркость регулируется
Отличная новость!
Значит, мы всё без проблем сделаем безо всякого траха с чужой библиотекой (как видите, мы её не используем вовсе).
Кстати, мы договоаривались на 6, но я могу начать сейчас (правда в 5 будет перерыв на полчаса). Если Вы тоже можете, так давайте начнём.
Естественно могу
скайп ?