Tabla de contenido:

Ish Clock: 5 pasos (con imágenes)
Ish Clock: 5 pasos (con imágenes)

Video: Ish Clock: 5 pasos (con imágenes)

Video: Ish Clock: 5 pasos (con imágenes)
Video: La Hora en Inglés. What Time Is It? 2024, Mes de julio
Anonim
Image
Image
Recolección de piezas y trabajos en madera
Recolección de piezas y trabajos en madera

A menudo me encuentro comprando cosas con las que no tengo ni idea de qué voy a hacer. Este proyecto es el resultado de la compra de un anillo que tiene 12 LEDs WS2812b encendidos. No tenía planes para él, pero se veía genial en línea, así que puse uno en mi carrito, jugué con él por un tiempo cuando llegó y luego lo olvidé por completo.

Un rato después estaba pensando en hacer un reloj y recordé que estaba sentado allí sin hacer nada. Estaba pensando en comprar un segundo anillo con 60 LED encendidos para compensar los minutos, pero luego comencé a pensar cómo nosotros / yo tendemos a ver la hora y redondearla a los 5 minutos más cercanos.

Con esto en el mío, me puse en marcha con mi anillo de 12 LED para hacer el reloj ish. Muestra 1 LED a la vez durante 1 segundo, para indicar la hora (LED azul) y luego los minutos (LED rojo) redondeados hacia abajo.

Paso 1: Recopilación de piezas y trabajos en madera

Recolección de piezas y trabajos en madera
Recolección de piezas y trabajos en madera
Recolección de piezas y trabajos en madera
Recolección de piezas y trabajos en madera
Recolección de piezas y trabajos en madera
Recolección de piezas y trabajos en madera

Tuve mucha suerte de llegar un día al trabajo y ver un palé. Esta paleta me llamó la atención porque no se parecía a su paleta estándar, corriente. Era un roble limpio, tratado térmicamente y extraordinariamente sólido.

Este proyecto está hecho de una de las piezas de ese palet. (Le pregunté al jefe antes de llevármelo a casa)

También usado:

  • Anillo LED ws2812b de 12 píxeles
  • Módulo de reloj en tiempo real (RTC) (estoy usando un DS3231 con I2C)
  • Compatible con Arduino Nano v3.0
  • Hoja de acrílico (5 mm)
  • Alambre de color

Instrumentos

  • Taladro eléctrico
  • Enrutador
  • Broca de madera plana ajustable
  • Lijadora eléctrica
  • Sierra de mano
  • Soldador
  • Pistola de silicona
  • Papel de lija
  • Aceite danés

Lijado

Comencé usando la lijadora eléctrica para enderezar y limpiar el bloque de madera hasta que todos los lados estuvieran limpios y lisos. Dejé algunas imperfecciones visibles y no es perfectamente recto o cuadrado, ya que me gusta poder ver algo de la historia en la madera.

Marcar y cortar los agujeros

Después de lijar elegí el lado que quería de la esfera del reloj y marqué el centro dibujando líneas en cada esquina. Puse la broca de madera ajustable un poco más grande que el anillo LED para que hubiera un estante para que el acrílico se sentara y cortara unos 5 mm de profundidad, luego ajusté el cortador un poco más del tamaño del anillo LED y corté otros 5 mm más o menos..

Enrutamiento y orificios para cables

Usando mi enrutador con la broca de 12 mm, enrute un hueco en la parte inferior del bloque para ocultar el RTC y Arduino. Tiene unos 15 mm de profundidad y no menos de 5 mm de cualquier borde. Marqué el centro (ish) desde la parte inferior y perforé con una broca de 10 mm justo después de la mitad para permitir los cables LED. Luego, usando una broca de 5 mm, perforé desde el centro del hueco del LED para encontrar el orificio de 10 mm desde la parte inferior.

Un orificio más de 4 mm en la parte posterior para que entre la energía y usando una broca más pequeña para hacer un canal para los cables en la parte posterior del anillo LED y el trabajo de madera está listo.

Paso 2: círculos acrílicos

Círculos de acrílico
Círculos de acrílico
Círculos de acrílico
Círculos de acrílico
Círculos de acrílico
Círculos de acrílico

Para hacer el acrílico para el frente del reloj, dije cortar una pieza cuadrada que fuera un poco más grande que el agujero que tenía que llenar. Luego, usando la lijadora eléctrica para comenzar, comencé a quitar las esquinas hasta que tenía la forma y el tamaño correctos. Luego pasé al lijado manual para no disparar demasiado y tener que empezar de nuevo.

Fue un proceso lento y tedioso de prueba y error hasta que encajó perfectamente, pero creo que el resultado final valió la pena. Terminé usando un papel de lija muy fino para darle al frente del acrílico un aspecto mate.

Paso 3: soldadura

Soldadura
Soldadura
Soldadura
Soldadura
Soldadura
Soldadura
Soldadura
Soldadura

Me gusta usar un sistema de color para mis cables en esta ocasión elijo:

  • Rojo para poder (5v)
  • Blanco para tierra
  • Amarillo para datos
  • Verde para reloj

Comencé soldando los 3 cables necesarios en el anillo LED usando el sistema anterior y empujando los cables por el orificio. Como no debería estar expuesto a ninguna fuerza real, utilicé un poco de pegamento caliente para mantener el anillo en su lugar. (Es posible que deba cambiarlo en algún momento) e instalar el acrílico con solo un poco de pegamento caliente alrededor del borde.

Luego soldé los 4 cables al RTC usando el sistema anterior. Para mantener las cosas un poco más ordenadas, decidí sacar energía para el RTC del Arduino. Luego conecté todo al Arduino y soldó 1 cable para alimentación y otro para tierra al Arduino.

RTC

  • SCL (reloj) al pin analógico 5
  • SDA (datos) al pin analógico 4
  • VCC a 5 V
  • GND a cualquier GND en Arduino

Anillo LED

Din al pin digital 6

Tenía un viejo cable USB colgando, así que decidí usarlo para alimentar el reloj. Corté el extremo que normalmente se conectaría a algo y lo empujé a través del agujero en la parte posterior. Luego, pele y afine los extremos antes de soldar el VCC al Arduino y el anillo LED al lado positivo y la tierra del Arduino y el LED a tierra. Me encogí un poco más tarde y se veía bien, La pistola de pegamento caliente volvió a salir para mantener todo presionado. Decidí dejar el Arduino con suficiente juego para poder acceder al puerto USB para programarlo en el futuro, pero no tanto como para que me caiga.

Paso 4: el código

Ahora debería poder cargar este código en Arduino.

Si el RTC no se está ejecutando, este código establecerá la hora en función de cuándo se compiló el código, así que asegúrese de presionar el botón de carga y no verificar.

alternativamente, esto también funciona muy bien para establecer la hora.

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

Gran parte de este código lo tomé prestado de la biblioteca Adafruit NeoPixel y algo de una biblioteca RTC que encontré y algunos los inventé por mi cuenta.

// incluye el código de la biblioteca: #include

#incluir

#incluir

// definir pines

#define PIN 6

#define BRIGHTNESS 20 // establece el brillo máximo

#define r 5

#define g 5

#define b 5

RTC_DS3231 rtc; // Establecer objeto de reloj

Tira de Adafruit_NeoPixel = Adafruit_NeoPixel (12, PIN, NEO_GRB + NEO_KHZ800); // quitar objeto

configuración vacía () {

Wire.begin (); // Comenzar I2C

rtc.begin (); // iniciar el reloj

Serial.begin (9600);

// establecer pinmodes

pinMode (PIN, SALIDA);

if (rtc.lostPower ()) {

Serial.println ("RTC perdió energía, ¡ajustemos la hora!");

// la siguiente línea establece el RTC en la fecha y hora en que se compiló este boceto

rtc.adjust (Fecha y hora (F (_ FECHA_), F (_ HORA_)));

// Esta línea establece el RTC con una fecha y hora explícitas, por ejemplo para establecer

// El 21 de enero de 2014 a las 3 a. M., Llamaría:

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

}

strip.begin ();

strip.show (); // Inicializar todos los píxeles a 'desactivados'

DateTime theTime = rtc.now (); // tiene en cuenta el horario de verano

byte secondval = theTime.second (); // obtener segundos

byte minuteval = theTime.minute (); // obtener minutos

int hourval = theTime.hora ();

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

}

bucle vacío () {

// consigue tiempo

DateTime theTime = rtc.now (); // tiene en cuenta el horario de verano

int minuteval = theTime.minute (); // obtener minutos

int hourval = theTime.hora (); // obtener horas

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

retraso (1000);

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

retraso (1000);

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

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

strip.show ();

}

// para depuración en serie

Serial.print (hora, DEC);

Serial.print (':');

Serial.print (minuteval, DEC);

Serial.print (':');

Serial.println (secondval, DEC);

}

punto vacío (uint32_t c, uint8_t espera) {

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

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

strip.setPixelColor (i, c);

strip.show ();

retrasar (esperar);

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

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

strip.show ();}

}

}

}

Paso 5: aceite danés

Aceite danés
Aceite danés
Aceite danés
Aceite danés
Aceite danés
Aceite danés
Aceite danés
Aceite danés

El paso final y opcional es aplicar un poco de aceite danés a la madera. Realmente me gusta cómo resalta el grano y además ofrece cierta protección contra las manchas y la humedad. Así que lo recomiendo mucho.

Puedes cepillarlo o simplemente uso un paño viejo para limpiarlo.

Todo lo que queda ahora es enchufarlo y disfrutar.

Recomendado: