Cuprins:

Ceas Ish: 5 pași (cu imagini)
Ceas Ish: 5 pași (cu imagini)

Video: Ceas Ish: 5 pași (cu imagini)

Video: Ceas Ish: 5 pași (cu imagini)
Video: Apple Watch your back, Samsung Galaxy Watch 5 este aici! Sau este 4+1?! 2024, Iulie
Anonim
Image
Image
Adunarea pieselor și prelucrării lemnului
Adunarea pieselor și prelucrării lemnului

De multe ori îmi găsesc singuri cumpărând lucruri cu care habar n-am cu ce voi face. Acest proiect este rezultatul achiziționării unui inel care are 12 LED-uri WS2812b aprinse. Nu aveam planuri pentru asta, dar părea grozav online, așa că am înfipt unul în coșul meu, m-am jucat o vreme când a sosit și apoi am uitat totul.

O vreme mai târziu mă gândeam să fac un ceas și mi-am amintit că stătea acolo, fără să facă nimic. Mă gândeam să cumpăr un al doilea inel cu 60 de LED-uri aprinse pentru a compune minutele, dar apoi am început să mă gândesc cum tindem să privim ora și să o rotunjim la cele mai apropiate 5 minute.

Cu asta în al meu, am pornit cu inelul meu cu 12 LED-uri pentru a face ceasul ish. Afișează 1 LED la un moment dat timp de 1 secundă, pentru a indica ora (LED albastru) și apoi minutele (LED roșu) rotunjite în jos

Pasul 1: Adunarea pieselor și prelucrarea lemnului

Adunarea pieselor și prelucrarea lemnului
Adunarea pieselor și prelucrarea lemnului
Adunarea pieselor și prelucrarea lemnului
Adunarea pieselor și prelucrarea lemnului
Adunarea pieselor și prelucrării lemnului
Adunarea pieselor și prelucrării lemnului

Am avut mare noroc că am ajuns la locul de muncă într-o zi și am văzut un palet. Acest palet mi-a ieșit, deoarece nu arăta ca standardul tău, rulat de paleta morii. Era stejar curat, tratat termic și cel mai neobișnuit de solid.

Acest proiect este realizat dintr-una din piesele acelui palet. (L-am întrebat pe șef înainte să-l duc acasă)

De asemenea, folosit:

  • Inel LED de 12 pixeli ws2812b
  • Modul Ceas în timp real (RTC) (folosesc un DS3231 cu I2C)
  • Compatibil cu Arduino Nano v3.0
  • Foi acrilice (5mm)
  • Sârmă colorată

Instrumente

  • Burghiu electric
  • Router
  • Vârf de lemn plat reglabil
  • Șlefuitor electric
  • Fierastrau
  • Ciocan de lipit
  • Pistol de lipit fierbinte
  • Hârtie de nisip
  • Ulei danez

Șlefuire

Am început prin a folosi mașina de șlefuit pentru a îndrepta și curăța blocul de lemn până când toate părțile sunt curate și netede. Am lăsat unele imperfecțiuni vizibile și nu sunt perfect drepte sau pătrate, deoarece îmi place să pot vedea o parte din istorie în pădure.

Marcarea și tăierea găurilor

După șlefuire am ales partea pe care doream fața ceasului și am marcat centrul trasând linii din fiecare colț. Am setat un pic de lemn reglabil puțin mai mare decât inelul cu led, astfel încât să existe un raft pentru acrilic să stea și să taie aproximativ 5 mm adâncime, apoi reglați tăietorul cu puțin peste dimensiunea inelului cu LED și am tăiat încă 5 mm sau cam așa ceva.

Rutare și găuri de cablu

Folosind routerul meu cu bitul de 12 mm, am direcționat o adâncitură în partea de jos a blocului pentru a ascunde RTC și Arduino. Are o adâncime de aproximativ 15 mm și nu mai puțin de 5 mm de orice margine. Am marcat centrul (ish) din partea de jos și am forat folosind un bit de 10 mm chiar la jumătatea drumului pentru a permite firele LED. Apoi, folosind un bit de 5 mm, am forat din centrul locașului LED pentru a întâlni gaura de 10 mm din partea de jos.

Încă o gaură de 4 mm din spate pentru ca puterea să intre și și folosind un bit de router mai mic pentru a crea un canal pentru firele din spatele inelului cu LED-uri și lucrul cu lemnul este terminat.

Pasul 2: cercuri acrilice

Cercuri acrilice
Cercuri acrilice
Cercuri acrilice
Cercuri acrilice
Cercuri acrilice
Cercuri acrilice

Pentru a face acrilul pentru partea din față a ceasului, am spus să tai o bucată pătrată care era doar mai mare decât gaura pe care trebuia să o umple. Apoi, folosind șlefuitorul electric pentru a începe, am început să îndepărtez colțurile până când avea forma și dimensiunea potrivite. Am trecut apoi pe șlefuirea manuală, așa că nu am tras prea mult și trebuie să o iau de la capăt.

A fost un proces lent și obositor de încercare și eroare până când s-a potrivit corect, dar cred că rezultatul final a meritat. Am terminat folosind o hârtie granulată foarte fină pentru a da faței acrilului un aspect mat.

Pasul 3: lipire

Lipire
Lipire
Lipire
Lipire
Lipire
Lipire
Lipire
Lipire

Îmi place să folosesc un sistem de culoare pentru firele mele cu această ocazie pe care o aleg:

  • Roșu pentru putere (5v)
  • Alb pentru sol
  • Galben pentru date
  • Verde pentru Ceas

Am început prin lipirea celor 3 fire necesare pe inelul LED folosind sistemul de mai sus și împingerea firelor în josul găurii. Deoarece nu ar trebui să fie expus unor forțe reale, am folosit un pic de clei fierbinte pentru a menține inelul în poziție. (S-ar putea să trebuiască să-l schimb cândva) și să instalez acrilul cu doar puțin adeziv fierbinte în jurul marginii.

Am lipit apoi cele 4 fire pe RTC folosind sistemul de mai sus. Pentru a menține lucrurile puțin mai îngrijite, am decis să atrag puterea pentru RTC de la Arduino. Apoi a conectat totul la Arduino și a lipit 1 cablu pentru alimentare și altul pentru masă la Arduino.

RTC

  • SCL (ceas) la pinul analogic 5
  • SDA (date) la pinul analogic 4
  • VCC la 5V
  • GND către orice GND de pe Arduino

Inel cu LED

Din la pinul digital 6

Aveam un cablu USB vechi, așa că am decis să îl folosesc pentru a alimenta ceasul. Am tăiat capătul care în mod normal se va conecta la ceva și l-am împins prin gaura din spate. Apoi a dezbrăcat și tăiat capetele înainte de a lipi VCC pe Arduino și inelul LED pe partea pozitivă și Masa de la Arduino și LED la Masă. Căldura mică se micșorează mai târziu și arăta bine, Pistolul de lipit fierbinte a ieșit din nou pentru a ține totul apăsat. Am decis să părăsesc Arduino cu suficient joc pentru a putea accesa portul USB pentru a-l programa în viitor, dar nu atât de mult încât aș putea să cad.

Pasul 4: Codul

Acum ar trebui să puteți încărca acest cod pe Arduino.

Dacă RTC nu rulează, acest cod va seta ora în funcție de momentul în care a fost compilat codul, deci asigurați-vă că apăsați doar butonul de încărcare și nu verificați.

alternativ, acest lucru funcționează foarte bine și pentru setarea timpului.

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

O mare parte din acest cod l-am împrumutat de la biblioteca Adafruit NeoPixel și unele de la o bibliotecă RTC pe care le-am găsit, iar altele le-am compus singure.

// include codul bibliotecii: #include

#include

#include

// defineste pinii

#define PIN 6

#define BRIGHTNESS 20 // setează luminozitatea maximă

#define r 5

#define g 5

#define b 5

RTC_DS3231 rtc; // Stabiliți obiectul de ceas

Adafruit_NeoPixel strip = Adafruit_NeoPixel (12, PIN, NEO_GRB + NEO_KHZ800); // obiectul strip

configurare nulă () {

Wire.begin (); // Începeți I2C

rtc.begin (); // începe ceasul

Serial.begin (9600);

// setează moduri de pin

pinMode (PIN, OUTPUT);

if (rtc.lostPower ()) {

Serial.println ("RTC a pierdut puterea, permite să setăm ora!");

// următoarea linie setează RTC la data și ora la care a fost compilată această schiță

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

// Această linie setează RTC cu o dată și o oră explicite, de exemplu pentru a seta

// 21 ianuarie 2014 la ora 03:00 sunați la:

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

}

strip.begin ();

strip.show (); // Inițializați toți pixelii la „dezactivat”

DateTime theTime = rtc.now (); // ia în calcul DST

octet secondval = theTime.second (); // obține secunde

byte minuteval = theTime.minute (); // obține minute

int hourval = theTime.hour ();

punct (strip. Color (0, g, 0), 50);

}

bucla nulă () {

// Fă-ți timp

DateTime theTime = rtc.now (); // ia în calcul DST

int minuteval = theTime.minute (); // obține minute

int hourval = theTime.hour (); // obțineți ore

int secondval = theTime.second ();

if (minuteval 0) {

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

strip.show ();}

else if (minuteval <= 9) {

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

strip.show ();}

else if (minuteval <= 14) {

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

strip.show ();}

else if (minuteval <= 19) {

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

strip.show ();}

else if (minuteval <= 24) {

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

strip.show ();}

else if (minuteval <= 29) {

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

strip.show ();}

else if (minuteval <= 34) {

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

strip.show ();}

else if (minuteval <= 39) {

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

strip.show ();}

else if (minuteval <= 44) {

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

strip.show ();}

else if (minuteval <= 49) {

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

strip.show ();}

else if (minuteval <= 54) {

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

strip.show ();}

else if (minuteval <= 59) {

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

strip.show ();}

întârziere (1000);

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

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

strip.show ();

}

if (hourval == 0) {

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

strip.show ();}

else if (hourval == 1) {

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

strip.show ();}

else if (hourval == 2) {

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

strip.show ();}

else if (hourval == 3) {

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

strip.show ();}

else if (hourval == 4) {

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

strip.show ();}

else if (hourval == 5) {

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

strip.show ();}

else if (hourval == 6) {

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

strip.show ();}

else if (hourval == 7) {

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

strip.show ();}

else if (hourval == 8) {

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

strip.show ();}

else if (hourval == 9) {

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

strip.show ();}

else if (hourval == 10) {

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

strip.show ();}

else if (hourval == 11) {

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

strip.show ();}

else if (hourval == 12) {

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

strip.show ();}

else if (hourval == 13) {

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

strip.show ();}

else if (hourval == 14) {

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

strip.show ();}

else if (hourval == 15) {

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

strip.show ();}

else if (hourval == 16) {

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

strip.show ();}

else if (hourval == 17) {

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

strip.show ();}

else if (hourval == 18) {

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

strip.show ();}

else if (hourval == 19) {

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

strip.show ();}

else if (hourval == 20) {

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

strip.show ();}

else if (hourval == 21) {

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

strip.show ();}

else if (hourval == 22) {

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

strip.show ();}

else if (hourval == 23) {

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

strip.show ();}

întârziere (1000);

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

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

strip.show ();

}

// pentru depanare în serie

Serial.print (hourval, DEC);

Serial.print (':');

Serial.print (minuteval, DEC);

Serial.print (':');

Serial.println (secondval, DEC);

}

punct gol (uint32_t c, uint8_t așteptați) {

for (int j = 0; j <3; j ++) {

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

strip.setPixelColor (i, c);

strip.show ();

întârziere (așteptați);

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

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

strip.show ();}

}

}

}

Pasul 5: Ulei danez

Ulei danez
Ulei danez
Ulei danez
Ulei danez
Ulei danez
Ulei danez
Ulei danez
Ulei danez

Pasul final și opțional este de a aplica ulei danez pe lemn. Îmi place foarte mult modul în care scoate cerealele plus oferă o oarecare protecție împotriva petelor și umezelii. Așa că o recomand cu drag.

O poți peria sau pur și simplu folosesc o cârpă veche pentru a o șterge.

Acum nu mai rămâne decât să îl conectați și să vă bucurați.

Recomandat: