Паяльник

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Паяльник » Микроконтроллеры » Часы на RTC1302 и TM1637


Часы на RTC1302 и TM1637

Сообщений 1 страница 3 из 3

1

Простые в сборке часы.

Корпус часов применен от упаковки детской соски известной марки (Avent).

Список деталей:
1. Модуль часов RTC1302
2. Модуль LED индикации зеленый на TM1637
3. м/к Atmega328P
4. кварц 16МГц

http://sd.uploads.ru/t/J5ky0.jpg

http://s9.uploads.ru/t/DvQnd.jpg

http://s7.uploads.ru/t/TCJGq.jpg

скетч

Код:

// Часы на RTC-модуле DS1302 и индикацией на TM1637
#include <Arduino.h>
#include <DS1302.h>
#include <TM1637.h> // CLK DIO VCC GND
#define CLK 11
#define DIO 12
TM1637 Display1(CLK, DIO);
int8_t DigTime[] = {0,1,2,3};

// Init the DS1302 (RST, DAT, CLK)
DS1302 rtc(10,9,8);

// Init a Time-data structure
Time t;

void setup()
{
  // Установка времени на RTC-модуле

  // Set the clock to run-mode, and disable the write protection
  rtc.halt(false);
  rtc.writeProtect(false);

  // Setup Serial connection
  //  Serial.begin(9600);

  // The following lines can be commented out to use the values already stored in the DS1302
  // rtc.setTime(11, 13, 00);     // Set the time to 12:00:00 (24hr format)
  // rtc.setDate(01, 06, 2018);   // Set the date to August 6th, 2010

  Display1.set(7);
  Display1.init();
  Display1.display(DigTime);

}

void loop()
{
  // Get data from the DS1302
  t = rtc.getTime();

  // Send date over serial connection
  //  Serial.print(t.date, DEC);
  //  Serial.print(".");
  //  Serial.print(t.mon, DEC);
  //  Serial.print(".");
  //  Serial.println(t.year, DEC);

  // Send Day-of-Week and time
  //  Serial.print(t.hour, DEC);
  //  Serial.print(":");
  //  Serial.print(t.min, DEC);
  //  Serial.print(":");
  //  Serial.println(t.sec, DEC);


  // Wait one second before repeating :)
  delay(1000);

  DigTime[3] = t.min %10 ;
  DigTime[2] = (t.min % 100) / 10 ;
  DigTime[1] = t.hour % 10 ;
  DigTime[0] = (t.hour % 100) / 10 ;

  if ((t.hour > 6) && (t.hour) < 22) {
  Display1.set(7); // день
}
else {
  Display1.set(2); // ночь
}

  if ((t.sec % 2) == 0)
  {
    Display1.point(POINT_OFF);
  }
  else
  {
    Display1.point(POINT_ON);
  }

  Display1.display(DigTime);

}

0

2

Не удержался собрал такие же на макете для работы, типа "часы под боком", залил скетч, время установил как было на компе, проработали пол года, результат - убежали вперёд на 20 минут. Похоже модуль rtc1302 не очень точный. Напрашиваются кнопочки для подвода времени, не удобно каждый раз цеплять к компу, хотя раз в пол года, не так уж и напрягает.

0

3

Да, у меня тоже убегают вперед. Прицепил 3 кнопочки для подвода времени.

0


Вы здесь » Паяльник » Микроконтроллеры » Часы на RTC1302 и TM1637


создать форум