Время

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем yhl, 5 ноя 2015.

  1. yhl

    yhl Нерд

    Подскажите можно ли вывести время на quad display c модуля RTC и как это сделать?
     
  2. geher

    geher Гуру

    Можно.
    Например, так:
    Код (Text):

    const static uint8_t qadNumerals[] =
       {QD_0, QD_1, QD_2, QD_3, QD_4, QD_5, QD_6, QD_7, QD_8, QD_9};

    void displayTime(int hour,int minute){
      displayDigits(QUAD_DATA,
                              qadNumerals[hour/10],
                              qadNumerals[hour%10],
                              qadNumerals[minute/10]&QD_DOT,
                              qadNumerals[minute%10]);
    }
     
    Остается только получить с RTC текущее время в виде часов и минут, а это уже зависит от использованной библиотеки.
     
    Последнее редактирование: 5 ноя 2015
  3. yhl

    yhl Нерд

    А можно по подробней ?
     
  4. Например так, только выводится в порт.
    Код (C++):
    #include <DS1307RTC.h>
    #include <Time.h>
    #include <Wire.h>

    void setup() {
      Serial.begin(9600);
      while (!Serial) ; // wait for serial
      delay(200);
      Serial.println("DS1307RTC Read Test");
      Serial.println("-------------------");
    }

    void loop() {
      tmElements_t tm;

      if (RTC.read(tm)) {
        Serial.print("Ok, Time = ");
        print2digits(tm.Hour);
        Serial.write(':');
        print2digits(tm.Minute);
        Serial.write(':');
        print2digits(tm.Second);
        Serial.print(", Date (D/M/Y) = ");
        Serial.print(tm.Day);
        Serial.write('/');
        Serial.print(tm.Month);
        Serial.write('/');
        Serial.print(tmYearToCalendar(tm.Year));
        Serial.println();
      } else {
        if (RTC.chipPresent()) {
          Serial.println("The DS1307 is stopped.  Please run the SetTime");
          Serial.println("example to initialize the time and begin running.");
          Serial.println();
        } else {
          Serial.println("DS1307 read error!  Please check the circuitry.");
          Serial.println();
        }
        delay(9000);
      }
      delay(1000);
    }

    void print2digits(int number) {
      if (number >= 0 && number < 10) {
        Serial.write('0');
      }
      Serial.print(number);
    }