Малаток-меню
Авторизация

Наш опрос
Сколько ВАМ лет?

Всего ответов: 90
Мини-чат
200
Статистика


Наш линк
Malatok.at.ua
Полезные ссылки
Это может быть интересно
[
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Викр, Дмытрохан  
Форум » IT-технологии » Arduino » Семисегментный 3-х разрядный индикатор , Arduino и кнопка. (Индикация на ардуино V1.0)
Семисегментный 3-х разрядный индикатор , Arduino и кнопка.
Викр Дата: Вторник, 19.06.2012, 04:42 | Сообщение # 1
Админ
Группа: Администраторы
Сообщений: 71
Награды: 6
Репутация: 100
Статус: Офлайн
Доброй ночи. Сегодня я сново не сплю и то, что я расскажу,думаю, вас заинтересует. Мы попытаемся понять принцип действия динамической индикации.

Цитата
Динамическая индикация – это метод отображения целостной картины через быстрое последовательное отображение отдельных элементов этой картины. Причем, «целостность» восприятия получается благодаря инерционности человеческого зрения.

Вот на анимашке ниже приведено как работает динамическая индикация.

Болтовня-болтовней а дело стоит, давайте начнем!

У вас выйдет примерно так.

Смотреть на Ютубе

Семисегментный индикатор — устройство отображения цифровой информации. Это — наиболее простая реализация индикатора, который может отображать арабские цифры, некоторые буквы.



У нас есть 3-х разрядный семисегментный экранчик от тюнера или купленный, или самодельный(7 светодиодов)...неважно с чего он...Наш экран без внутренней электроники(дешифратора и т.п).



Выше принципиальная схема hlec-t512srwa семисегментного экрана(стоит в Украине 7 грн) с общим анодом. За основу экрана взято светодиоды. С экрана выходит 12 проводов, 12-тый лишний(можно откусить biggrin ) из них 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) и остальные на выход.
Код
void setup() {
              pinMode(a, OUTPUT);                
              pinMode(b, OUTPUT);                
              pinMode(c, OUTPUT);                
              pinMode(d, OUTPUT);               
              pinMode(e, OUTPUT);                
              pinMode(f, OUTPUT);             
              pinMode(g, OUTPUT);                
              pinMode(h, OUTPUT);             
              pinMode(d1, OUTPUT);                
              pinMode(d2, OUTPUT);             
              pinMode(d3, OUTPUT);                
              pinMode(key, INPUT);               
             }

Максимальное значение сегмента = 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
Группа: Гости





Хочу указать на одну ошибку в схемотехнике - ставит резисторы на общий электрод  (анод или катод) неверно, при загорании разного количества сегментов будет изменятся яркость индикатора. Лучше не экономить и поставить резисторы на каждый сегмент.
 
Дмытрохан Дата: Понедельник, 03.03.2014, 16:49 | Сообщение # 3
Создатель сайта
Группа: Администраторы
Сообщений: 178
Награды: 7
Репутация: 103
Статус: Офлайн
Гость, в идеале выглядело бы все иначе, это схема для начинающих, тех, кто пытается только понять принцип действия, динамической индикации, схема не претендует на практическое использование. Использовалось всего по минимуму.  Для индикации можно использовать спецмикры, например РТ6961 и т.п.

Нет человека-которого нельзя научить...
Есть человек-который не хочет учиться!!!
 
Yader Дата: Среда, 23.04.2014, 16:41 | Сообщение # 4
Новичок
Группа: Пользователи
Сообщений: 1
Награды: 0
Репутация: 0
Замечания: 0%
Статус: Офлайн
День добрый. Подскажите пожалуйста. Собрал вашу схемку,(только индикатор 4х разрядный), поменял в скетче распиновку, но ни одна цифра нормально не отображается

Добавлено (23.04.2014, 16:36)
---------------------------------------------
Получается вот такая ерунда

Добавлено (23.04.2014, 16:41)
---------------------------------------------
1

 
Гость Дата: Воскресенье, 27.04.2014, 17:11 | Сообщение # 5
Группа: Гости





Привет всем автор скинь пожалуйста полный скеч ну очень хочу повторить а в проге не получается все выстовить правильно:-):-):-):-)
 
Дмытрохан Дата: Воскресенье, 27.04.2014, 23:24 | Сообщение # 6
Создатель сайта
Группа: Администраторы
Сообщений: 178
Награды: 7
Репутация: 103
Статус: Офлайн
Цитата Гость ()
Привет всем автор скинь пожалуйста полный скеч ну очень хочу повторить а в проге не получается все выстовить правильно:-):-):-):-)

Так в статье написано откуда можно скачать.
К статьи, сегодня обновил немного статью .


Нет человека-которого нельзя научить...
Есть человек-который не хочет учиться!!!
 
Гость Дата: Пятница, 09.05.2014, 13:30 | Сообщение # 7
Группа: Гости





Дмытрохан, нужна твоя помощь!!
 
Дмытрохан Дата: Суббота, 10.05.2014, 00:38 | Сообщение # 8
Создатель сайта
Группа: Администраторы
Сообщений: 178
Награды: 7
Репутация: 103
Статус: Офлайн
Гость, да с радостью. Только задайте вопрос)))

Нет человека-которого нельзя научить...
Есть человек-который не хочет учиться!!!
 
Гость Дата: Пятница, 23.05.2014, 22:57 | Сообщение # 9
Группа: Гости





Че делать?  Подскажите.
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 не заметил в самом верху, проблема решена .

 
Дмытрохан Дата: Воскресенье, 25.05.2014, 21:49 | Сообщение # 10
Создатель сайта
Группа: Администраторы
Сообщений: 178
Награды: 7
Репутация: 103
Статус: Офлайн
Цитата Гость ()
Че делать?  Подскажите. 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 не заметил в самом верху, проблема решена .

Вот и хорошо, а можно фото того, что у вас получилось?


Нет человека-которого нельзя научить...
Есть человек-который не хочет учиться!!!
 
Форум » IT-технологии » Arduino » Семисегментный 3-х разрядный индикатор , Arduino и кнопка. (Индикация на ардуино V1.0)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:
Новый ответ
Имя:
Текст сообщения:
Все смайлы
Опции сообщения:
Код безопасности:
Яндекс.Метрика
24 log 24 LOG statistick
счетчик посещений
Если вы видите это,
то ваш браузер устарел
и не поддерживает технологий
CSS 3.0