Проблемы 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);
}
}
@Alessandro, 👍1
1 ответ
▲ 2
Вы устанавливаете переменную data
только в функции настройки.
Вы также не печатаете data
в Serial
, а выводите rtc.toString(buffer)
.
Если данные не обновляются в методе loop
, на дисплее постоянно отображается время, которое вы изначально установили в методе настройки.
,
@Peter Paul Kiefer
Смотрите также:
- Питание светодиодной ленты - Сколько ампер?
- Как запитать Arduino и 1 цветную светодиодную ленту от одного источника питания
- Можно ли запитать 25 светодиодов через USB?
- Светодиодная панель ESP32 с регулируемой яркостью и MOSFET
- Почему мой код обрабатывает звуковой датчик так, как будто он всегда ВЫСОКИЙ?
- Как работать с матричной панелью WS2812B 16x16 от aliexpress
- Затемнение этого светодиода ~ 30 В с помощью ШИМ, что мне нужно?
- Питание Arduino и светодиодной ленты