Sisällysluettelo:

Salaperäinen seinäkello: 27 vaihetta (kuvilla)
Salaperäinen seinäkello: 27 vaihetta (kuvilla)

Video: Salaperäinen seinäkello: 27 vaihetta (kuvilla)

Video: Salaperäinen seinäkello: 27 vaihetta (kuvilla)
Video: Paljastaa kammottavan 40 vuotta kestäneen hylätyn metsäkartanon mysteerit 2024, Heinäkuu
Anonim
Salaperäinen seinäkello
Salaperäinen seinäkello

Ajan kuluminen on asia, jota emme voi hallita. Se tapahtuu samalla nopeudella, jos olemme nukkumassa, hereillä, kyllästyneitä tai kihloissa. Nykyisten tapahtumien yhteydessä on tärkeää muistaa, että aika kuluu. Kun odotamme ajan kulumista, miksi et tekisi jotain, joka tekee ajan kulumisesta houkuttelevampaa katsella.

Tämä kello on saanut inspiraationsa Berliinistä, Saksasta löydetystä Mengenlehreuhrista, ja se voidaan lukea samalla tavalla. Aivan kuten alkuperäinen, se kertoo ajan valaistujen värillisten kenttien avulla.

Siinä on 96 LED -valoa, jotka valaisevat 52 `` numeroista '' aluetta. Toisin kuin alkuperäinen, siinä on pyöreä muotoilu, joka sisältää sekunnin renkaan vaakasuoran palkkiasettelun sijaan. Ulompi kaista osoittaa sekuntia yhdessä keskipisteen kanssa, kaksi seuraavaa kaistaa minuutteja ja viimeiset sisäkaistat tunteja.

Jos sinulla on romumateriaalia ja ylimääräistä aikaa käsissäsi, miksi et käytä tätä aikaa tehdäksesi jotain, joka näyttää sen!

Tähän projektiin tekisin muutamia muutoksia, jos tekisin sen uudelleen. Ensin maalasin kehyksen ja LED -levyn valkoiseksi mustan sijaan. Tämä heijastaisi enemmän valoa etuosan suuren linssin läpi. Odotin myös loppuun asti, kunnes LEDit asetetaan paikalleen. Tarvitsin taulun valmiiksi aikaisemmin, jotta se voisi auttaa minua koodin kirjoittamisessa. Kun tämä on poissa tieltä, opitaan ensin lukemaan se!

Kuva
Kuva

Vaihe 1: Kellon lukeminen

Kello luetaan sisäpiireistä ulkoreunaan. Sisärengas, jossa on neljä kenttää, merkitsevät kukin viisi täyttä tuntia, toisen renkaan rinnalla myös neljä kenttää, jotka merkitsevät yhtä kokonaista tuntia ja näyttävät tunnin arvon 24 tunnin muodossa. Kolmas rengas koostuu yhdestätoista kentästä, jotka tarkoittavat viittä täyttä minuuttia, seuraavassa renkaassa on vielä neljä kenttää, jotka merkitsevät yhden kokonaisen minuutin. Lopuksi 29 kentän ulompi rengas merkitsee parillisia sekunteja ja keskellä oleva valo vilkkuu merkitsemään parittomia (palaessaan) tai parillisia (kun ei pala) sekunteja.

Kuva
Kuva

Esimerkiksi yllä olevassa kuvassa on yksi viiden tunnin numeroista, 3 yhden tunnin numeroista, 8 viiden minuutin numerosta, 4 minuutin minuutit ja 23 kahden sekunnin numerosta ja keskimmäisestä toisesta numerosta.

1x5 + 3x1: 8x5 + 4x1: 23x2 + 1x1 = 8:44:47 = 8:44:47

Kuva
Kuva

Yllä oleva aika on: 3x5 + 0x1: 3x5 + 2x1: 5x2 + 1x1 = 15:17:11 = 15:17:11 PM

Kuva
Kuva

Yllä oleva aika on: 3x5 + 2x1: 3x5 + 3x1: 16x2 + 1x1 = 17:18:33 = 5:18:33 PM

Vaihe 2: Työkalut ja materiaalit

Työkalut ja materiaalit
Työkalut ja materiaalit
Työkalut ja materiaalit
Työkalut ja materiaalit
Työkalut ja materiaalit
Työkalut ja materiaalit

Elektroniikan materiaalit:

  • Arduino Nano
  • Reaaliaikainen kello
  • Osoitetut LEDit
  • Pistoke
  • Sähköjohto
  • USB -virtapistoke
  • Valosta riippuva vastus ja tasapainoinen vastus (jos haluat sen himmenevän yöllä)
  • Johto

Puuntyöstömateriaalit:

  • 3/4 tuumaa vaneria
  • Ohut vaneri
  • Romu (käytin 2x4s, mutta kovapuu toimisi myös)
  • Maali
  • Akryyli 30 x 36 tuumaa arkki (löydetty paikallisesta rautakaupasta)
  • Ikkunan sävy (yritä lähteä paikallisesti. Jos mitään ei ole saatavilla, löydät riittävän suuren arkin täältä)
  • Ikkunan sävytysneste (käytin suihkepullossa sekoitettua vettä vauvan shampoon kanssa)
  • Windex
  • Teurastajapaperi
  • Ruuvit
  • Suihkeliima
  • Liima
  • Liimapuikko

Työkalut:

  • Viivotin
  • Xacto -veitsi
  • Nauha
  • Kaksipuolinen teippi
  • Kompassi
  • Ympyränleikkaus
  • Palapeli
  • Vannesaha
  • Karan hiomakone
  • Palm Sander
  • Levyhiomakone
  • Reititinpöytä
  • Naskali
  • Porat ja poranterät/-ruuvit
  • Kiinnikkeet
  • Juotin
  • Juottaa
  • Langanpoistimet

Vaihe 3: Kokoa mallit

Kokoa mallit
Kokoa mallit
Kokoa mallit
Kokoa mallit

Tulosta suuri malli käyttämällä Adobe Readerin julisteasetusta. Leikkaa jokaisen paperin marginaalit ja nauha yhteen. Pysty-, vaaka- ja diagonaaliviivat auttavat mallin asettamisessa. Kaikilla sivuilla on pieniä numeroita, jotka auttavat pitämään ne järjestyksessä, jos ne putoavat järjestyksestä.

Kaikki tarvittavat mallit ja tiedostot löytyvät vaiheesta 26.

Vaihe 4: Karkeat leikkausympyrät

Karkeat leikkausympyrät
Karkeat leikkausympyrät
Karkeat leikkausympyrät
Karkeat leikkausympyrät

Kun asetat kaksi mallia 3/4 tuuman vanerilevylle, piirrä kompassilla hieman tarvittavia ympyröitä. Leikkaa karkea muoto jigisahalla.

Vaihe 5: Leikkaa kokoon

Leikkaa koon mukaan
Leikkaa koon mukaan
Leikkaa koon mukaan
Leikkaa koon mukaan

Leikkaa ympyrät lopulliseen kokoon vannesahan ympyräleikkausjigillä.

Vaihe 6: Käytä mallia

Käytä mallia
Käytä mallia
Käytä mallia
Käytä mallia
Käytä mallia
Käytä mallia

Levitä jokaista mallia ympyrään ruiskuliimalla. Aseta naula mallin keskelle keskittääksesi sen ympyrään.

Vaihe 7: Leikkaa malli

Leikkaa malli
Leikkaa malli
Leikkaa malli
Leikkaa malli
Leikkaa malli
Leikkaa malli

Leikkaa mallin jokainen ikkuna palapelin avulla. Jos sinulla on pääsy CNC: hen, tämä vaihe olisi paljon helpompaa! Porasin jokaiseen ikkunaan reiän tämän prosessin helpottamiseksi. Kun aloitat leikkaamisen, malli voi alkaa irrota. Jos näin tapahtuu, voit kiinnittää sen paikalleen pienillä teipillä.

Vaihe 8: Hionta

Hionta
Hionta
Hionta
Hionta
Hionta
Hionta

Hiomalla ja tasoittamalla palapelin jättämä karkea leikkaus sauvaan, karahiomakoneeseen ja kämmenhiomakoneeseen hiomapaperilla.

Vaihe 9: Poranpitimet LED -valoja varten

Poranpidikkeet LEDeille
Poranpidikkeet LEDeille
Poranpidikkeet LEDeille
Poranpidikkeet LEDeille
Poranpidikkeet LEDeille
Poranpidikkeet LEDeille
Poranpidikkeet LEDeille
Poranpidikkeet LEDeille

Merkitse jokaisen reiän keskikohta kierteellä ja poraa LED -valoja varten reikiä. Käytin ohjainta, joka auttoi pitämään poran kohtisuorassa työkappaleeseen nähden ja taustalevyä, jotta puhallus ei puhaltaisi pois takaa.

Vaihe 10: Yhdistä levyt

Yhdistä levyt
Yhdistä levyt
Yhdistä levyt
Yhdistä levyt
Yhdistä levyt
Yhdistä levyt

Vaihda etu- ja takalevyt ja jäljitä kehyksen osat LED -levyn takana. Siirrä kehys takaisin LED -levyn etuosaan ja poraa reiät ja ruuvaa osat yhteen.

Katso lisätietoja kuvien huomautuksista.

Vaihe 11: Aseta LED -valot paikalleen

Aseta LED -valot paikalleen
Aseta LED -valot paikalleen
Aseta LED -valot paikalleen
Aseta LED -valot paikalleen

Työnnä LEDit LED -levyn takaosan läpi. Reikien tulee olla riittävän kaukana toisistaan, jotta sinun ei tarvitse katkaista mitään johtoja, paitsi siirtymistä ympyrästä toiseen.

LED -valot alkavat keskeltä ja kulkevat vastapäivään ja sitten seuraavaan renkaaseen.

Vaihe 12: Kiinnitä segmentti 1

Liitä segmentti 1
Liitä segmentti 1
Liitä segmentti 1
Liitä segmentti 1
Liitä segmentti 1
Liitä segmentti 1

Leikkaa 9 segmenttiä "segmentti 1" -mallista, joka on kiinnitetty 3/4 tuuman vaneriin (löytyy kohdasta 26). Kiinnitä LED -levyyn liimalla ja kiinnikkeillä. Jos olet kärsimätön, voit myös kiinnittää sen paikalleen kynsien avulla.

Kun reuna on kuivunut, hio reuna tasaisesti kiekkohiomakoneella.

Vaihe 13: Maalaa

Maali
Maali
Maali
Maali
Maali
Maali
Maali
Maali

Suihkuta maali sekä LED -kortille että kehykselle. Jos tekisin tämän uudelleen, olisin valinnut käyttää valkoista maalia mustan sijasta, koska se heijastaisi enemmän linssin läpi.

Vaihe 14: Segmentti 2

Segmentti 2
Segmentti 2
Segmentti 2
Segmentti 2
Segmentti 2
Segmentti 2

Leikkaa 9 segmenttiä "segmentti 2" -mallista, joka on kiinnitetty puusta, jonka paksuus on 2 3/8 tuumaa (löytyy kohdasta 26). Käytin romua 2x4s kaupasta. Sovita segmentit kuivana ja varmista, että se sopii hyvin nauhakiinnittimellä. Jos kaikki on kunnossa, peitä ulkopinta maalarinteipillä, jotta liima ei tartu kiinni, ja anna kuivua vähintään tunnin ajan ennen kuin siirryt seuraavaan vaiheeseen.

Vaihe 15: Segmentti 3

Segmentti 3
Segmentti 3
Segmentti 3
Segmentti 3
Segmentti 3
Segmentti 3

Leikkaa 9 segmenttiä "Segmentti 3" -mallista, joka on kiinnitetty 3/8 tuuman paksuisesta raakapuusta (löydetty vaiheessa 26). Liimaa ne siten, että segmentin 2 saumat ovat kunkin segmentin 3 keskellä. Tämä vahvistaa rengasta.

Vaihe 16: Tasainen rengas ja maali

Sileä rengas ja maali
Sileä rengas ja maali
Sileä rengas ja maali
Sileä rengas ja maali

Tein mittatilaustyönä hiomalaikan suuren renkaan katkaistusta kappaleesta. Hio renkaan sisä- ja ulkopuoli ja täytä mahdolliset halkeamat liimausprosessin aikana.

Kun se on sileä, levitä muutama kerros mustaa maalia ja kirkas maali.

Vaihe 17: Leikkaa akryyli

Leikkaa akryyli
Leikkaa akryyli
Leikkaa akryyli
Leikkaa akryyli
Leikkaa akryyli
Leikkaa akryyli
Leikkaa akryyli
Leikkaa akryyli

Leikkaa akryyli neliöksi, jonka koko on 30 x 30 tuumaa, ja merkitse keskikohta. Kiinnitä akryyli kaksipuolisella teipillä. Poista ylimääräinen akryyli huuhteluleikkureilla

Vaihe 18: Levitä ikkunan sävy

Käytä ikkunan sävyä
Käytä ikkunan sävyä
Käytä ikkunan sävyä
Käytä ikkunan sävyä
Käytä ikkunan sävyä
Käytä ikkunan sävyä

Poista pölyttömässä ympäristössä suojakalvo akryylistä. Levitä suihketta ja poista tausta ikkunan sävystä. Levitä ikkunan sävy tahmea puoli alaspäin. Purista vetolastalla tai luottokortilla kaikki neste ikkunan sävyn alta. Kun kaikki kuplat ja rypyt on poistettu, leikkaa ylimääräinen ikkunan sävy terävällä veitsellä.

Vaihe 19: Kiinnitä Defuser

Kiinnitä Defuser
Kiinnitä Defuser
Kiinnitä Defuser
Kiinnitä Defuser

Käytin suurta lihakauppapaperia toimimaan lianpoistajana. Aseta paperi tasaiselle alustalle. Peitä rungon pinta liimalla liimapuikosta. Ennen kuin liima kuivuu, aseta kellon etupuoli paperille ja leikkaa ylimääräinen karkeaksi. Kun olet kuivunut, käytä huuhtelua terävällä veitsellä.

Vaihe 20: Levitä eristys

Levitä eristys
Levitä eristys

Käytin sähköteippiä pitämään virta- ja tietolinjat erillään.

Vaihe 21: Kokoa

Koota
Koota
Koota
Koota
Koota
Koota

Poista toinen suojakerros akryylistä. Aseta akryyli renkaan sisään ikkunan sävypuoli ylöspäin. Liu'uta kellon loppuosa renkaaseen. Käytä puristinta kevyen paineen kohdistamiseen, kun renkaan läpi porataan reikä LED -korttiin. Tämän pitäisi olla noin 1 1/8 tuumaa takaa. Varo porautumasta LED -valoon. Ruuvaa ristikon pääruuvi reikään. Toista yhteensä kahdeksan ruuvia kellon ympäri.

Vaihe 22: Kiinnitä ankkuripisteet

Kiinnitä ankkuripisteet
Kiinnitä ankkuripisteet

Liima -ankkuri osoittaa kellon takaosaan takakannen kiinnittämistä varten. Nämä ovat 3/4 tuumaa paksuja ja noin 2 tuumaa pitkiä.

Vaihe 23: Porausteho ja LDR -anturin reiät

Porausteho ja LDR -anturin reiät
Porausteho ja LDR -anturin reiät

Poraa virta -aukko kellon pohjan läpi virtapistokkeelle ja reikä yläosaan valosta riippuvaa vastusta (LDR) varten.

Vaihe 24: Asenna elektroniikan pidike

Asenna elektroniikan pidike
Asenna elektroniikan pidike
Asenna elektroniikan pidike
Asenna elektroniikan pidike

Asenna 3D -tulostettu pidike RTC: lle ja Arduino Nanolle. Liitä kaikki elektroniikka kaavion mukaisesti.

Vaihe 25: Takakansi

Takakansi
Takakansi
Takakansi
Takakansi
Takakansi
Takakansi
Takakansi
Takakansi

Leikkaa takakansi ohuesta vanerista, joka on pienempi kuin kellon ulkopuoli. Poraa reiät kiinnityspisteisiin. Etsi selän keskikohta ja mittaa 8 tuumaa kumpaankin suuntaan avaimenreikien leikkaamiseksi (vakio 16 Yhdysvaltojen nastojen keskuksissa). Porasin pääreiän juuri suuremmaksi kuin ruuvien pää, jota aion käyttää, ja viilasin reiän suurempana yhteen suuntaan. Maalaa mustaksi ja kiinnitä kansi paikalleen.

Vaihe 26: Koodi ja tiedostot

Olen jälleen melko monien täällä käytettyjen Arduinon kirjastojen käytössä, joten olen varma, että on olemassa parempia tapoja käyttää niitä.

Kirjoitin koodin helposti päivitettäväksi sen perusteella, kuinka monta LEDiä käytät, jos projektia skaalataan ylös tai alas. Sinun tarvitsee vain päivittää LED -aloitus- ja loppukohdat sekä se, kuinka monta LEDiä on kussakin numerossa.

Olen lisännyt muutamia animaatioita, jotka toistuvat käynnistyksen yhteydessä ja tunnin aikana. Ne ovat sudo -satunnaisia sen satunnaislukugeneraattorin perusteella.

Voit asettaa kellon selaamaan värejä tai pysymään muuttumattomana. Voit jopa korostaa indikaattorin numeron lukuajan helpottamiseksi, kuten johdannossa näytetään.

Voit vapaasti muokata ja muuttaa koodia haluamallasi tavalla.

#include "RTClib.h"

#include #define NUM_LEDS 96 #define DATA_PIN 3 #define LDR A0 RTC_DS1307 rtc; boolean timeChange = epätosi; boolean printTime = false; // Aseta arvoksi true, jos haluat nähdä tulostuksen konsolissa. Hyödyllinen virheenkorjaukseen. boolean redDown = totta; boolean greenDown = epätosi; boolean blueDown = epätosi; boolean -sykli = epätosi; // Aseta tosi, jos haluat kellon värien kiertävän boolean korostuksen = true; // Aseta tosi korostamaan viimeinen numero. // Kunkin aikaryhmän alun ja lopun sijainnit int SECOND_1_LOCATION = 0; const int HOUR_2_START_LOCATION = 1; const int HOUR_2_END_LOCATION = 8; const int HOUR_1_START_LOCATION = 9; const int HOUR_1_END_LOCATION = 20; const int MINUTE_2_START_LOCATION = 21; const int MINUTE_2_END_LOCATION = 42; const int MINUTE_1_START_LOCATION = 43; const int MINUTE_1_END_LOCATION = 66; const int SECOND_2_START_LOCATION = 67; const int SECOND_2_END_LOCATION = 95; const int LEDS_PER_HOUR_1 = 3; const int LEDS_PER_HOUR_2 = 2; const int LEDS_PER_MINUTE_1 = 6; const int LEDS_PER_MINUTE_2 = 2; // Kertoimet, joita käytetään aikarajan jakamiseen int MULTIPLIER_FIVE = 5; const int MULTIPLIER_TWO = 2; const int START_UP_DELAY = 1; // Muuta tätä nopeuttaaksesi tai hidastaaksesi käynnistysanimaatiota const int CYCLE_SPEED = 1; // Muuta värinvaihtosyklin nopeutta tässä (täytyy olla yli 1) // Ilmoita muuttujat int lastSecond = 0; int currentHour = 0; int currentMinute = 0; int currentSecond = 0; int tunti1 = 0; int tunti2 = 0; int minuutti1 = 0; int minuutti2 = 0; int sekunti1 = 0; int sekunti2 = 0; int cycleCount = 1; float fadeValue = 255; float fadeCheck = 255; uint8_t kirkas = 255; int numberOfAnimations = 5; int satunnaisuus = 0; // Aseta värit uint8_t red = 0; uint8_t vihreä = 0; uint8_t sininen = 255; uint8_t highlight_red = 60; uint8_t highlight_green = 60; uint8_t highlight_blue = 255; // Määritä ledien ryhmä CRGB -ledit [NUM_LEDS]; void setup () {Serial.begin (19200); FastLED.addLeds (ledit, NUM_LEDS); LEDS.setBrightness (kirkas); FastLED.clear (); rtc.begin (); // Aseta aika poistamalla kommenttirivi alla. // rtc.adjust (DateTime (2020, 2, 19, 23, 59, 50)); // rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Käynnistysanimaatio animate (satunnaisuus); } void loop () {// Hanki aika DateTime now = rtc.now (); currentHour = now.hour (); currentMinute = now.minute (); currentSecond = nyt.second (); timeChange = epätosi; // Näiden avulla voit asettaa ajan manuaalisesti ilman RTC: tä. Hyödyllinen virheenkorjauksessa // currentHour = 5; // currentMinute = 30; // currentSecond = 30; // Palauta kaikki bitit nollaksi kohteelle (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB:: Black; } // Aseta tunti // Aseta tunti 1 tunti1 = (currentHour % MULTIPLIER_FIVE) * LEDS_PER_HOUR_1; // Tämä laskee aikayksikön syttyvät LED -valot yhteensä (int i = HOUR_1_START_LOCATION; i 0) // && hour1 <12) {for (int i = (HOUR_1_START_LOCATION + hour1-1); i> = (HOUR_1_START_LOCATION + tunti1-LEDS_PER_HOUR_1); i--) {ledit = CRGB (kohokohta_punainen, korostuksen_vihreä, korostuksen_sininen); }} // Aseta tunti 2 tunti2 = (currentHour / MULTIPLIER_FIVE) * LEDS_PER_HOUR_2; // Tämä laskee aikayksikön syttyvät LED -valot yhteensä (int i = HOUR_2_START_LOCATION; i 0) // && hour2 <8) {for (int i = (HOUR_2_START_LOCATION + hour2-1); i> = (HOUR_2_START_LOCATION + tunti2-LEDS_PER_HOUR_2); i--) {leds = CRGB (korosta_punainen, korosta_vihreä, korosta_sininen); }} // Aseta minuutti // Aseta minuutti 1 minuutti1 = (currentMinute % MULTIPLIER_FIVE) * LEDS_PER_MINUTE_1; // Tämä laskee aikayksikön syttyvät LED -valot yhteensä (int i = MINUTE_1_START_LOCATION; i 0) // && minute1 <24) {for (int i = (MINUTE_1_START_LOCATION + minute1 - 1); i> = (MINUTE_1_START_LOCATION + minuutti1-LEDS_PER_MINUTE_1); i--) {leds = CRGB (kohokohta_punainen, korostuksen_vihreä, korostuksen_sininen); }} // Aseta minuutti 2 minuutti2 = (currentMinute / MULTIPLIER_FIVE) * LEDS_PER_MINUTE_2; // Tämä laskee aikayksikön syttyvät LED -valot yhteensä (int i = MINUTE_2_START_LOCATION; i 0) // && minute2 <22) {for (int i = (MINUTE_2_START_LOCATION + minute2 - 1); i> = (MINUTE_2_START_LOCATION + minuutti2-LEDS_PER_MINUTE_2); i--) {leds = CRGB (kohokohta_punainen, korostuksen_vihreä, korostuksen_sininen); }} // Aseta toinen, jos (currentSecond! = LastSecond) {timeChange = true; } // Aseta toinen 1 sekunti1 = currentSecond % MULTIPLIER_TWO; jos (toinen1 == 1) {ledit [SECOND_1_LOCATION] = CRGB (punainen, vihreä, sininen); } // Aseta toinen 2 sekunti2 = currentSecond / MULTIPLIER_TWO; (int i = SECOND_2_START_LOCATION; i 0) // && second2 <29) {for (int i = (SECOND_2_START_LOCATION + second2 - 1); i> = (SECOND_2_START_LOCATION + second2-1); i--) {ledit = CRGB (korosta_punainen, korosta_vihreä, korosta_sininen); }} lastSecond = currentSecond; // Laske ohjelman jaksot ja kutsu setColor -toiminto muuttaaksesi LEDien väriä koskaan CYCLE_SPEED -sykliä. if (cycleCount kirkas) // {// fadeValue = kirkas; //} // muuten if (fadeValue <150) // {// fadeValue = 150; //} // LEDS.setBrightness (fadeValue); FastLED.show (); // Tulosta nykyinen aika konsolille, jos (timeChange == true && printTime == true) {printToConsole (); }} // Animaatiotoiminto lisää tähän animaatioita halutessasi void animate (int select) {if (select == 0) {for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (punainen, vihreä, sininen); FastLED.show (); viive (START_UP_DELAY); } for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {ledit = CRGB:: musta; FastLED.show (); viive (START_UP_DELAY); }} muu jos (valitse == 1) {for (int i = 0; i <250; i ++) {int light = random (95); ledit [valo] = CRGB (punainen, vihreä, sininen); FastLED.show (); }} else if (select == 2) {leds [0] = CRGB (punainen, vihreä, sininen); for (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {ledit [SECOND_2_START_LOCATION+i] = CRGB (punainen, vihreä, sininen); jos (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {johtaa [MINUTE_1_START_LOCATION + i] = CRGB (punainen, vihreä, sininen); } jos (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {johtaa [MINUTE_2_START_LOCATION + i] = CRGB (punainen, vihreä, sininen); } jos (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {johtaa [HOUR_1_START_LOCATION + i] = CRGB (punainen, vihreä, sininen); } jos (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {johtaa [HOUR_2_START_LOCATION + i] = CRGB (punainen, vihreä, sininen); } viive (34); FastLED.show (); }} else if (select == 3) {leds [0] = CRGB (punainen, vihreä, sininen); for (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {ledit [SECOND_2_END_LOCATION - i] = CRGB (punainen, vihreä, sininen); if (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {johtaa [MINUTE_1_END_LOCATION - i] = CRGB (punainen, vihreä, sininen); } jos (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {johtaa [MINUTE_2_END_LOCATION - i] = CRGB (punainen, vihreä, sininen); } jos (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {johtaa [HOUR_1_END_LOCATION - i] = CRGB (punainen, vihreä, sininen); } jos (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {johtaa [HOUR_2_END_LOCATION - i] = CRGB (punainen, vihreä,sininen); } viive (34); FastLED.show (); }} muuten jos (valitse == 4) {for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Black; } FastLED.show (); viive (200); for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {ledit = CRGB (punainen, vihreä, sininen); } FastLED.show (); viive (200); for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {ledit = CRGB:: musta; } FastLED.show (); viive (200); for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {ledit = CRGB (punainen, vihreä, sininen); } FastLED.show (); viive (200); for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {ledit = CRGB:: musta; } FastLED.show (); viive (200); }} // Värivaihtotoiminto void setColor (boolean cycleColors) {if (cycleColors == true) {if (redDown == true && greenDown == false) {red ++; vihreä--; jos (vihreä <= 0) {punainen = 255; redDown = epätosi; greenDown = totta; }} muu jos (vihreäDown == true && blueDown == false) {vihreä ++; sininen--; jos (sininen <= 0) {vihreä = 255; greenDown = epätosi; blueDown = totta; }} muu jos (blueDown == true && redDown == false) {blue ++; punainen--; jos (punainen <= 0) {sininen = 255; blueDown = epätosi; redDown = totta; }}} muu {punainen = 0; vihreä = 0; sininen = 255; }} // Tulosta sarjamonitoriin -toiminto void printToConsole () {Serial.print ("Nykyinen aika:"); Serial.print (currentHour); Serial.print (":"); Serial.print (currentMinute); Serial.print (":"); Serial.println (currentSecond); Serial.println (""); for (int i = HOUR_2_START_LOCATION; i <= HOUR_2_END_LOCATION; i ++) {Serial.print (leds ); jos (i % 2 == 0) {Serial.print (""); }} Serial.println (""); for (int i = HOUR_1_START_LOCATION; i <= HOUR_1_END_LOCATION; i ++) {Serial.print (ledit ); jos ((((i - HOUR_1_START_LOCATION + 1) % 3) == 0) {Serial.print (""); }} Serial.println (""); for (int i = MINUTE_2_START_LOCATION; i <= MINUTE_2_END_LOCATION; i ++) {Serial.print (ledit ); jos ((((i - MINUTE_2_START_LOCATION) + 1) % 2 == 0) {Serial.print (""); }} Serial.println (""); for (int i = MINUTE_1_START_LOCATION; i <= MINUTE_1_END_LOCATION; i ++) {Serial.print (ledit ); jos ((((i - MINUTE_1_START_LOCATION) + 1) % 6 == 0) {Serial.print (""); }} Serial.println (""); for (int i = SECOND_2_START_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {Serial.print (ledit ); Serial.print (""); } Sarja.println (""); Serial.println (ledit [SECOND_1_LOCATION]); Sarja.println (); for (int i = 0; i <NUM_LEDS; i ++) {Serial.print (ledit ); } Sarja.println (); Sarja.println (); }

Vaihe 27: Nauti

Kuva
Kuva

Yhteenvetona voidaan todeta, että tätä kelloa on ihana katsella, ja kun saat sen kiinni, se on suhteellisen helppo lukea. Jos teet oman kelloprojektisi, kerro siitä minulle!

Suositeltava: