Arduino:Примеры/clockFace
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Аналоговые часы[1]
Этот пример показывает, как при помощи библиотеки GLCD настроить плату Arduino, чтобы показать на GLCD-панели циферблат аналоговых часов. Кроме того, данный скетч позволяет настраивать время при помощи двух нажимных кнопок.
Код
/*
* Аналоговые часы
*
* Создание аналоговых часов при помощи библиотеки GLCD
*
* Использует нажимные кнопки для настройки времени.
* По умолчанию подключение осуществляется через 2-ой и 3-ий контакты.
* Подключите одну сторон кнопки к контакту, а другую – к «земле».
* Одна кнопка мотает время вперед, а другая – назад.
*
*/
#include <Time.h> // загрузить можно тут: http://www.arduino.cc/playground/Code/Time
#include <glcd.h> // библиотека GLCD
#include "fonts/SystemFont5x7.h" // системный шрифт
#include "AnalogClock.h" // заголовочный файл с классом для аналоговых часов
#define PULL_UP HIGH
const int btnForward = 2; // кнопки для настройки часов
const int btnBack = 3;
AnalogClock analogClock = AnalogClock(); // создаем экземпляр класса для аналоговых часов
void setup(){
digitalWrite(btnForward, PULL_UP); // активируем встроенные подтягивающие резисторы
digitalWrite(btnBack, PULL_UP);
GLCD.Init(); // запускаем код GLCD
GLCD.SelectFont(System5x7);
setTime(4,37,0,2,1,10); // задаем время на 4:37, 2 января 2010 года
analogClock.Init(GLCD.CenterX,GLCD.CenterY,GLCD.CenterY-4); // рисуем циферблат
}
void loop(){
unsigned long prevtime;
prevtime = now();
while( prevtime == now() )
{
// проверяем, нажаты ли кнопки и секунду ждем повторного нажатия:
checkSetButton(btnForward, 1);
checkSetButton(btnBack, -1);
}
#ifdef DISPLAY_HEIGHT < 64
// перерисовываем циферблат:
analogClock.DrawFace();
#endif
analogClock.DisplayTime(hour(), minute(), second() ); // обновляем информацию на аналоговых часах
}
void checkSetButton(int button, int direction)
{
const int stepSecs[] = {1,30,300}; // значения, которые будут
// использоваться для ускорения
// движения стрелок, если кнопка
// будет в зажатом состоянии
int stepIndex = 0; // индекс, определяющий значение для ускорения
int step = 0; // счетчик шагов между повышениями индекса
if(digitalRead(button)== LOW)
{
delay(50); // небольшая задержка
unsigned long startTime = millis() + 1000;
while(digitalRead(button)== LOW)
{
if(millis() - startTime > 100){
startTime = millis();
adjustTime(stepSecs[stepIndex] * direction);
#ifdef DISPLAY_HEIGHT < 64
// перерисовываем циферблат:
analogClock.DrawFace();
#endif
analogClock.DisplayTime(hour(), minute(), second() ); // update analog clock
if( ++step > 30){
step=0;
if(stepIndex < 2){
stepIndex++;
}
}
}
}
}
}
См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
Категории:
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino