библиотека для ds3231/1307 с функцией blink

Тема в разделе "Arduino & Shields", создана пользователем вадимыч, 3 авг 2016.

  1. Добрый день , я начинающий сделал простые часы - nano + ds3231 + max7219 с семисегментным индикатором .
    Кто знает подскажите библиотеку для часового модуля с функцией blink .
    Blink нужна для "мигания" значений при установке часов / календаря кнопками .
    Сам искал что то ничего не мог найти .
     
  2. можно использовать прерывание


     
    fogary нравится это.
  3. Tomasina

    Tomasina Сушитель лампочек Модератор

    а зачем для этого библиотека? Решается добавлением пары строчек.
    Вот один из вариантов для приведенного на видео TM1637:
    Код (C++):
    void displayData()
    {
      unsigned long currDisplayUpdateTime = millis();
      static boolean flashFlag = true;
      if (millis() - lastUpdateTime > 1000) // обновляем дисплей раз в сек
      {
        if (flashFlag) Display.point(POINT_ON);
        else Display.point(POINT_OFF);
        // тут вывода данных
        Display.display(Digits);
        flashFlag = !flashFlag;
        lastUpdateTime = millis();
      }
    }
     
     
  4. DIYMan

    DIYMan Guest

    Преимущество прерывания в том, что оно будет приходить ровно через секунду, а не как бог на душу положит, если какой-то кусок кода в delay висит, не?

    Именно для этого в DS3231 выведены чудные ноги: SQW и 32 kHz - емнип там можно настроить так, чтобы уровень на ноге менялся с частотой в 1 Гц - вот вам и управляющий сигнал для показа/скрытия точек.
     
  5. Да , для разделительных точек между часами и минутами или что там между ними 1Гц как вариант пойдет,
    А если надо "мигать" с частотой менее 1Гц - например 500 или 200 миллисекунд ?
    Если я правильно понял то менее 1Гц с этих ног не снять .
    Мне надо "мигать" не точками а значениями часов / календаря при их установке кнопками.
     
  6. DIYMan

    DIYMan Guest

    Таймеры спасут отца русской демократии, я думаю ;)
     
  7. Если в библе есть функция blink то все просто - при установке времени например часов в нужном месте кода вызываем ее - значения часов мигают - ставим часы - поставили - переходим к установке минут - снова вызвали blink и т .д.
     
  8. lc.setDigit(0,7,hour/10,false); выводим десятки часов разряд 7 индикатора
    lc.setDigit(0,6,hour%10,false); выводим единицы часов разряд 6
    lc.setChar(0,5,'-',false); сегмент G вместо точек между часами и минутами разряд 5
    lc.setDigit(0,4,minute/10,false); выводим десятки минут разряд 4
    lc.setDigit(0,3,minute%10,false); выводим единицы минут разряд 3

    Вот например кусок кода вывода на индикатор часов и минут .
    Библиотека LedControl .
    Как сделать мигание например разрядов часов ?
     
  9. Пробовал так .
    if( здесь условие которое верно например через каждые 200 миллисекунд )
    {
    lc.setChar(0,7,' ',false); разряды индикатора 7 и 6 выключены
    lc.setChar(0,6,' ',false);
    }
    else
    {
    lc.setDigit(0,7,hour/10,false); разряды индикатора включены - выводим десятки и единицы часов
    lc.setDigit(0,6,hour%10,false);
    }
    Так работает , только код какой то получается , дебильный что ли ?
    И так для минут , дня недели , числа , месяца , года .

    Может есть еще варианты как сделать "мигание" ?