Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Инструкция пользователю





 

Электронные часы, должны оповещать пользователя о настоящем времени и обеспечивать визуальное оповещение реального времени.

В связи с этим для обеспечения корректной работы макета необходимо выполнить ряд предписаний:

1. Работа часов должна производиться в помещениях, отвечающих следующим требованиям:

- с низким уровнем запылённости;

- с низким уровнем влажности воздуха.

2. Электрическое питание модели датчика осуществляется постоянным напряжением величиной от 5 до 12В.

3. Устройство работает в режиме с постоянным питанием от электросети.

4. Настройка часов производиться автоматически с помощью задаваемой программы.

5. При работе с моделью необходимо аккуратное и бережное отношение и недопущение его механических повреждений [7].

Листинг программы

 

#include <Wire.h>

#include <EEPROM.h>

#include "TM1637.h"

#include "DS1307.h"

//Массив, содержащий время компиляции

char compileTime[] = __TIME__;

//Номера пинов Arduino, к которым подключается индикатор

#define DISPLAY_CLK_PIN 12

#define DISPLAY_DIO_PIN 13

//Для работы с микросхемой часов и индикатором мы используем библиотеки

TM1637 display(DISPLAY_CLK_PIN, DISPLAY_DIO_PIN);

DS1307 clock;

void setup()

{

//Включаем и настраиваем индикатор

display.set();

display.init();

//Запускаем часы реального времени

clock.begin();

//Получаем число из строки, зная номер первого символа

byte hour = getInt(compileTime, 0);

byte minute = getInt(compileTime, 3);

byte second = getInt(compileTime, 6);

//Импровизированный хэш времени

//Содержит в себе количество секунд с начала дня

unsigned int hash = hour * 60 * 60 + minute * 60 + second;

//Проверяем несовпадение нового хэша с хэшем в EEPROM

if (EEPROMReadInt(0)!= hash)

{

//Сохраняем новый хэш

EEPROMWriteInt(0, hash);

//Готовим для записи в RTC часы, минуты, секунды

clock.fillByHMS(hour, minute, second);

//Записываем эти данные во внутреннюю память часов. //С этого момента они начинают считать нужное для нас время

clock.setTime();

}

}

void loop()

{

//Значения для отображения на каждом из 4 разрядов

int8_t timeDisp[4];

//Запрашиваем время с часов

clock.getTime();

//Получаем десятки часов с помощью целочисленного деления

timeDisp[0] = clock.hour / 10;

//Получаем единицы часов с помощью остатка от деления

timeDisp[1] = clock.hour % 10;

//Проделываем то же самое с минутами

timeDisp[2] = clock.minute / 10;

timeDisp[3] = clock.minute % 10;

//. а затем выводим его на экран

display.display(timeDisp);

//у нас нет отдельных разрядов для секунд, поэтому

//будем включать и выключать двоеточие каждую секунду

display.point(clock.second % 2? POINT_ON: POINT_OFF);

}

char getInt(const char* string, int startIndex)

{

return int(string[startIndex] - '0') * 10 + int(string[startIndex+1]) - '0';

}

//Запись двухбайтового числа в память

void EEPROMWriteInt(int address, int value)

{

EEPROM.write(address, lowByte(value));

EEPROM.write(address + 1, highByte(value));

}

//Чтение числа из памяти

unsigned int EEPROMReadInt(int address)

{

byte lowByte = EEPROM.read(address);

byte highByte = EEPROM.read(address + 1);

return (highByte << 8) | lowByte;

}

 

Date: 2016-02-19; view: 426; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию