кто нибудь сам паял TM1637 ?

Вопросы от новичков
Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25.01.2018{, 22:23}
Репутация: 95
Откуда: Bukovyna
Имя: Василий

кто нибудь сам паял TM1637 ?

#21

Сообщение Labu559 » 04.09.2020{, 19:52}

Di123 писал(а):
04.09.2020{, 17:47}
у 1637 есть 8 сегментов и 6 управляющих индикаций
Всё совершенно верно! Но это было для индикатора с ОА. А для ОК мы всё перевернули наоборот и стало 6 сегментов и 8 разрядов, потому как ток течет через полевик, или биполярник, или биполярник с затвором только в одном направлении, потому как полупроводники. А направление тока зависит от структуры (n-p-n /p-n-p, N-канал/P-канал),точно так-же и через диод, светодиод. Ведь не зря Александр пытался заострить Ваше внимание на цитате о железе? Микросхема как выпускала ток на выводы с N-канальными ключами и принимала с P-канальных выводов в случае с ОА, так и продолжает это делать всё точно так-же для случая с ОК, и не имеет никакого значения как производитель обозвал это, сегменты(Seg) или сетки(Grid), а имеет значение как подключились к ней, куда катод и анод соответственно. Думаете выводы для ТМ1638 по другому называются? Нет. Мы ведь тоже обзывем переменные чтоб нам было понятно, ФЛПрог их меняет на gtv, а безсовестный компилятор вообще имена заменяет адресами памяти. От этого разве что-то меняется?
Теперь понятней о чем говорит железо?

Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03.11.2018{, 19:38}
Репутация: 29
Имя: Дмитрий

кто нибудь сам паял TM1637 ?

#22

Сообщение Di123 » 05.09.2020{, 02:59}

ясно я по другому предстовлял себе подключение
я думал там выход можно сделать как вход с тем же назначением как в ардуино допустим когда цепляем ей на А0 сегмент А и просто в блоке выбираем ОА или ОК а А0 просто становится выходом вместо входа

ладно придётся ОА заказывать с десяток

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

кто нибудь сам паял TM1637 ?

#23

Сообщение Sancho » 05.09.2020{, 08:10}

Di123 писал(а):
05.09.2020{, 02:59}
ладно придётся ОА заказывать с десяток
И это полностью будет соответствовать даташиту :)
СпойлерПоказать
2020-09-05_08-09-53.png
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

rogekam
Рядовой
Сообщения: 77
Зарегистрирован: 24.06.2020{, 21:21}
Репутация: 28
Откуда: RUS31
Имя: Egor

кто нибудь сам паял TM1637 ?

#24

Сообщение rogekam » 05.09.2020{, 14:21}

Как вариант использовать MAX7219 для индикаторов с ОК. Внешнее регулирование тока сегментов индикатора. Встроенный блок в FLprog имеется. Это будет дешевле, чем покупать новые индикаторы.
Так как мне требовался максимальный набор символов и букв, я использовал TM1637 и пользовательский блок 1637LabUW9 уважаемого Labu559.

Аватара пользователя
ViktorPetrov
Лейтенант
Сообщения: 677
Зарегистрирован: 09.04.2018{, 23:56}
Репутация: 49
Имя: Виктор

кто нибудь сам паял TM1637 ?

#25

Сообщение ViktorPetrov » 05.09.2020{, 20:11}

Есть еще вариант ,как твою ТМ1637 подружить с индикатором ОК :smile198: ,надо только посмотреть вглубь до самого дна ,не только в ширь :)

Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25.01.2018{, 22:23}
Репутация: 95
Откуда: Bukovyna
Имя: Василий

кто нибудь сам паял TM1637 ?

#26

Сообщение Labu559 » 09.09.2020{, 11:50}

ViktorPetrov писал(а):
05.09.2020{, 20:11}
надо только посмотреть вглубь до самого дна ,не только в ширь
Ага, а можно ещё... как у цирюльника Голохвастова:
"Когда человек не такой, как вообще, потому один такой, а другой такой, и ум у него не для танцевания, а для устройства себя, для развязки свого существования, для сведения обхождения, и когда такой человек, ежели он вчёный, поднимется умом своим за тучи и там умом своим становится ещё выше Лаврской колокольни, и когда он студова глянет вниз, на людей, так они ему покажутся такие махонькие-махонькие, всё равно как мыши... пардон, как крисы... Потому что это же Человек! А тот, который он, это он, он тоже человек, невчёный, но... зачем же?! Это ж ведь очень и очень! Да! Да! Но нет! " :D

В железе не испытано, проверено в выводе в монитор порта, в Протеусе в пошаговой симуляции индикация есть, в постоянной не гасятся "залипают" старые сегменты. Как принцип (демо) решения задачи ("кошмара программиста"), так что звиняйте, кому надо- дерзайте.
Bit_to_Segmental_Indication_(CODE).ubi
(61.66 КБ) 56 скачиваний
Dig2Seg_withMonitor.ino
(2.52 КБ) 42 скачивания
Можно применять и для 595-х и HT16K33 и ТМ1638 (8х8) и т.д. и т.п. для посегментной динамической индикации.
Sancho писал(а):
04.09.2020{, 13:55}
То, о чём написал Василий, я проходил здесь.
Ув. Sancho, Александр это оно или как думаешь? Хотя вряд ли кому это пригодится, так для разминки.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

кто нибудь сам паял TM1637 ?

#27

Сообщение Sancho » 09.09.2020{, 14:36}

Labu559 писал(а):
09.09.2020{, 11:50}
Ув. Sancho, Александр это оно или как думаешь? Хотя вряд ли кому это пригодится, так для разминки
Я перегонял массив из 16 символов по 8 сегментов в 16 одинаковых сегментов на 8 штук.
кодПоказать

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

// передача из одного массива другому
byte q, w;// вспомогательные байты
for(int i=0; i<8; i++){
	q=0;
	w=0;
	for(z=0; z<8; z++){
		q<<=1;
		w<<=1;
		if (  !!(array_1_mode[z+8] & (1 << i)) )  q|=1;
		if (  !!(array_1_mode[z]   & (1 << 1)) )  w|=1;		
	}
	array_HT16[ i ]=q;
	array_HT16[i+8]=w;
Всё работает.
Но в моём случае хватало размерности мс :)

Отправлено спустя 23 минуты 25 секунд:
Labu559 писал(а):
09.09.2020{, 11:50}
Хотя вряд ли кому это пригодится, так для разминки.
Мне пришлось. Разминка получилась.
Еще там точка автоматом прицепляется к нужному месту, выравнивание по правому краю в выделенных наборов знакомест ( их у меня было 5), индикация только старших символов при переполнении.
Остался только тестовый проект в протеусеПоказать
screenshot_20-09-09_14-56-48.png
Отправлено спустя 7 минут 4 секунды:
Sancho писал(а):
17.05.2019{, 15:59}
Всё это связано с тем, что индикация при индикаторах с ОА происходит не по-буквенно, а по-строчно: сначала все А, затем В, C...H.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25.01.2018{, 22:23}
Репутация: 95
Откуда: Bukovyna
Имя: Василий

кто нибудь сам паял TM1637 ?

#28

Сообщение Labu559 » 09.09.2020{, 22:43}

Sancho писал(а):
09.09.2020{, 15:07}
Разминка получилась.
Александр, я чесно говоря не понял в чём смысл отрицания отрицания (опечатка ?), не встречал такой записи:
if ( !!(array_1_mode[z] & (1 << i)) ) w|=1; разве это не то же самое
if ( array_1_mode[z] & (1 << i)) w|=1;
сравниваем

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

if ( array_1_mode[z]   & (1 << i))  w|=1; // твою строку с моей
convByte |= ((arrBytes[i] & tempShift)<<i); // это я соединил в одну 
/* две строки функции из скетча 
tempBuff = arrBytes[i] & tempShift; 
convByte |= tempBuff<<i;
*/
делают то-же с небольшой разницей:
ты двигаешь байтом w<<=1, в который пишешь 1 только если бит-сегмент ==1, но в каждом цикле делаешь проверку if,
я двигаю битом перед записью в байт, но из-за отсутствия проверки, когда бит-сегмент ==0 лишний раз обнуляю ноль.
И разный порядок бит- младший слева у тебя, у меня-справа(у меня ошибка наверное).
Стили немного разные.
Спасибо, за потраченное время, было интересно и полезно поковыряться!

Ответить

Вернуться в «Начинающим»