Проблемы Arduino ds3231to TM1638, проект будильника

Доброе утро, Я кодирую будильник на Arduino, используя DS3231 и TM1638. Код работает и время обновляется в последовательном мониторе, хотя время не обновляется на tm1638. Я прикреплю код сюда:

#include <DS3231.h>  
#include <TM1638.h> 
#include <Streaming.h>  
#include <SPI.h>  
#include <Wire.h>  
#include <InvertedTM1638.h>  
#include <TM1638.h>  
#include <TM1638QYF.h>  
#include <TM1640.h>  
#include <TM16XX.h>  
#include <TM16XXFonts.h>  
byte buttons;  
#define TM1638_STB D5  
#define TM1638_CLK D6  
#define TM1638_DIO D7  

TM1638 module(TM1638_DIO, TM1638_CLK, TM1638_STB);  
// DS3231 использует I2C — идентификатор устройства 0x68
// на мини-пинах Wemos SDA -> D1 и SCL-> Д2
DS3231 rtc;  
int hours;  
int minutes;  
int seconds;  
bool h12; 
bool PM;  
int data; 
RifTime t;  
char buffer[24];  

void setup()  
{  
  // настраиваем 7-сегментный дисплей
  module.clearDisplay();  
  module.setupDisplay(true, 2);  
  Wire.begin();  
  Serial.begin(115200);  

  Serial.println(F("\nDS3231 Hi Precision Real Time Clock"));  

  // Заполняем эти переменные датой и временем.
  int seconds, minutes, hours, dayofweek, dayofmonth, month, year;  

  // Пример для 15 апреля 2013 г., 10:08, понедельник — 2-й день недели.
  // Установите собственное время и дату в этих переменных.
  // день недели = 4; // День недели, первым может быть любой день, считается 1...7
  hours = 14; 
  minutes = 30;  
  seconds = 0;  
  year = 2019;  
  month = 8; // месяц 1...12
  dayofmonth = 28; // День месяца, 1...31

  data=( hours * 10000 + minutes * 100 + seconds * 1 ); 

  rtc.setClock(year,month,dayofmonth,hours,minutes,seconds);  
} 

void loop()  
{  
  rtc.getTime(t);  
  Serial << rtc.toString(buffer) << endl;

  delay(1000); // ничего не делать

  module.setDisplayToDecNumber(data,4,false);  

  if(seconds==60) 
  { 
    seconds=00; 
    minutes++; 
  } 
  if(minutes==60)
  {
    minutes=0;
    hours++;
  }

  if(hours==24) 
  { 
    data=00000000; 
  } 

  if((data)==143000) 
  { 
    module.setLEDs(0x0001); 
  } 
  else
  {
    module.setLEDs(0x0000);
  }

}

, 👍1


1 ответ


2

Вы устанавливаете переменную data только в функции настройки.

Вы также не печатаете data в Serial, а выводите rtc.toString(buffer).

Если данные не обновляются в методе loop, на дисплее постоянно отображается время, которое вы изначально установили в методе настройки.

,