СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Методическая разработка «Проект «Часы реального времени»

Категория: Информатика

Нажмите, чтобы узнать подробности

Просмотр содержимого документа
«Методическая разработка «Проект «Часы реального времени»»

МУНИЦИПАЛЬНОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ДОПОЛНИТЕЛЬНОГО ОБРАЗОВАНИЯ

«ЦЕНТР ДЕТСКОГО ТЕХНИЧЕСКОГО ТВОРЧЕСТВА»










Методическая разработка

«Проект «Часы реального времени»

к дополнительной общеобразовательной

общеразвивающей программе

технической направленности

«Лаборатория робототехники»



Возраст детей: 10-15 лет









Автор: Костычев Вадим Александрович















г. Заречный Пензенской области

2022 г.

В ходе изучения робототехники, схемотехники и программирования на основе платформы Arduino большую роль играет разработка проектов. Они позволяют отработать как навыки программирования, так и сборки электрических цепей устройств. Данная разработка призвана в первую очередь отработать навыки разработки алгоритмов, работы с часами реального времени и дисплея с 7-сегментными индикаторами.

Целью данной разработки является повышение интереса учащихся к техническому творчеству посредством работы с платформой Arduino.

Данная методическая разработка используется как обучающий пример для работы по дополнительной общеобразовательной общеразвивающей программе технической направленности «Лаборатория робототехники». С их помощью учащиеся смогут применить теоретические знания на практике, построив сложные алгоритмы, с модулем реального времени, дисплеем с 7-сегментными индикаторами.

Для работы с данными модулями нужны специальные библиотеки stdio.h, DS1302.h, TM1637.h. С их помощью мы объявляем подключения и инициализацию наших устройств: модуля часов - DS1302 и дисплея на базе TM1637. Установка времени происходит пользователем через серийный порт однократно, записывая время слитно, например, 1530. Далее время сохраняется в модуле и идет при помощи батарейки.

Вывод на экран времени осуществляется через массив из 4 элементов – каждой из цифр чисел времени. Для этого необходимо использовать целочисленное деление и деление с остатком переменных часов и минут.



Принципиальная схема

Листинг программы «прошивки»

#include // подключение библиотеки часов

#include // подключение библиотеки часов

#include "TM1637.h" // подключение библиотеки экрана


int8_t TimeDisp[] = {0x00, 0x00, 0x00, 0x00}; // массив символов на дисплее

int minute = 0; // переменная для минут

int hour = 0; // переменная для часов

boolean ifPoint; // создаем флаг для отрисовки точки на дисплее


TM1637 tm1637(9, 8); // подключаем дисплей к arduino: CLK - 9 пин, DIO - 8 пин

DS1302 rtc(5, 6, 7); // подключение часов rct(rst, dat, clk)


void setup() { // однократная функция настройки платы

Serial.begin(9600); // подключение серийного порта

Serial.println("ready"); // выводим в серийный порт

tm1637.set(); // инициализация дисплея

tm1637.init(); // инициализация дисплея

}


void loop() { // повторяющаяся фунция

Time t = rtc.time(); // создаем экземпляр класса Time и пишем в него данные из модуля часов.

if (Serial.available() 0) { // можно установить время через серийный порт, время пишется слитно, например, 1530

int num = Serial.parseInt(); // сохраняем число из серийного порта

rtc.writeProtect(false);

t.hr = num / 100; // переменная сохраняющая часы

t.min = num % 100; // переменная сохраняющая минуты

t.sec = 0; // секунды выставим равными нулю

rtc.writeProtect(false); // отключаем функцию защиты от перезаписи на часах

num = Serial.parseInt();

rtc.time(t); // записываем в модуль часов все значения экземпляра класса Time (часы, секунды, минуты)

rtc.writeProtect(true); // устанавливаем защиту от перезаписи

}


minute = t.min; // в переменную заносим время в минутах

hour = t.hr; // в переменную заносим время в часах

if (ifPoint) {

tm1637.point(POINT_ON);

} // если точка отключена - включим

else {

tm1637.point(POINT_OFF); // иначе выключаем

}

ifPoint = !ifPoint; // меняем значения флага точки

TimeDisp[0] = hour / 10 // записываем в массив 1 цифру числа времени часов

TimeDisp[1] = hour % 10; // аналогично записываем 2 цифру

TimeDisp[2] = minute / 10; // записываем первую цифру минут

TimeDisp[3] = minute % 10; // записываем вторую цифру минут

tm1637.display(TimeDisp); // выводим на дисплее время

delay(500); // выставляем задержку для моргания точки

}