реклама:

Модуль часов DS1307. Часть 8.

Модуль часов DS1307

Мне не понятно, почему такой мощный процессор как Atmega 2560, который является сердцем нашей платы Arduino, не имеет встроенного модуля часов. Для корректной работы контроллера нам необходимо знать дату и время. Это как раз и можно сделать с помощью внешнего модуля часов. Подключается он уже намного проще – всего 4 провода. На плате DS1307 вы найдете четыре вывода: SCL, SDA, VCC и GND.

Вот таблица соответсвия контактов модуля DS1307 и платы arduino:

Модуль часов DS1307 Контакты Arduino
SCL21
SDA20
VCC5V
GNDGND

Схема подключения:

Модуль часов DS1307

Фото реального подключения. Видно как я один контакт GND вставил сверху :)

Подключение модуля часов DS1307 Подключение модуля часов DS1307

Нажмите на фото для увеличения

Причем, 5V и GDN можно брать от туда же, где вы их брали для LCD дисплея, а можно подключать так, как указано на рисунке. Учитывая то, что мы подключили уже дисплей и часы, вы можете загрузить в ваш arduino пример, приведенный ниже. После загрузки дисплей должен засветиться и показать текущие дату и время.

Текст примера:

// include the library code:
#include <LiquidCrystal.h>
#include <Wire.h>
#include "RTClib.h"

// LCD пин управления яркостью
#define PWM_LED_PIN 3 
// LCD пин управления контрастом
#define PWM_LED_CONTRAST 4 
// LCD другие пины
#define PIN_LCD_RS 39
#define PIN_LCD_EN 41
#define PIN_LCD_D4 43
#define PIN_LCD_D5 45
#define PIN_LCD_D6 47
#define PIN_LCD_D7 49

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd( PIN_LCD_RS, PIN_LCD_EN, PIN_LCD_D4, PIN_LCD_D5, PIN_LCD_D6, PIN_LCD_D7 );
RTC_DS1307 RTC;

void setup() {   
  analogWrite( PWM_LED_PIN, 255 );
  analogWrite( PWM_LED_CONTRAST, 50 );
  
  lcd.begin(16, 2); //настройка дисплея - 16x02
  lcd.print("House4u sol.proj"); //выводим приветсвие
  lcd.setCursor(0, 1); //перевод курсора на 2 строку
  
   Wire.begin();
   RTC.begin();
   
   RTC.adjust(DateTime(__DATE__, __TIME__));
}

void loop() 
{   
    lcd.setCursor(0, 1);
    DateTime now = RTC.now();
    lcd.print(now.year(), DEC);
    lcd.print('/');
    lcd.print(now.month(), DEC);
    lcd.print('/');
    lcd.print(now.day(), DEC);
    lcd.print(' ');
    lcd.print(now.hour(), DEC);
    lcd.print(':');
    lcd.print(now.minute(), DEC);
    lcd.print(':');
    lcd.print(now.second(), DEC);
    lcd.print(" ");

    delay( 1000 ); //задержка 1 секунда
}

Результат выполнения примера:

Модуль часов DS1307 на экране

Если у вас экранчик 16x02, то секунды могут не полностью поместиться в экран.

Если вы получили похожий результат - ура! Можем двигаться дальше...


<< НазадДальше >>


Поделиться с друзьями:

Поддержка проекта