Привет Гость!
Рады видеть Вас на МАЛАТКЕ! Внимание!!! Ваши права ограничены.
Чтобы снять ограничения и не просматривать лишний контент Войдите или
Зарегистрируйтесь на сайте.
С уважением Администрация сайта
Сейчас: 21.12.2024, 19:44.
Доброй ночи. Сегодня я сново не сплю и то, что я расскажу,думаю, вас заинтересует. Мы попытаемся понять принцип действия динамической индикации.
Цитата
Динамическая индикация – это метод отображения целостной картины через быстрое последовательное отображение отдельных элементов этой картины. Причем, «целостность» восприятия получается благодаря инерционности человеческого зрения.
Вот на анимашке ниже приведено как работает динамическая индикация.
Семисегментный индикатор — устройство отображения цифровой информации. Это — наиболее простая реализация индикатора, который может отображать арабские цифры, некоторые буквы.
У нас есть 3-х разрядный семисегментный экранчик от тюнера или купленный, или самодельный(7 светодиодов)...неважно с чего он...Наш экран без внутренней электроники(дешифратора и т.п).
Выше принципиальная схема hlec-t512srwa семисегментного экрана(стоит в Украине 7 грн) с общим анодом. За основу экрана взято светодиоды. С экрана выходит 12 проводов, 12-тый лишний(можно откусить ) из них 8 общих (8 потому,что есть еще точка) катодов для трех сегментов(A,B,C,D,E,F,G,D,DP), с каждого разряда выходит 1 разрешающий анод . Анод подключаем на "+" питания (5 вольт) через резистор на 470 ом. А катоды посадить на "-"(проверить исправность). Я подключал следующим образом к Arduino UNO.
Где R2,R3,R4 резисторы равны: 4,7 -470 Ом, в принципе можно их и не ставить. A R1 = 1KOм. Теперь сама программка. Скачать программку Я присвоил каждому сегменту имя и определённый коннектор на ардуино:
Код
const int d1 = 7; const int d2 = 8; const int d3 = 9; const int a = 12; const int b = 10; const int c = 3; const int d = 5; const int e = 6; const int f = 11; const int g = 2; const int h = 4; const int key = 13;
Как я уже писал на индикаторе 7 сегментов и 1 точка (A,B,C,D,E,F,G,D,DP) DP- точка, она у нас h."key"- это кнопка, 13 коннектор. Теперь установил некоторые на вход(13) и остальные на выход.
Максимальное значение сегмента = 9. То есть у нашей программе должно быть описано 10 разных цифр(0.1.2.3.4.5.6.7.8.9). Например: цифра 1 у меня будет так:
Код
void one () // один { digitalWrite(b,SEGMENTS); digitalWrite(c,SEGMENTS); }
Чтобы числа не переключались с огромной скоростью я сделал "замедление у 20 раз".
Код
if (digitalRead(key) == LOW) {n++;} // если нажата кнопкa if(n >= 20) { n0++; n = 0; } // снижаем скорость нарастания чисел(20 к 1),наш атмега слишком шустрый)))
Еще добавлен понт при включении, но это вы увидите, когда собирете. И если число больше за 999 на индикаторе горит "HHH". Если вы используете экран с общим катодом, то удалите строку.
Код
#define ANODE // закомментируйте или удалите, если у вас общий катод.
Если что нибудь не выходит- вопросов не стесняемся.
Дата: Воскресенье, 02.03.2014, 23:50 | Сообщение # 2
Группа: Гости
Хочу указать на одну ошибку в схемотехнике - ставит резисторы на общий электрод (анод или катод) неверно, при загорании разного количества сегментов будет изменятся яркость индикатора. Лучше не экономить и поставить резисторы на каждый сегмент.
Гость, в идеале выглядело бы все иначе, это схема для начинающих, тех, кто пытается только понять принцип действия, динамической индикации, схема не претендует на практическое использование. Использовалось всего по минимуму. Для индикации можно использовать спецмикры, например РТ6961 и т.п. Нет человека-которого нельзя научить... Есть человек-который не хочет учиться!!!
День добрый. Подскажите пожалуйста. Собрал вашу схемку,(только индикатор 4х разрядный), поменял в скетче распиновку, но ни одна цифра нормально не отображается
Добавлено (23.04.2014, 16:36) --------------------------------------------- Получается вот такая ерунда
Привет всем автор скинь пожалуйста полный скеч ну очень хочу повторить а в проге не получается все выстовить правильно:-):-):-):-)
Так в статье написано откуда можно скачать. К статьи, сегодня обновил немного статью . Нет человека-которого нельзя научить... Есть человек-который не хочет учиться!!!
Че делать? Подскажите. led_display_v1_0.ino:9:7: error: #if with no expression led_display_v1_0.ino: In function 'void one()': led_display_v1_0:79: error: 'SEGMENTS' was not declared in this scope led_display_v1_0.ino: In function 'void two()':
Добавлено (23.05.2014, 22:57) --------------------------------------------- Извините if не заметил в самом верху, проблема решена .
Че делать? Подскажите. led_display_v1_0.ino:9:7: error: #if with no expression led_display_v1_0.ino: In function 'void one()': led_display_v1_0:79: error: 'SEGMENTS' was not declared in this scope led_display_v1_0.ino: In function 'void two()': Извините if не заметил в самом верху, проблема решена .
Вот и хорошо, а можно фото того, что у вас получилось? Нет человека-которого нельзя научить... Есть человек-который не хочет учиться!!!