ПРОЕКТИРОВАНИЕ ЧАСОВ С ИСПОЛЬЗОВАНИЕМ ЧАСОВ РЕАЛЬНОГО ВРЕМЕНИ И NEOPIXEL RING НА ARDUINO LILYPAD

Свет — прекрасная среда для искусства, и есть множество способов приблизиться к нему. Мы всегда были большими поклонниками всего, что мигает и светится, но в области освещения существует целый мир других методов и техник. Мы видим множество отличных проектов освещения в этих местах. Так почему бы и нам не попробовать некоторые из них? Этот носитель делает все это и включает часы, которые показывают время, загораясь светодиодом кольца Neopixel.

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

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

НЕОБХОДИМЫЕ КОМПОНЕНТЫ

(1) Ардуино Лилипад

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

(3) Кольцо Neopixel (здесь я использовал 16-битное светодиодное кольцо)

(4) Arduino Uno (я использовал его для программирования своего Lilypad, так как Lilypad не имеет возможности подключения через USB-порт)

(5) Перемычки

КОРОТКО ОБ ИСПОЛЬЗУЕМЫХ КОМПОНЕНТАХ

Arduino Lilypad.Arduino Lilypad — это очень компактная плата Arduino. Он намного тоньше, чем UNO, так как у него нет порта для программирования, он имеет только контакты RX TX, через которые передаются и принимаются данные.

DS3231-Это модуль, который работает как часы, предоставляя нам дату, время и день недели. Мы используем этот RTC из-за того, что RTC даже при выключенном питании показывает правильное время, поскольку он имеет резервное питание, которое представляет собой батарею C-MOS, и, следовательно, форматирование данных не выполняется.

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

СХЕМА ЦЕПИ

Прежде всего, нам нужно настроить RTC для установки текущего времени, которое должно отображаться на светодиодном кольце. Итак, для этого нам нужно скачать библиотеку RTC, ссылка на которую приведена ниже.

http://www.rinkydinkelectronics.com/download.php?f=DS3231.zip

Загрузите файл библиотеки RTC и установите его в Arduino IDE.

Перейдите в Файл — Примеры — DS3231 — Arduino — DS3231_serial_easy и откройте его.

Затем, чтобы установить время, будет строка, в которой будут указаны дата, день, время, раскомментируйте эти строки и установите текущую дату, время и день соответственно.

Подключите DS3231, как показано ниже.

______________

Подключите VCC к 5v Arduino UNO. Земля к земле. SDA к контакту A4 Arduino UNO и SCL к контакту A5.

Включите его и загрузите код.

Поскольку наш RTC настроен, мы можем отключить его.

Теперь нам нужно изучить адресацию Neopixel Ring.

Для этого припаяйте к кольцу 3 провода, то есть VCC, GND и Vin.

Подключите VCC к 5 вольтам, имеющимся на Arduino UNO.

GND к GND на Arduino и,

Vin для PIN-кода 6 платы Arduino.

Теперь загрузите библиотеку Adafruit Neopixel. Вы можете скачать его по ссылке ниже.



Загрузите библиотеку и установите ее в Arduino IDE. Откройте простую программу, которая уже присутствует в примерах IDE под Adafruit Neopixel.

Теперь вставьте нижнюю программу, подключив RTC и Neopixel.

#include ‹DS3231.h›
#include ‹Adafruit_NeoPixel.h›

DS3231 rtc(SDA, SCL);

#define PIN 6
#define NUMPIXELS 16
#define blinkeron 20,20,20
#define hled 50, 15, 0
#define mled 15,25,10
#define blinkoff 0,2,3
Adafruit_NeoPixel пикселей = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
Время t;
void setup()
{

Serial.begin(115200);
rtc.begin();
Pixels.begin();
//rtc.setTime(5, 32, 50); раскомментируйте эту строку, чтобы установить время, установите его и снова прокомментируйте строку.
}

недействительный цикл()
{

т = rtc.getTime();

if (t.sec == t.sec)
{
пикселей.setPixelColor(0, пикселей.Цвет(мигание));
пикселей.show();
пикселей. setPixelColor(4, пикселей.Цвет(мигание));
пикселей.show();
пикселей.setPixelColor(8, пикселей.Цвет(мигание));
пикселей.show();
пиксели.setPixelColor(12, пиксели.Цвет(мерцание));
пиксели.show();
задержка(100);
пиксели.setPixelColor(0, пиксели.Цвет (blinkoff));
пиксели.show();
пиксели.setPixelColor(4, пиксели.Color(blinkoff));
пиксели.show();
пиксели.setPixelColor (8, пикселей.Цвет(мигание));
пикселей.show();
пикселей.setPixelColor(12, пикселей.Цвет(мигание));
пикселей.show(); задержка (900);

}

if (t.hour == 1)
{
пиксели.setPixelColor(1, пиксели.Цвет(hled));
пиксели.show();
}

if (t.hour == 2)
{
пиксели.setPixelColor(1, пиксели.Цвет(0, 0, 0));
пиксели.show();
пиксели.setPixelColor(2, пиксели.Цвет(hled));
пиксели.show();
}

if (t.hour == 3)
{
пиксели.setPixelColor(2, пиксели.Цвет(0, 0, 0));
пиксели.show();
пиксели.setPixelColor(3, пиксели.Цвет(hled));
пиксели.show();
}

if (t.hour == 4)
{
пиксели.setPixelColor(3, пиксели.Цвет(0, 0, 0));
пиксели.show();
пиксели.setPixelColor(5, пиксели.Цвет(hled));
пиксели.show();
}

if (t.hour == 5)
{
пиксели.setPixelColor(5, пиксели.Цвет(0, 0, 0));
пиксели.show();
пиксели.setPixelColor(6, пиксели.Цвет(hled));
пиксели.show();
}

if (t.hour == 6)
{
пиксели.setPixelColor(6, пиксели.Цвет(0, 0, 0));
пиксели.show();
пиксели.setPixelColor(7, пиксели.Цвет(hled));
пиксели.show();
}

if (t.hour == 7)
{
пиксели.setPixelColor(7, пиксели.Цвет(0, 0, 0));
пиксели.show();
пиксели.setPixelColor(9, пиксели.Цвет(hled));
пиксели.show();
}

if (t.hour == 8)
{
пиксели.setPixelColor(9, пиксели.Цвет(0, 0, 0));
пиксели.show();
пиксели.setPixelColor(10, пиксели.Цвет(hled));
пиксели.show();
}

if (t.hour == 9)
{
пиксели.setPixelColor(10, пиксели.Цвет(0, 0, 0));
пиксели.show();
пиксели.setPixelColor(11, пиксели.Цвет(hled));
пиксели.show();
}

if (t.hour == 10)
{
пиксели.setPixelColor(11, пиксели.Цвет(0, 0, 0));
пиксели.show();
пиксели.setPixelColor(13, пиксели.Цвет(hled));
пиксели.show();
}

if (t.hour == 11)
{
пиксели.setPixelColor(13, пиксели.Цвет(0, 0, 0));
пиксели.show();
пиксели.setPixelColor(14, пиксели.Цвет(hled));
пиксели.show();
}

if (t.hour == 12)
{
пиксели.setPixelColor(14, пиксели.Цвет(0, 0, 0));
пиксели.show();
пиксели.setPixelColor(15, пиксели.Цвет(hled));
пиксели.show();
}

if (t.min ‹= 5 && t.min ›= 0 )
{
пиксели.setPixelColor(1, пиксели.Цвет(mled));
пиксели.show();< br /> пикселей.setPixelColor(15, пикселей.Цвет(0,0,0));
пикселей.show();

}

if (t.min ‹= 10 && t.min › 5)
{
пикселей.setPixelColor(1, пикселей.Цвет(0, 0, 0));
пикселей.show( );
пиксели.setPixelColor(2, пиксели.Color(mled));
пиксели.show();
}

if (t.min ‹= 15 && t.min › 10)
{
пикселей.setPixelColor(2, пикселей.Цвет(0, 0, 0));
пикселей.show( );
пиксели.setPixelColor(3, пиксели.Color(mled));
пиксели.show();
}

if (t.min ‹= 20 && t.min › 15)
{
пикселей.setPixelColor(3, пикселей.Цвет(0, 0, 0));
пикселей.show( );
пиксели.setPixelColor(5, пиксели.Color(mled));
пиксели.show();
}

if (t.min ‹= 25 && t.min › 20)
{
пикселей.setPixelColor(5, пикселей.Цвет(0, 0, 0));
пикселей.show( );
пиксели.setPixelColor(6, пиксели.Color(mled));
пиксели.show();
}

if (t.min ‹= 30 && t.min › 25)
{
пикселей.setPixelColor(6, пикселей.Цвет(0, 0, 0));
пикселей.show( );
пиксели.setPixelColor(7, пиксели.Color(mled));
пиксели.show();
}

if (t.min ‹= 35 && t.min › 30)
{
пикселей.setPixelColor(7, пикселей.Цвет(0, 0, 0));
пикселей.show( );
пиксели.setPixelColor(9, пиксели.Color(mled));
пиксели.show();
}

if (t.min ‹= 40 && t.min › 35)
{
пикселей.setPixelColor(9, пикселей.Цвет(0, 0, 0));
пикселей.show( );
пиксели.setPixelColor(10, пиксели.Color(mled));
пиксели.show();
}

if (t.min ‹= 45 && t.min › 40)
{
пикселей.setPixelColor(10, пикселей.Цвет(0, 0, 0));
пикселей.show( );
пиксели.setPixelColor(11, пиксели.Color(mled));
пиксели.show();
}

if (t.min ‹= 50 && t.min › 45)
{
пикселей.setPixelColor(11, пикселей.Цвет(0, 0, 0));
пикселей.show( );
пиксели.setPixelColor(13, пиксели.Color(mled));
пиксели.show();
}

if (t.min ‹= 55 && t.min › 50)
{
пикселей.setPixelColor(13, пикселей.Цвет(0, 0, 0));
пикселей.show( );
пиксели.setPixelColor(14, пиксели.Color(mled));
пиксели.show();
}

if (t.min ‹= 60 && t.min › 55)
{
пикселей.setPixelColor(14, пикселей.Цвет(0, 0, 0));
пикселей.show( );
пиксели.setPixelColor(15, пиксели.Color(mled));
пиксели.show();
пиксели.setPixelColor(15, пиксели.Color(mled));
пикселей.show();

}

Serial.print(t.hour, DEC);
Serial.print(" ");
Serial.print(t.min, DEC);
Serial.print(" ");
Serial.print(t.sec, DEC);
Serial.println(" ");

}

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

Голосуйте за нас, если вам понравился проект.

Спасибо за чтение.

Автор: Аман Ришав

Karkana Makerspace
Посетите сейчас : karkhana.club