Testing the pcf8563 real time clock ic using arduino

Finding the best configuration for the clock

If you want a better watch, you need to set up correctly the real-time clock. As this module uses external oscillators and capacitors, a fine tune is needed. That means, we need to find the correct value to the capacitor placed on the OSCI pin so it compensates small variations on the crystal itself. To do that, you will need an oscilloscope. You will connect the probe and a pull-up resistor on the CLKOUT pin, and will measure the frequency there. This way you can alter the Ct capacitor for best value possible. If you don’t have an oscilloscope, than you will have to use a pre-determined value. More information on this can be found on the user manual, here. On the datasheet is stated that is possible to achieve 5 ppm accuracy with these clocks, however, over the internet people argue that its precision is around 20 ppm (source needed).

Недостатки таймеров обратного отсчета

Казалось бы, у таймеров обратного отсчета должна быть статистика (есть же она у опросов, вопросов и других виджетов в Сторис), но нет, пока она не появилась.

Было бы логично сообщать не только о времени, но и о месте проведения мероприятия, но это тоже невозможно, а в поле для названия много информации просто не поместится. Так что это то, что точно будут спрашивать в личку.

Когда видишь фразу про напоминания, кажется, что будет возможность добавить дату дедлайна себе в календарь — например, гугловский или встроенный календарь на телефоне — но это также невозможно. В то же время для напоминаний в Instagram невозможно настроить график и понять, в какое время они вообще будут приходить.

Ооба работали на департамент пропаганды: про Милна и Вудхауса

Автор Винни-пуха А.А. Милн и создатель Дживса П.Г. Вудхаус оба работали на департамент пропаганды. Вот только Милн – на британский, а Вудхаус – на немецкий. Первый – добровольно, второй – вынужденно.

Когда Париж пал, Вудхаус с женой оказались в лагере для интернированных иностранцев. И Геббельс не мог пройти мимо такого подарка. Вудхаусу предложили целый ряд послаблений в обмен на подкаст. В легкой и непринужденной эдвардианской манере тот вещал на Европу и США, рассказывая о сытой и беспечной жизни узников нацизма.

Услышав это, Милн пришел в ярость. Когда-то они играли в одной команде по крикету и Милн (уже состоявшийся драматург) даже спонсировал одну из первых театральных постановок по пьесе Вудхауса. Но десять лет спустя Милн поднял все свои армейские и гражданские контакты, чтобы начать активную травлю Вудхауса на родине. Весьма успешно.

Ярлык «коллаборациониста», впрочем, к Вудхаусу приклеился непрочно. После войны его быстро простили – все же один из любимых писателей короля. А слава Милна клонилась к закату. Публика не воспринимала его иначе как автора Винни-пуха и желчных рецензий в «Панче». Тогда и пришло время мести.

Милн ставил новую пьесу. Вудхаус писал: «Отличное произведение! Жаль, что публика считает иначе».

Милн публиковал сборник стихов, посвященных Кристоферу Робину. Вудхаус комментировал: «Раньше он сыну портил жизнь только в прозе. Теперь добьет парня в стихах».

Милн перестал писать и заперся дома. Вудхаус огорчался: «Какого титана мы потеряли! Писать лучше него могли многие, но никто не умел завидовать так, как он.»

На похоронах автора Винни-пуха его сын – Кристофер Робин – чуть ли не плюнул на могилу отца. (За что получил публичную пощечину от матери, с которой после этого никогда не общался.)

После смерти Вудхауса разведка рассекретила его досье, в котором говорилось о крайне правых взглядах писателя и обосновывалась версия Милна: за свое «вынужденное» сотрудничество с Рейхом создатель Дживса получал неплохое жалование.

Ошибка 2000

Откуда взялась ошибка 2000? Да просто разработчики операционной системы DOS не учли, что для
хранения даты может понадобиться больше двух цифр. Поэтому при наступлении 2000 года система могла начать
считать, что наступил год 1900. Или, как вариант, год 1980, если система отсчитывает от него.

К каким ошибкам в реальности это приводило? Нет, техника не сошла с ума. Атомных взрывов не было.
А вот некоторые программы бухгалтерского учета действительно перестали работать корректно,
в том числе, первые версии 1с. Просто попытка посчитать итоги на 2000 год приводила к тому,
что система считала их на 1900 и выдавала нули. В более продвинутых была возможность задать
«год начала столетия», и, тем самым, все-таки получить сдвинутый рабочий интервал в 100 лет.

Я лично столкнулся с проблемой 2000. Имевшаяся у меня версия MikTeX больше не могла устанавливаться.
Для успешной установки необходимо было временно установить время до 2000 года.
Так что, хоть ничего безумного и не произошло, с неудобствами пользователям столкнуться пришлось.
Но тогда еще не так активно использовались компьютеры! Что же ждет нас в будущем?

Принцип «девяти дел», или Принцип «1–3–5»

В чём заключается: подход простой — за день нужно завершить одно большое дело, три средних и пять небольших. К небольшим можно отнести, например, несложные бытовые дела. Их тоже лучше планировать, чтобы они не накапливались. Идея в том, что такое количество и соотношение дел помогут потратить день продуктивно и при этом не выбиться из сил.

Кому подходит: метод универсальный. Удобен для тех, кто мыслит не столько временными интервалами (как в предыдущей методике), сколько в категориях дел и задач.

Особенности: во-первых, метод помогает выстроить чёткую иерархию задач. Во-вторых, в конце дня вы можете легко подвести итог. Кроме того, вы всегда помните о первоочередном деле.

Модуль часов реального времени DS3231

Внешний вид данного модуля представлен на следующем рисунке.

Модуль предназначен для хранения времени и даты даже когда общее питание схемы выключено – для этой цели в его состав входит элемент питания CR2032. В состав модуля DS3231 входит также датчик температуры, поэтому его можно использовать в различных встраиваемых устройствах, например, в цифровых часах с индикатором температуры и т.д. Модуль работает по интерфейсу I2C. На нашем сайте вы можете посмотреть следующие проекты с использованием данного модуля:

Назначение контактов (распиновка) модуля DS3231 приведена в следующей таблице.

Наименование контакта Назначение контакта
VCC напряжение питания
GND общий провод (земля)
SDA контакт последовательной передачи данных (I2C)
SCL контакт синхронизации (тактирования) (I2C)
SQW выход прямоугольного сигнала (программируемый меандр)
32K выход меандра с частотой 32.768кГц

Теперь перейдем непосредственно к схеме нашего проекта.

Скетч для часов реального времени DS1307

#include "Wire.h"
#include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C LCD(0x27,16,2);
 
#include "iarduino_RTC.h"
// iarduino_RTC time (RTC_DS1302,5,7,6);  // DS1302
iarduino_RTC time (RTC_DS1307);           // DS1307 i2C
// iarduino_RTC time (RTC_DS3231);        // DS3231 i2C

void setup() {
  Serial.begin(9600);
  LCD.init();
  LCD.backlight();
  time.begin();
  // 0  sec, 30 min, 18 hour, 2 date, january, 2022, wed
  time.settime(0, 30, 18, 2, 1, 22, 0);
}

void loop() {
  // выводим время 1 раз в секунду
  if (millis() % 1000 == 0) {
     Serial.println(time.gettime("d-m-Y, H:i:s, D"));

     LCD.setCursor(0,0);
     LCD.print(time.gettime("d M Y, D"));
     LCD.setCursor(4,1);
     LCD.print(time.gettime("H:i:s"));
  }
}

АЦП/ЦАП модуль PCF8591

PCF8591 представляет собой 8-битный аналого-цифровой (АЦП) или цифро-аналоговый преобразователь (ЦАП), соответственно, диапазон возможных значений после АЦП составляет для него от 0 до 255. Также модуль содержит фоторезистор и терморезистор (термистор). Модуль имеет 4 аналоговых входа и один аналоговый выход. Модуль работает по протоколу I2C, соответственно, линия SCL используется для синхронизации, а линия SDA – для передачи данных. Модуль работает от питающего напряжения 2.5-6V и имеем низкое энергопотребления в режиме ожидания (бездействия).

Значением входного напряжения можно управлять с помощью ручки потенциометра, присутствующего в составе модуля. Также в составе модуля есть три переключателя: J4 – позволяет подключать цепь термистора, J5 – позволяет подключать цепь фоторезистора, J6 – позволяет подключать цепь регулировки напряжения. Для доступа к этим цепям можно использовать адреса этих переключателей (джамперов): 0x50 для J6, 0x60 для J5 и 0x70 для J4. В составе модуля есть два светодиода: D1 показывает интенсивность (уровень) выходного напряжения, а D2 показывает уровень питающего напряжения. То есть чем больше уровни выходного и питающего напряжений, тем, соответственно, более ярко горят светодиоды D1 и D2.

Внешний вид и назначение контактов (распиновка) модуля PCF8591 показаны на следующем рисунке.

Руководство по быстрому выбору (ссылки на скачивание бесплатных программ хронометража и подсчета времени)

Task Coach

  Данные хранятся в XML. Можно выстраивать иерархию задач. Настраиваемые категории. Сигналы тревоги и напоминания. Приоритеты. Описания. Заметки и многое другое.
  Нет экспорта в CSV или другой текстовый формат для простого импорта. Нет нормальной отчетности, включая графики.
 
  ————
  11,9 MB  1.3.41 Unrestricted freeware Windows 2000 — 8, Linux (.rpm, .deb, Gentoo Ebuild), Mac OS X
  Поддержка 64-разрядной ОС
  Для Linux понадобятся Python и wxPython

ToDoList

  Шифрование. Приоритеты. Сроки выполнения. Оценки. Процент завершения. Подкраска просроченных элементов. Фильтры. Мощный экспорт и импорт. Сортировка и поиск. И многое другое.

Project Timer

  Проста в установке и использовании. В основном базовые функции. Настраиваемый красивый график.
  ————
  311 KB 1.4.1 Unrestricted freeware Windows
  Поддержка 64-разрядной ОС

Cratchit.org TimeTool

  Экспорт в формат CSV. Можно корректировать время. Строка состояния отображает итоги в минутах и часах. Полностью портативная программа, которая хранит данные в том же каталоге в файле ttdata.txt
  ————
  460 KB 0.5 Open source freeware Windows
  Поддержка 64-разрядной ОС

TimeTracker

  Автоматически записывает время для всех процессов. Остановка и запуск таймеров происходит при переключении между окнами. Можно создавать пользовательские задачи и правила. Портативная. Данные хранятся в CSV в том же каталоге, что и программа.
 
  553 KB 4.4 Unrestricted freeware Windows 2000 — 7
  Поддержка 64-разрядной ОС

Zanami Time Tracker

  Многозадачность. Подсчет времени даже в выключенном состоянии. Сортировка.
 
  980 KB 1.7.1 Unrestricted freeware Windows 2000 — 7
  Поддержка 64-разрядной ОС

Рубрики:

  • анализ
  • личные данные
  • менеджер
  • планирование
  • таймер
  • Лучшие бесплатные программы для управления и учета личных финансов
  • Лучшие бесплатные программы для ведения заметок (стикеры/липучки)

4-х разрядный семисегментный дисплей (4-Digit 7 Segment Display)

4-х разрядный семисегментный дисплей состоит из четырех семисегментных дисплеев, объединенных в единое устройство. Иногда говорят, что эти дисплеи “мультиплексированы вместе”, поэтому для управления ими можно использовать технологию мультиплексирования. Этот дисплей можно использовать для отображения цифр, а также некоторых букв. Дисплей можно использовать в обоих направлениях. 4 символа удобно использовать для изготовления электронных часов или счетчика от 0 до 9999.

На следующем рисунке показана внутренняя схема соединений 4-х разрядного семисегментного дисплея.

Каждый сегмент дисплея имеет собственный светодиод и им можно индивидуально управлять. Светодиоды таким образом скомпонованы в составе дисплея, что каждый из них освещает только свой сегмент (к которому он относится). Семисегментные дисплеи могут быть с общим катодом и общим анодом, как показано на следующем рисунке.

В семисегментном дисплее с общим катодом (ОК) отрицательные выводы всех светодиодов соединены вместе и образую общую землю. В схеме с общим анодом (ОА) положительные выводы всех светодиодов соединены вместе и они образуют общий вывод напряжения постоянного тока (VCC).

На нашем сайте есть достаточно подробные статьи про устройство семисегментных дисплеев и их программированию – они написаны для микроконтроллеров семейства AVR, но я думаю провести аналогию с Arduino вам будет не трудно:

Использование технологии мультиплексирования

Так каким образом мы можем на подобном 4-х символьном семисегментном дисплее отобразить, к примеру, число 1234? Это возможно сделать с использованием технологии мультиплексирования. Смысл этой технологии достаточно прост – в каждый момент времени мы отображаем только один символ (из 4-х возможных) на данном дисплее. Переключение между отображением всех 4-х символов происходит достаточно быстро – поэтому человеческий глаз воспринимает их непрерывно горящими.

How to Use

Check whether the device is ready
1. Check whether the ds18B20 temperature device is recognized:

ls /sys/bus/w1/devices/ 


If you see a device name starting with 28-, that’s the ds18B20. If a prompt of an error and no file or folder found appears, it indicates that the w1-bus may be disabled. If no error is shown but still no «28-«-named device is found, the sensor on ds18b20 may be broken.
2. Check whether the i2c-RTC time device is recognized:

i2cdetect -y 1 


If you can see an i2c address, the connection to the i2c-RTC works fine.

Check the device’s data
Check the temperature data of the ds18b20 device:

sudo cat /sys/bus/w1/devices/note: here type in your device name/w1_slave 


The first line is data check, and the second, t = 30000 is the temperature value in integer: divide it by 1000, and you will get 30.000 in Celsius degree — the present temperature data detected by the ds18B20.

Check the time saved on the RTC device:

sudo hwclock -r 


Set the time on the RTC:

sudo hwclock --set –date="yyyy/MM/dd HH:mm:ss"


Sync the time from the Raspberry Pi to the RTC device:

sudo hwclock -s 

How to Use RTC-Nano on Arduino

The wiring of the RTC-Nano module and Arduino:
Note: The pin marked with white triangle is GND. To connect the female headers on the module, you need to use some male-to-male Dupont wires. Here please notice the anode and cathode headers’ connection. DO NOT connect them reversely, or the module will be damaged.

4 Подробный проект и реализация системы

4.2.1 Проектирование и реализация основного модуля

Определите функции других модулей перед субъектом. Если функция WHINE реализована, если вводится ошибка ввода, то принят на выбор пользователя. В качестве основной функции легче добавить функции или модификацию позже.

4.2.2 Проектирование и реализация модуля мощности

После входа в программу функция модуля панели через функцию PrintF выводит графический символ граничного графического символа и приветственный интерфейс и вводит метод выбора программы (входной номер 1 или 2), как показано ниже. Приведите пользовательский ввод, а затем выберите всю функцию и функцию переключения. (В то время как функция используется для повторного ввода при ошибках ввода)

4.2.3 Разработка и реализация модуля обратного отсчета

Код устройства обратного отсчета в функции режима лица, выходной сигнал подсказывает время обратного отсчета ввода (формат: 00: 01: 08) через выход Printf. После правильного ввода выход «обратный отсчет запускает» и вывод »00 : 01: 08 «Формат на одну секунду в секунду, когда время уменьшилось за одну секунду, когда время стало« 00:00:00 », звонок и вывод слова« Время! »

4.2.4 Разработка и реализация модуля таймера

Модуль делится на две части, одна из основной функции, чтобы запустить время через режим хронографа ввода в вход Время через функцию Kbhit, если, Getch, чтобы завершить время и завершить время.

Почему же такое поведение мало кто замечает?

Дело в том, что эта особенность проявляется только при первом включении питания или в случае разряда резервной батареи. А значит, это довольно редкое
событие. Замена резервной батареи не всегда приводит к полному отключению питания RTC, так как параллельно обычно стоит конденсатор, который и
обеспечивает питание во время замены.

Относительная редкость событий приводящих к проявления такой особенности запуска и является причиной того, что об этом редко задумываются.
Если чтение времени из RTC выполняется программой регулярно, то и установленный бит VL, говорящий о недостоверности времени, будет рано или поздно
считан, а пользователь извещен. Так может просто не обращать на это внимания? Нет, так делать не стоит. Проверка готовности PCF8563 не настолько
сложна, что бы ее исключать. А в некоторых ситуациях игнорирование проверки может быть довольно критичным.

Схема проекта

Схема часов на Arduino и 4-х разрядном семисегментном индикаторе представлена на следующем рисунке.

В следующей таблице представлены необходимые соединения между модулем часов реального времени и платой Arduino Uno.

DS3231 Arduino Uno
VCC 5V
GND GND
SDA A4
SCL A5

В следующей таблице представлены необходимые соединения между регистром сдвига 74HC595 и платой Arduino Uno.

В следующей таблице представлены необходимые соединения между регистром сдвига 74HC595, 4-х разрядным семисегментным дисплей и платой Arduino Uno.

4-х разрядный семисегментный дисплей Регистр сдвига 74HC595 Arduino Uno
A Q0
B Q1
C Q2
D Q3
E Q4
F Q5
G Q6
D1 10
D2 11
D3 12
D4 9

Внешний вид собранной конструкции проекта показан на следующем рисунке.

И напоследок…

А может быть, вы не успеваете всё выполнить потому, что эти дела вас не привлекают? Бывает, что нам просто неинтересно само занятие, поэтому и выполнять план не очень хочется.

Если это так, то надо действовать. Например, можно сменить профессию. Сейчас это гораздо проще, чем раньше. Не обязательно менять всё радикально и сразу бросать работу: можно выбрать подходящую систему тайм-менеджмента (теперь вы знаете о них много!), выделить время на регулярные занятия — и осваивать новую профессию онлайн.

На сайте Skillbox есть курсы по дизайну, программированию, маркетингу — и даже о том, как открыть своё дело. Посмотрите описания курсов и программ — наверняка вас что-то заинтересует.

Часы без RTC

Для начала мы должны понимать, что такое RTC. Из Википедии:

Часы реального времени (ЧРВ, RTC — англ. Real Time Clock) — электронная схема, предназначенная для учёта хронометрических данных (текущее время, дата, день недели и др.), представляет собой систему из автономного источника питания и учитывающего устройства. Чаще всего часы реального времени встречаются в вычислительных машинах, хотя на самом деле ЧРВ присутствуют практически во всех электронных устройствах, которые должны хранить время.

В итоге в данной версии мы сделаем часы без RTC с индикатором температуры и влажности на Arduino с помощью модуля DHT11. Также мы используем 3 кнопки для установки часов.

Комплектующие

Вам понадобятся эти кусочки для этого проекта:

  • Arduino Uno плата
  • Кнопки 3 шт.
  • Потенциометр
  • Модуль LCD 1602
  • Модуль температуры и влажности DHT11
  • Макетная плата
  • Перемычки

Соедините комплектующие часов как на схеме ниже.

Код

Вы можете скопировать или скачать код часов на Ардуино ниже.

#include <LiquidCrystal.h>
#include <SimpleDHT.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
volatile int sec, minute = 0, hour = 0;
int b_h = 5;
int b_m = 6;
int pinDHT11 = 2;
int b_startstop = 3;
bool startstop = false;

SimpleDHT11 dht11;

void setup() {

  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);

  lcd.setCursor(0, 0);
  lcd.print("Ahmad Ordikhani");
  lcd.setCursor(0, 1);
  lcd.print("Clk without RTC");
  delay(3000);
  lcd.clear();

  pinMode(b_h, INPUT_PULLUP);
  pinMode(b_m, INPUT_PULLUP);
  pinMode(b_startstop, INPUT_PULLUP);

  attachInterrupt(digitalPinToInterrupt(3), buttons, FALLING);
}

void loop() {

  //Setting the time will stop the clock to set the time
  while (startstop == false)
  {
    lcd.setCursor(0, 1);
    lcd.print("SET");
    delay(100);
    lcd.setCursor(0, 0);
    lcd.print("Time: ");
    if(hour<10)
    {
    lcd.print("0");
    lcd.print(hour);
    }
    else
    lcd.print(hour);
    
    lcd.print(":");
    if(minute<10)
    {
      lcd.print("0");
    lcd.print(minute);
    }
    else
    lcd.print(minute);
    lcd.print(":");
    if(sec<10)
    {
    lcd.print("0");  
    lcd.print(sec);
    }
    else
    lcd.print(sec);
    lcd.print(" ");

    if (digitalRead(b_h) == LOW)
    {
      hour++;
      if (hour > 23)
        hour = 0;
    }

    if (digitalRead(b_m) == LOW)
    {
      minute++;
      if (minute > 59)
        minute = 0;
    }

  }

  //Start the clock
  while (startstop == true)
  {


    // noInterrupts();
    // read with raw sample data.
    byte temperature = 0;
    byte humidity = 0;
    byte data = {0};
    if (dht11.read(pinDHT11, &temperature, &humidity, data)) {
      lcd.setCursor(0, 1);
      lcd.print("Read DHT11 failed");
      return;
    }
    lcd.setCursor(0, 1);
    lcd.print("Temp:");
    lcd.print((int)temperature);
    //lcd.print("*C");
    lcd.print(" ");
    lcd.print("Hum.:");
    lcd.print((int)humidity);
    lcd.print("%");
    //Serial.print((int)temperature); Serial.print(" *C, ");
    // Serial.print((int)humidity); Serial.println(" %");

    lcd.setCursor(0, 0);
    //sec=millis()/1000;
    delay(1000);
    lcd.print("Time: ");
    if (hour < 10)
    {
      lcd.print("0");
      lcd.print(hour);
    }
    else
    {
      lcd.print(hour);
    }
    lcd.print(":");
    if (minute < 10)
    {
      lcd.print("0");
      lcd.print(minute);
    }
    else
    {
      lcd.print(minute);

    } lcd.print(":");
    if (sec < 10)
    {
      lcd.print("0");
      lcd.print(sec);
    }
    else
    {
      lcd.print(sec);
    }
    lcd.print(" ");
    //lcd.print(startstop);
    sec++;
    if (sec > 59)
    {
      minute++;
      sec = 0;
      //lcd.clear();
    }

    if (minute > 59)
    {
      hour++;
      minute = 0;
      //lcd.clear();
    }
    if (hour > 23)
    {
      hour = 0;
      //lcd.clear();

    }
  }
}

//Start/Stop the clock
void buttons()
{
  lcd.clear();
  startstop = !startstop;
}

На этом пока всё. Мы постарались описать все основные варианты реализации часов на Ардуино.

Часы с выводом на экран Nokia 5110

Следующий урок — часы на Arduino, которые также простые для сборки, где вы сможете установить дату и время на последовательном мониторе.

В этом уроке используются лишь несколько компонентов — только перемычки, Arduino и дисплей Nokia 5110/3110.

Комплектующие

Детали, используемые в этом проекте ниже.

Оборудование

  • Arduino UNO и Genuino UNO × 1
  • Adafruit дисплей Nokia 5110 × 1
  • Соединительные провода (универсальные) × 1
  • Резистор 221 Ом × 1

Программное обеспечение

Схема соединения

Соединяем детали часов на Ардуино как на схеме выше:

  • контакт pin 3 — последовательный тактовый выход (SCLK) // pin 3 — Serial clock out (SCLK)
  • контакт pin 4 — выход серийных данных (DIN) // pin 4 — Serial date out (DIN)
  • контакт pin 5 — дата / выбор команды (D / C) // pin 5 — date/Command select (D/C)
  • контакт pin 6 — выбор ЖК-чипа (CS / CE) // pin 6 — LCD chip select (CS/CE)
  • контакт pin 7 — сброс ЖК (RST) // pin 7 — LCD reset (RST)

Код урока

Код второй версии часов вы можете скачать или скопировать ниже.

#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>

Adafruit_PCD8544 display = Adafruit_PCD8544(3,4,5,6,7);

int second,minute, hour, day, mounth,year; 
unsigned long UtlTime; 

void setup() 
pinMode(2,OUTPUT);
UtlTime=0;   {   

minute=0;   
hour=0;   
day=0;   
mounth=0;   
year=0;   
Serial.begin(9600);   
  display.begin();
  display.setContrast(50); // Adjust the display contrast
  display.clearDisplay();   //Apaga o buffer e o display
  display.setTextSize(1);  //Seta o tamanho do texto
  display.setTextColor(BLACK); //Seta a cor do texto      
   
display.print(" date e hour ");   
display.setCursor(0,10);   
display.print(" com Arduino");   
display.display();
delay (5000); 

//Configura o minute   
display.clearDisplay();   
display.setCursor(0,0);   
display.print("minute: ");
display.display();
Serial.print("\nin between minute:");  
while(minute==0)   {     
if (Serial.available() > 0)     
{       
minute= Serial.parseInt();     
}   
}   
display.print(minute);   
display.display();
delay(1000); 

//Configura a hour   
display.clearDisplay();   
display.setCursor(0,0);   
display.print("hour: ");   
display.display();
Serial.print("\nin between hour:"); 
while(hour==0)   
{     
if (Serial.available() > 0)     
{       
hour= Serial.parseInt();     
}   
}   
display.print(hour);   
display.display();
delay(1000);    

//Configura o day   
display.clearDisplay();   
display.setCursor(0,0);   
display.print("day: ");
display.display();   
Serial.print("\nin between day:");   
while(day==0)   
{     
if (Serial.available() > 0)     
{       
day= Serial.parseInt();     
}   
}   
display.print(day);   
display.display();
delay(1000);    

//Configura o mês   
display.clearDisplay();   
display.setCursor(0,0);   
display.print("mounth: "); 
display.display();  
Serial.print("\nin between mounth:");  
while(mounth==0)   
{     
if (Serial.available() > 0)     
{       
mounth= Serial.parseInt();     
}   
}   
display.print(mounth);  
 display.display();
delay(1000);    

//Configura o year   
display.clearDisplay();   
display.setCursor(0,0);   
display.print("year: ");   
display.display();
Serial.print("\nin between year:");   
while(year==0)   
{     
if (Serial.available() > 0)     
{       
year= Serial.parseInt();     
}   
}   
display.print(year);   

display.display();   
delay(1000);
display.clearDisplay(); 

} 

void loop() 
{   

if(millis()-UtlTime<0)   
{     
UtlTime=millis();   
}   
else   
{     
second=int((millis()-UtlTime)/1000);   
}   
if(second>59)   
{     
second=0;     
minute++;     
UtlTime=millis();     
if(minute>59)     
{       
hour++;       
minute=0;       
if(hour>23)       
{         
day++;         
hour=0;         
if(mounth==1||mounth==3||mounth==5||mounth==7||mounth==8||mounth==10||mounth==12)         
{           
if(day>31)           
{             
day=1;             
mounth++;             
if(mounth>12)             
{               
year++;               
mounth=1;             
}           
}         
}         
else if(mounth==2)         
{           
if(year%400==0)           
{             
if(day>29)             
{               
day=1;               
mounth++;             
}           
}           
else if((year%4==0)&&(year%100!=0))           
{             
if(day>29)             
{              
day=1;               
mounth++;             
}           
}           
else           
{             
if(day>28)             
{               
day=1;               
mounth++;             
}           
}         
}         
else         
{           
if(day>30)           
{             
day=1;             
mounth++;           
}         
}       
}     
}   
}    

display.clearDisplay(); 
delay(1000); 
Serial.print(day);   
Serial.print("/");   
Serial.print(mounth);   
Serial.print("/");   
Serial.print(year);   
Serial.println();      

display.setCursor(0,0);   
display.print("date ");   
display.print(day);   
display.print("/");   
display.print(mounth);   
display.print("/");   
display.print(year);

 
display.display();
Serial.print(hour);   
Serial.print(":");   
Serial.print(minute);   
Serial.print(":");   
Serial.print(second);   
Serial.print("\n");   
Serial.println();      

display.setCursor(0,10);   
display.print("hour ");   
display.print(hour);   
display.print(":");   
display.print(minute);   
display.print(":");   
display.print(second); 
display.display();
char tecla;
tecla = Serial.read();
if(tecla=='1'){
digitalWrite(2,LOW);
}
if(tecla=='2'){
  digitalWrite(2, HIGH);
}

}
Понравилась статья? Поделиться с друзьями:
Зинг-Электро
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: