7seg на hc595 4digit

Обсуждаем контроллеры компании Atmel.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 15788
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Динамическая индикация обычно увязана и со сканированием кнопок.
Для удобства используем кнопки на позиционных ключах плюс контрольный вход.
В данном случае теоретически 4 кнопы прицепить можно (и варианты с одновременным нажатием группы кнопок).
Основная программа получает уже готовый результат от сканера в виде байтика данных (плюс флаг запроса - то уж на усмотрение).
:roll:
Реклама
Друг Кота
Сообщения: 9583
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

olegue писал(а):бы и сам показывал и на web-сервер передавал.
в соседней теме делали...
дом_2.jpg
(196.83 КБ) 52 скачивания
olegue писал(а):хотелось бы разбросать их по дому, котел, гараж и через nrf24 соединить их с базой
тоже делали...
Схема_5.jpg
(62.78 КБ) 53 скачивания
есть и другие модули... у них потребление меньше... аккума на дольше хватает...
Схема_6.jpg
(70.25 КБ) 64 скачивания
короче... всё уже делали))
:tea:

Добавлено after 5 minutes 10 seconds:
olegue писал(а):яркость в норме тольок если показывает время, даже в этом варианте.
связался ты с динамической индикацией))
у статической таких проблем нет...
динамическая индикация оправдана только когда много пикселей... типа больших панелей... и т.д.
1.jpg
(93.27 КБ) 53 скачивания
а делать динамическую индикацию для простенького LED индикатора... не вижу никакого смысла))
:tea:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

[uquote="Martian",url="/forum/viewtopic.php?p=4546086#p4546086"]Может быть, даже заработает :)[/uquote]

Не заработало. Где -то в районе таймера проблема.
1. переменная displaytime станет глобальной и объявлена один раз. Может это и невыгодно, зато наглядно, а не разбросано по всему коду int display
Но эта идея очень правильная , как минимум не задваивается код
Но я нашел из за чего яркость у меня глючит.
убрал строки отладочные строки :

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

// Serial.println("Выполняется действие 2");
и все стало ОК

Добавлено after 41 minute 38 seconds:
[uquote="olegue",url="/forum/viewtopic.php?p=4546386#p4546386"]
1. переменная displaytime станет глобальной и объявлена один раз. Может это и невыгодно, зато наглядно, а не разбросано по всему коду int display
Но эта идея очень правильная , как минимум не задваивается код[/uquote]

но после переделки кода
Спойлер

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

#include "RTClib.h"
RTC_DS1307 rtc;

#include <GyverNTC.h>
GyverNTC therm(0, 10000, 3950);
//---- ПИНЫ ----
byte SCLK = 7;
byte RCLK = 6;
byte DIO = 5;
//---- ПИНЫ ----

#include <TM74HC595Display.h>
#include <TimerOne.h>
#include <Button.h>
TM74HC595Display disp(SCLK, RCLK, DIO);

unsigned long dispIsrTimer, countTimer;

const int buttonPin = 2;
Button button(buttonPin);
int buttonPressCount = 0;

int displaytime;
float displaytemp;

void setup() {
  Serial.begin(57600);
  rtc.begin();
  button.begin(); 
}

void loop() {


    // Обновляем состояние кнопки
  button.read();
  DateTime now = rtc.now();
  // Проверяем, было ли нажатие кнопки
  if (button.pressed()) {
    // Увеличиваем счетчик нажатий на кнопку
    buttonPressCount++;
    disp.clear(); 
    
}
    // Выполняем действие в зависимости от значения счетчика нажатий
    switch (buttonPressCount) {
      case 1:
              displaytime = (now.second());break;
      case 2:
              displaytime = now.year();break;        
      case 3:
              displaytemp = therm.getTempAverage();break;        
      // Если было больше трех нажатий, счетчик сбрасывается
      default: 
             displaytime = ((now.hour() * 100) + now.minute());
        buttonPressCount = 0;
        break;
    }

     if (millis() - countTimer > 1000) {   // каждые 50 миллисекунд ("прозрачный" аналог delay)         

                 if (buttonPressCount  == 3)  {disp.float_dot(displaytemp, 1); }
                 else
                 {disp.digit4(displaytime);}
                 countTimer = millis();            // сбросить таймер
            }        
  
  disp_isr();                         // динамическая индикация
 
}

void disp_isr() {
  if (micros() - dispIsrTimer > 300) {       // таймер динамической индикации (по-русски: КОСТЫЛЬ!)
    disp.timerIsr();                         // "пнуть" дисплей
    dispIsrTimer = micros();                 // сбросить таймер
  }
}
полчил те же проблемы с неоднородной яркостью. чудеса!!!
Это не хвост, это антенна
Сообщения: 1495
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

С динамической индикацией никаких проблем нет. Мало того. Статика это потребление большего тока по сравнению с динамикой. А это немаловажно. При выборе источника питания.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 15788
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Это если нет взаимоперекрывающихся процессов (обработка дисплея идет на прерываниях или остальные части программы заметно меньше, чем время индикации одной позиции с учетом интервалов обработки и вывода данных).
Если чего-то или неравномерно высвечивает или "мерцает" - где-то программная ошибка.
В случае самостоятельно написанной прожки разобраться легче, а при использовании нескольких библиотек - то покопаться придется...
Serial.println(val, format) ведь немало времени занимает (учитывать скорость передачи).
:roll:
Реклама
Друг Кота
Сообщения: 9583
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Сообщение roman.com »

Demiurg писал(а):С динамической индикацией никаких проблем нет.
С динамической индикацией проблемы есть - портится зрение)).
Demiurg писал(а):Мало того. Статика это потребление большего тока по сравнению с динамикой. А это немаловажно. При выборе источника питания.
чё ?
:shock:
закон сохранения энергии уже отменили ? ))
:))
Реклама
Модератор
Аватара пользователя
Сообщения: 19100
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

roman.com, и чё?
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Это не хвост, это антенна
Сообщения: 1495
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Del
Последний раз редактировалось Demiurg Вс фев 25, 2024 19:57:21, всего редактировалось 1 раз.
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 19100
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

Demiurg, 1. не надо обзываться. оскорбления запрещены правилами форума.
2. не надо портить сделанную цитату. у тебя получилось, что это были твои слова, а не его. выглядит так, что ты обозвал себя самого.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Это не хвост, это антенна
Сообщения: 1495
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

[uquote="Starichok51",url="/forum/viewtopic.php?p=4547575#p4547575"]Demiurg, 1. не надо обзываться. оскорбления запрещены правилами форума.
2. не надо портить сделанную цитату. у тебя получилось, что это были твои слова, а не его. выглядит так, что ты обозвал себя самого.[/uquote]
Пардон...

Добавлено after 8 minutes 27 seconds:
Статика. Это потребление всех сегментов и знакомест. В отдельно взятый момент времени. А динамика это потребление сегментов одного знакоместа в отдельно взятый момент времени. И что ты хотел сказать про закон сохранения энергии. Я совсем не понил.
Последний раз редактировалось Demiurg Вс фев 25, 2024 20:02:45, всего редактировалось 1 раз.
Контактная информация:
OKF
Это не хвост, это антенна
Сообщения: 1453
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

Так мы, глядишь, и до вечного двигателя дойдём.)
Модератор
Аватара пользователя
Сообщения: 19100
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

на самом деле при 4 разрядах при динамике не нужно увеличивать ток в 4 раза по сравнению со статикой.
даже можно оставить тот же ток, как и при статике - инерция глаз даст практически ту же яркость.
у меня в термометрах ток сегмента 4-7 мА, в зависимости от напряжения на аккумуляторе, а видно прекрасно.
так что, статика при 4 разрядах по потреблению проигрывает в 4 раза против динамики.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Друг Кота
Аватара пользователя
Сообщения: 3794
Зарегистрирован: Ср дек 24, 2008 09:58:58

Сообщение Ser60 »

О - пока писал опередили. Полностью согласен с предыдущим постом.
На примере индикаторов с 4 цифрами, при динамической индикации глаз видит каждую отдельную цифру в течении 1/4 части всего времени. Соответственно, яркость цифры будет меньше, чем при статической индикации при том же токе через сегменты. Учитывая, что зависимость яркости большинства светодиодов от тока близка к логарифмической (с неким коэффициентом, может быть даже близка к линейной в зависимости от модели), для получения той же яркости цифр при динамической индикации следует увеличивать ток через светодиоды экспоненциально (или, как минимум, также линейно). Но тут ещё накладывается нелинейность самого глаза (эта зависимость также близка к логарифмической) и зависимость его чувствительности от цвета. В результате токопотребление дисплея за период развёртки всех цифр может быть как больше, так и меньше чем при статической. Однако, скорее больше, чем меньше.
Это не хвост, это антенна
Сообщения: 1495
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

[uquote="Ser60",url="/forum/viewtopic.php?p=4547804#p4547804"]...[/uquote]
Тьфу, йопт. Пардон. Не сдержался....
4 разряда. 7 сегментов. Про точку я уже молчу. Пусть 10 мА. Это уже 280 мА. Статика. Динамика. Один разряд. 70 мА. На конкретно взятый момент времени. И я уже могу выбирать другой источник питания. Это вопрос цены.
Если мы говорим о самоделках. Ну тогда да. Там вопрос цены не стоит.
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

Вот есть у меня 3 одинаковых индикатора по 4 цифры каждый. Как к ардуине подключить что бы они показывали одноверменно 3 температуры от трех разных датчиков?
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

т.е надо писать свою библиотеку?
Друг Кота
Аватара пользователя
Сообщения: 15788
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Динамическая индикация основана на инерционности зрения.
А тут не все так однозначно - можно использовать не такой уж большой ток для достаточно корректного восприятия (соответственно и экономия по питанию). Да и сам алгоритм сканирования может быть не так уж и равноценен простому делению на количество позиций.
К примеру те же "беглые строки" или демонстрационные экраны на статике как-то и прожорливо и довольно часто не реализуемо.
Плюс экономия по компонентам и монтажу, размерам устройства.
8)
Насчет трех (и более) индикаторов - можно и динамику и статику и оба метода вместе.
Все зависит от наличия компонентов...
Естественно под свою схему придется и свою программу написать (не обязательно как библиотеку - достаточно дополнительные файлы в проекте сделать).
:roll:
OKF
Это не хвост, это антенна
Сообщения: 1453
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

[uquote="olegue",url="/forum/viewtopic.php?p=4547824#p4547824"]Вот есть у меня 3 одинаковых индикатора по 4 цифры каждый. Как к ардуине подключить что бы они показывали одноверменно 3 температуры от трех разных датчиков?[/uquote]
Для начала, бабушка, иметь мозги. Затем, эти мозги разложить по полочкам. Только и всего.)
Модератор
Аватара пользователя
Сообщения: 19100
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

olegue писал(а):т.е надо писать свою библиотеку?
ничего нового создавать не надо. соединить 3 модуля индикаторов и просто отправить 3 раза существующими функциями.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Собутыльник Кота
Аватара пользователя
Сообщения: 2977
Зарегистрирован: Сб май 21, 2016 11:04:52
Откуда: Беларусь

Сообщение olegue »

[uquote="OKF",url="/forum/viewtopic.php?p=4547836#p4547836"]Для начала, бабушка, иметь мозги. Затем, эти мозги разложить по полочкам. Только и всего.)[/uquote]
да почем я знаю есть у бабушки мозги или нет, на аватарке я слева.
Starichok51 писал(а):ничего нового создавать не надо. соединить 3 модуля индикаторов и просто отправить 3 раза существующими функциями.
а вот эта тема мне сразу нравиться!
Ответить

Вернуться в «AVR»