Taula de continguts:

Ish Clock: 5 passos (amb imatges)
Ish Clock: 5 passos (amb imatges)

Vídeo: Ish Clock: 5 passos (amb imatges)

Vídeo: Ish Clock: 5 passos (amb imatges)
Vídeo: Штукатурка стен - самое полное видео! Переделка хрущевки от А до Я. #5 2024, Juliol
Anonim
Image
Image
Recollida de peces i treball de fusta
Recollida de peces i treball de fusta

Sovint em trobo comprant coses que no tinc ni idea de què faré. Aquest projecte és el resultat de la compra d’un anell que té 12 LEDs WS2812b encesos. No tenia cap pla, però semblava genial en línia, de manera que en vaig ficar un al carretó, vaig jugar-hi una estona quan va arribar i després ho vaig oblidar tot.

Una estona després vaig pensar en fer un rellotge i vaig recordar que estava assegut allà sense fer res. Pensava en comprar un segon anell amb 60 LEDs encès per compensar els minuts, però després vaig començar a pensar com tendim a mirar el temps i arrodonir-lo als 5 minuts més propers.

Amb això a la meva, vaig sortir amb el meu anell de 12 LED per fer el rellotge ish. Mostra 1 LED a la vegada durant 1 segon, per indicar l’hora (LED blau) i després els minuts (LED vermell) arrodonits cap avall

Pas 1: recollida de peces i treball de fusta

Recollida de peces i treball de fusta
Recollida de peces i treball de fusta
Recollida de peces i treball de fusta
Recollida de peces i treball de fusta
Recollida de peces i treball de fusta
Recollida de peces i treball de fusta

Vaig tenir la gran sort d’arribar a la feina un dia i veure un palet. Aquest palet em va quedar atrapat, ja que no semblava el vostre palet de fàbrica estàndard. Era de roure net, tractat tèrmicament i amb una massa inusualment sòlida.

Aquest projecte està fet a partir d’una de les peces d’aquest palet. (Li vaig preguntar al cap abans de portar-me'l a casa)

També s'utilitza:

  • Anell LED de 12 píxels ws2812b
  • Mòdul de rellotge en temps real (RTC) (estic fent servir un DS3231 amb I2C)
  • Compatible amb Arduino Nano v3.0
  • Full acrílic (5 mm)
  • Filferro de colors

Eines

  • Trepant elèctric
  • Encaminador
  • Punta de fusta plana ajustable
  • Polidora de potència
  • Serra de mà
  • Soldador
  • Pistola de cola calenta
  • Paper de sorra
  • Oli danès

Ponçat

Vaig començar fent servir la polidora per redreçar i netejar el bloc de fusta fins que tots els costats estiguessin nets i llisos. Vaig deixar algunes imperfeccions visibles i no són perfectament rectes ni quadrades, ja que m'agrada poder veure part de la història al bosc.

Marcant i tallant els forats

Després de polir, vaig triar el costat que volia la cara del rellotge i vaig marcar el centre traçant línies des de cada cantonada. Vaig ajustar la mica de fusta ajustable una mica més gran que l’anell LED, de manera que hi hauria una prestatgeria perquè l’acrílic s’assegués i talla uns 5 mm de profunditat i, a continuació, ajustem el tallador una mica més de la mida de l’anell LED i en vaig reduir uns 5 mm més o menys.

Recorregut i forats de cables

Amb el meu enrutador amb el bit de 12 mm, vaig encaminar un recés a la part inferior del bloc per amagar el RTC i l’Arduino. Té uns 15 mm de profunditat i no menys de 5 mm de qualsevol vora. Vaig marcar el centre (ish) des de la part inferior i vaig perforar amb un bit de 10 mm tot just passat la meitat per permetre els cables LED. Després, amb una broca de 5 mm, he forat des del centre del recés del LED per trobar el forat de 10 mm des de la part inferior.

Un forat més de 4 mm a la part posterior per poder entrar i, mitjançant una punta de router més petita, per fer un canal per als cables de la part posterior de l’anell LED i s’ha acabat el treball de la fusta.

Pas 2: cercles acrílics

Cercles acrílics
Cercles acrílics
Cercles acrílics
Cercles acrílics
Cercles acrílics
Cercles acrílics

Per fer l'acrílic de la part davantera del rellotge vaig dir que tallava una peça quadrada que era més gran que el forat que havia d'omplir. Després, amb la polidora de potència per començar, vaig començar a treure les cantonades fins que tenia la forma i la mida adequades. Després vaig passar a la polidora manual per no tirar massa i haver de tornar a començar.

Va ser un procés lent i tediós d'assaig i error fins que va quedar bé, però crec que el resultat final va valer la pena. Vaig acabar fent servir un paper granulat molt fi per donar un aspecte esmerilat a la part frontal de l’acrílic.

Pas 3: soldar

Soldadura
Soldadura
Soldadura
Soldadura
Soldadura
Soldadura
Soldadura
Soldadura

M'agrada utilitzar un sistema de color per als meus cables en aquesta ocasió que trio:

  • Vermell per a alimentació (5v)
  • Blanc per a terra
  • Groc per a dades
  • Verd per al rellotge

Vaig començar soldant els 3 cables necessaris a l'anell LED mitjançant el sistema anterior i empenyent els cables pel forat. Com que no s’hauria d’exposar a cap força forçada, vaig utilitzar una mica de cola calenta per mantenir l’anell al seu lloc. (És possible que hagi de canviar-lo algun cop) i instal·lar l'acrílic amb una mica de cola calenta al voltant de la vora.

Després vaig soldar els 4 cables al RTC mitjançant el sistema anterior. Per mantenir les coses una mica més ordenades, vaig decidir treure el poder del RTC a l'Arduino. Després, ho va connectar tot a l'Arduino i va soldar 1 cable per alimentar-lo i un altre per a terra a l'Arduino.

RTC

  • SCL (rellotge) al pin analògic 5
  • SDA (dades) al pin analògic 4
  • VCC a 5V
  • GND a qualsevol GND de l'Arduino

Anell LED

Din al pin digital 6

Tenia un cable USB vell penjat, així que vaig decidir utilitzar-lo per alimentar el rellotge. Vaig tallar l'extrem que normalment es connectava a alguna cosa i el vaig empènyer pel forat de la part posterior. A continuació, va despullar i empalmar els extrems abans de soldar el VCC a l'Arduino i l'anell LED al costat positiu i la Terra des de l'Arduino i el LED a Terra. Poc es redueix la calor més tard i tenia bon aspecte, La pistola de cola calenta va tornar a sortir per aguantar-ho tot. Vaig decidir deixar l'Arduino amb el joc suficient per poder accedir al port USB per programar-lo en el futur, però no tant que pogués caure.

Pas 4: el codi

Ara hauríeu de poder carregar aquest codi a l'Arduino.

Si l'RTC no s'executa, aquest codi establirà l'hora en funció de la compilació del codi, així que assegureu-vos de prémer el botó de càrrega i no verificar-lo.

alternativament, això també funciona molt bé per configurar l'hora.

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

Bona part d’aquest codi l’he pres de la biblioteca Adafruit NeoPixel i d’altres d’una biblioteca RTC que he trobat i d’altres que he inventat pel meu compte.

// inclou el codi de la biblioteca: #include

#incloure

#incloure

// defineix pins

#defineix el PIN 6

#define BRIGHTNESS 20 // defineix la brillantor màxima

#defineix r 5

#defineix g 5

#defineix b 5

RTC_DS3231 rtc; // Establir objecte de rellotge

Adafruit_NeoPixel strip = Adafruit_NeoPixel (12, PIN, NEO_GRB + NEO_KHZ800); // objecte de tira

configuració nul·la () {

Wire.begin (); // Comenceu I2C

rtc.begin (); // començar rellotge

Serial.begin (9600);

// estableix modes pin

pinMode (PIN, OUTPUT);

if (rtc.lostPower ()) {

Serial.println ("RTC ha perdut energia, permetem definir l'hora!");

// la línia següent estableix el RTC a la data i hora en què es va compilar aquest esbós

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

// Aquesta línia estableix el RTC amb una data i hora explícites, per exemple, per definir

// El 21 de gener de 2014 a les 3:00 trucaríeu a:

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

}

strip.begin ();

strip.show (); // Inicialitza tots els píxels a "off"

Hora Data el Temps = rtc.now (); // té en compte el DST

byte secondval = theTime.second (); // obtenir segons

byte minuteval = theTime.minute (); // obtenir minuts

int hourval = theTime.hour ();

punt (tira. Color (0, g, 0), 50);

}

bucle buit () {

// obtenir temps

Hora Data el Temps = rtc.now (); // té en compte el DST

int minuteval = theTime.minute (); // obtenir minuts

int hourval = theTime.hour (); // obtenir hores

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 ();}

retard (1000);

per a (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 ();}

retard (1000);

per a (int i = 0; i <12; i ++) {

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

strip.show ();

}

// per a la depuració en sèrie

Serial.print (hourval, DEC);

Serial.print (':');

Serial.print (minuteval, DEC);

Serial.print (':');

Serial.println (secondval, DEC);

}

punt buit (uint32_t c, uint8_t espera) {

per a (int j = 0; j <3; j ++) {

per a (int i = 0; i <12; i ++) {

strip.setPixelColor (i, c);

strip.show ();

retard (esperar);

per a (int i = 0; i <12; i ++) {

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

strip.show ();}

}

}

}

Pas 5: Oli danès

Oli danès
Oli danès
Oli danès
Oli danès
Oli danès
Oli danès
Oli danès
Oli danès

El pas final i opcional és aplicar una mica d’oli danès a la fusta. M'agrada molt com treu el gra i ofereix una mica de protecció contra les taques i la humitat. Així que el recomano.

Podeu pintar-lo o simplement faig servir un drap vell per netejar-lo.

Ara només queda connectar-lo i gaudir-ne.

Recomanat: