Съдържание:

Ish Clock: 5 стъпки (със снимки)
Ish Clock: 5 стъпки (със снимки)

Видео: Ish Clock: 5 стъпки (със снимки)

Видео: Ish Clock: 5 стъпки (със снимки)
Видео: 5 o'clock - Инструкции, указания (от 1 до 20) prod. Kanala 2024, Юли
Anonim
Image
Image
Събиране на части и дървообработване
Събиране на части и дървообработване

Често се оказвам, че си купувам неща, за които нямам представа какво ще правя. Този проект е резултат от покупка на пръстен с включени 12x WS2812b светодиоди. Нямах планове за това, но изглеждаше страхотно онлайн, затова забих един в количката си, играх с него известно време, когато пристигна и след това забравих всичко.

Малко по -късно си мислех да направя часовник и се сетих, че е седнал и не прави нищо. Мислех да купя втори пръстен с включени 60 светодиода, за да компенсирам минутите, но след това започнах да мисля как ние / аз сме склонни да гледаме часа и да го закръглим до най -близките 5 минути.

С това в моята тръгнах с моя 12 LED пръстен, за да направя иш часовника. Той показва 1 светодиод наведнъж за 1 секунда, за да покаже часа (син светодиод) и след това минутите (червен светодиод), закръглени надолу

Стъпка 1: Събиране на части и дървообработване

Събиране на части и дървообработване
Събиране на части и дървообработване
Събиране на части и дървообработване
Събиране на части и дървообработване
Събиране на части и дървообработване
Събиране на части и дървообработване

Имах голям късмет да пристигна на работа един ден и да забележа палет. Този палет ми изпъкна, тъй като не приличаше на стандартния ти палет от мелницата. Беше чист, термично обработен и най -необичайно масивен дъб.

Този проект е направен от едно от парчетата на този палет. (Попитах шефа, преди да го занеса у дома)

Използва се също:

  • 12 пиксела ws2812b LED пръстен
  • Модул за часовник в реално време (RTC) (използвам DS3231 с I2C)
  • Съвместим с Arduino Nano v3.0
  • Акрилен лист (5 мм)
  • Цветна тел

Инструменти

  • Бормашина
  • Рутер
  • Регулируем плосък дървен накрайник
  • Шлифовъчна машина
  • Ръчен трион
  • Поялник
  • Пистолет за горещо лепило
  • Шкурка
  • Датско масло

Шлайфане

Започнах с помощта на шлифовъчната машина за изправяне и почистване на дървения блок, докато всички страни станат чисти и гладки. Оставих някои несъвършенства видими и не са идеално прави или квадратни, тъй като ми харесва да мога да видя част от историята в гората.

Маркиране и изрязване на дупките

След шлайфане избрах страната, която исках да е циферблатът, и маркирах центъра, като нарисувах линии от всеки ъгъл. Поставих регулируемата дървесина малко по -голяма от светодиодния пръстен, така че да има рафт, върху който да седне акрилът и да отреже около 5 мм дълбочина, след което да се регулира фрезата точно над размера на LED пръстена и отрязах още 5 мм.

Отвори за фрезоване и кабели

Използвайки моя рутер с 12 -милиметровия бит, извадих вдлъбнатина в долната част на блока, за да скрия RTC и Arduino. Нейната дълбочина е около 15 мм и не по -малко от 5 мм от всеки ръб. Маркирах центъра (иш) отдолу и пробих с помощта на 10 мм бит малко по средата, за да позволя LED проводниците. След това с помощта на 5 мм бит пробих от центъра на LED вдлъбнатината, за да срещна 10 мм отвор отдолу.

Още един 4 мм отвор на гърба за захранване и с помощта на по -малък рутер за направа на канал за проводниците на гърба на LED пръстена и работата с дървото е свършена.

Стъпка 2: Акрилни кръгове

Акрилни кръгове
Акрилни кръгове
Акрилни кръгове
Акрилни кръгове
Акрилни кръгове
Акрилни кръгове

За да направя акрила за предната част на часовника, заявих, че изрязвам квадратно парче, което е просто по -голямо от дупката, която трябва да запълни. След това с помощта на шлифовъчната машина започнах да премахвам ъглите, докато стане с правилната форма и размер. След това преминах към ръчно шлайфане, за да не прекалявам и трябваше да започна отначало.

Това беше бавен и досаден процес на опити и грешки, докато не се вмести точно, но мисля, че крайният резултат си заслужава. Завърших с помощта на много фина хартия, за да придадем на матрицата на акрила предна част.

Стъпка 3: Запояване

Запояване
Запояване
Запояване
Запояване
Запояване
Запояване
Запояване
Запояване

Обичам да използвам цветна система за кабелите си по този повод, който избирам:

  • Червено за захранване (5v)
  • Бяло за земя
  • Жълто за данни
  • Зелено за часовника

Започнах със запояване на 3 -те необходими проводника върху LED пръстена, като използвах системата по -горе и натиснах проводниците надолу през отвора. Тъй като не трябва да се излага на действително принудително, използвах малко горещо лепило, за да задържа пръстена на място. (Може да се наложи да го сменя някой път) и да инсталирам акрила само с малко горещо лепило по ръба.

След това запоявах 4 -те проводника към RTC, използвайки горната система. За да поддържам нещата по -спретнати, реших да черпя захранване за RTC от Arduino. След това свърза всичко към Arduino и запоява 1 проводник за захранване и друг за заземяване към Arduino.

RTC

  • SCL (часовник) към аналогов извод 5
  • SDA (данни) към аналогов извод 4
  • VCC до 5V
  • GND към всеки GND на Arduino

LED пръстен

Din към цифров пин 6

Имах един стар USB кабел, който висеше наоколо, затова реших да го използвам за захранване на часовника. Отрязах края, който обикновено се свързва с нещо и го избутах през дупката на гърба. След това отстранете и опънете краищата преди запояване на VCC към Arduino и LED пръстена към положителната страна и заземяването от Arduino и LED към земята. Малко по -късно се свивам и изглеждаше добре, Пистолетът за горещо лепило излезе, за да задържи всичко. Реших да напусна Arduino с достатъчно игра, така че ще мога да получа достъп до USB порта, за да го програмирам в бъдеще, но не толкова, че да изпадна.

Стъпка 4: Кодът

Вече трябва да можете да качите този код в Arduino.

Ако RTC не работи, този код ще зададе часа въз основа на кода е компилиран, така че не забравяйте просто да натиснете бутона за качване и да не проверявате.

алтернативно това също работи много добре за настройка на часа.

www.instructables.com/id/Setting-the-DS130…

Голяма част от този код заимствах от библиотеката Adafruit NeoPixel, а някои от библиотеката на RTC, която намерих, а някои измислих сам.

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

#включва

#включва

// дефинираме щифтове

#дефинирайте ПИН 6

#define BRIGHTNESS 20 // задайте максимална яркост

#дефинирайте r 5

#дефинирайте g 5

#дефинирайте b 5

RTC_DS3231 rtc; // Създаване на часовник обект

Adafruit_NeoPixel strip = Adafruit_NeoPixel (12, PIN, NEO_GRB + NEO_KHZ800); // лентов обект

void setup () {

Wire.begin (); // Започнете I2C

rtc.begin (); // започва часовник

Serial.begin (9600);

// задаване на pinmodes

pinMode (PIN, OUTPUT);

if (rtc.lostPower ()) {

Serial.println ("RTC загуби захранване, нека зададем часа!");

// следният ред задава RTC на датата и часа на съставяне на тази скица

rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)));

// Този ред задава RTC с изрична дата и час, например за задаване

// 21 януари 2014 г. в 3 часа сутринта бихте се обадили:

// rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0));

}

strip.begin ();

strip.show (); // Инициализиране на всички пиксели на „изключено“

DateTime theTime = rtc.now (); // отчита лятното часово време

байт secondval = theTime.second (); // получаваме секунди

байт minuteval = theTime.minute (); // получавам минути

int hourval = theTime.hour ();

точка (лента. Цвят (0, g, 0), 50);

}

void loop () {

// получавам време

DateTime theTime = rtc.now (); // отчита лятното часово време

int minuteval = theTime.minute (); // получавам минути

int hourval = theTime.hour (); // получавам часове

int secondval = theTime.second ();

if (minuteval 0) {

strip.setPixelColor (0, r, 0, 0);

strip.show ();}

иначе ако (minuteval <= 9) {

strip.setPixelColor (1, r, 0, 0);

strip.show ();}

иначе ако (minuteval <= 14) {

strip.setPixelColor (2, r, 0, 0);

strip.show ();}

иначе ако (minuteval <= 19) {

strip.setPixelColor (3, r, 0, 0);

strip.show ();}

иначе ако (minuteval <= 24) {

strip.setPixelColor (4, r, 0, 0);

strip.show ();}

иначе ако (minuteval <= 29) {

strip.setPixelColor (5, r, 0, 0);

strip.show ();}

иначе ако (minuteval <= 34) {

strip.setPixelColor (6, r, 0, 0);

strip.show ();}

иначе ако (minuteval <= 39) {

strip.setPixelColor (7, r, 0, 0);

strip.show ();}

иначе ако (minuteval <= 44) {

strip.setPixelColor (8, r, 0, 0);

strip.show ();}

иначе ако (minuteval <= 49) {

strip.setPixelColor (9, r, 0, 0);

strip.show ();}

иначе ако (minuteval <= 54) {

strip.setPixelColor (10, r, 0, 0);

strip.show ();}

иначе ако (minuteval <= 59) {

strip.setPixelColor (11, r, 0, 0);

strip.show ();}

забавяне (1000);

за (int i = 0; i <12; i ++) {

strip.setPixelColor (i, 0, 0, 0);

strip.show ();

}

ако (hourval == 0) {

strip.setPixelColor (0, 0, 0, b);

strip.show ();}

иначе ако (hourval == 1) {

strip.setPixelColor (1, 0, 0, b);

strip.show ();}

иначе ако (hourval == 2) {

strip.setPixelColor (2, 0, 0, b);

strip.show ();}

иначе ако (hourval == 3) {

strip.setPixelColor (3, 0, 0, b);

strip.show ();}

иначе ако (hourval == 4) {

strip.setPixelColor (4, 0, 0, b);

strip.show ();}

иначе ако (hourval == 5) {

strip.setPixelColor (5, 0, 0, b);

strip.show ();}

иначе ако (hourval == 6) {

strip.setPixelColor (6, 0, 0, b);

strip.show ();}

иначе ако (hourval == 7) {

strip.setPixelColor (7, 0, 0, b);

strip.show ();}

иначе ако (hourval == 8) {

strip.setPixelColor (8, 0, 0, b);

strip.show ();}

иначе ако (hourval == 9) {

strip.setPixelColor (9, 0, 0, b);

strip.show ();}

иначе ако (hourval == 10) {

strip.setPixelColor (10, 0, 0, b);

strip.show ();}

иначе ако (hourval == 11) {

strip.setPixelColor (11, 0, 0, b);

strip.show ();}

иначе ако (hourval == 12) {

strip.setPixelColor (0, 0, 0, b);

strip.show ();}

иначе ако (hourval == 13) {

strip.setPixelColor (1, 0, 0, b);

strip.show ();}

иначе ако (hourval == 14) {

strip.setPixelColor (2, 0, 0, b);

strip.show ();}

иначе ако (hourval == 15) {

strip.setPixelColor (3, 0, 0, b);

strip.show ();}

иначе ако (hourval == 16) {

strip.setPixelColor (4, 0, 0, b);

strip.show ();}

иначе ако (hourval == 17) {

strip.setPixelColor (5, 0, 0, b);

strip.show ();}

иначе ако (hourval == 18) {

strip.setPixelColor (6, 0, 0, b);

strip.show ();}

иначе ако (hourval == 19) {

strip.setPixelColor (7, 0, 0, b);

strip.show ();}

иначе ако (hourval == 20) {

strip.setPixelColor (8, 0, 0, b);

strip.show ();}

иначе ако (hourval == 21) {

strip.setPixelColor (9, 0, 0, b);

strip.show ();}

иначе ако (hourval == 22) {

strip.setPixelColor (10, 0, 0, b);

strip.show ();}

иначе ако (hourval == 23) {

strip.setPixelColor (11, 0, 0, b);

strip.show ();}

забавяне (1000);

for (int i = 0; i <12; i ++) {

strip.setPixelColor (i, 0, 0, 0);

strip.show ();

}

// за серийно отстраняване на грешки

Serial.print (hourval, DEC);

Serial.print (':');

Serial.print (minuteval, DEC);

Serial.print (':');

Serial.println (secondval, DEC);

}

void dot (uint32_t c, uint8_t wait) {

за (int j = 0; j <3; j ++) {

за (int i = 0; i <12; i ++) {

strip.setPixelColor (i, c);

strip.show ();

забавяне (изчакване);

за (int i = 0; i <12; i ++) {

strip.setPixelColor (i, 0, 0, 0);

strip.show ();}

}

}

}

Стъпка 5: Датско масло

Датско масло
Датско масло
Датско масло
Датско масло
Датско масло
Датско масло
Датско масло
Датско масло

Последната и незадължителна стъпка е да нанесете малко датско масло върху дървото. Много ми харесва как извежда зърното плюс предлага известна защита от петна и влага. Така че горещо го препоръчвам.

Можете да го изчеткате или просто използвам стара кърпа, за да го избърша.

Сега остава само да го включите и да се насладите.

Препоръчано: