Kryptinis sieninis laikrodis: 27 žingsniai (su nuotraukomis)
Kryptinis sieninis laikrodis: 27 žingsniai (su nuotraukomis)
Anonim
Kryptinis sieninis laikrodis
Kryptinis sieninis laikrodis

Laiko tėkmė yra tai, ko mes negalime kontroliuoti. Tai atsitinka tokiu pat greičiu, jei mes miegame, esame budrūs, nuobodūs ar susižadėję. Atsižvelgiant į dabartinius įvykius, svarbu prisiminti, kad laikas praeis. Kol laukiame, kol praeis laikas, kodėl gi nepadarius to, kas praeitį padarytų patrauklesnę žiūrėti.

Šį laikrodį įkvėpė Mengenlehreuhr, rastas Berlyne, Vokietijoje, ir jį galima skaityti taip pat. Kaip ir originalas, jis nurodo laiką apšviestais spalvotais laukais.

Jame yra 96 šviesos diodai, kurie apšviečia 52 „skaitmenų“sritis. Skirtingai nuo originalo, jis yra apskrito dizaino, kuriame yra sekundės žiedas, o ne horizontalus juostos išdėstymas. Išorinė juosta nurodo sekundes kartu su viduriniu tašku, kitos dvi juostos - minutes, o paskutinės vidinės juostos - valandas.

Jei turite šiek tiek medžiagos laužo ir papildomo laiko, kodėl gi nepanaudojus šio laiko tam, kad tai parodytumėte!

Yra keletas pakeitimų, kuriuos atlikčiau šiame projekte, jei vėl jį įgyvendinčiau. Pirmiausia rėmą ir LED plokštę dažyčiau balta, o ne juoda spalva. Tai atspindėtų daugiau šviesos per didelį priekyje esantį objektyvą. Aš taip pat laukiu iki galo, kol įdėsiu šviesos diodus. Man reikėjo, kad lenta būtų baigta anksčiau, kad ji padėtų man parašyti kodą. To nepadarę, pirmiausia išmokime ją skaityti!

Vaizdas
Vaizdas

1 žingsnis: kaip perskaityti laikrodį

Laikrodis skaitomas nuo vidinių apskritimų iki išorinių. Vidinis keturių laukų žiedas žymi po penkias visas valandas, o antrasis-taip pat keturis laukus, kurie žymi vieną pilną valandą, rodydami valandos vertę 24 valandų formatu. Trečiasis žiedas susideda iš vienuolikos laukų, kurie žymi penkias visas minutes, kitas žiedas turi dar keturis laukus, žyminčius vieną pilną minutę. Galiausiai išorinis 29 laukų žiedas žymi lygias sekundes, o centre esanti lemputė mirksi, kad būtų pažymėtos nelyginės (kai užsidega) arba lyginės (kai neužsidega) sekundės.

Vaizdas
Vaizdas

Pavyzdžiui, aukščiau pateiktame paveikslėlyje yra 1 iš penkių valandų skaitmenų, 3 iš vienos valandos skaitmenų, 8 iš penkių minučių skaitmenų, 4 iš vienos minutės skaitmenų ir 23 iš dviejų antrųjų skaitmenų ir vidurinis antrasis skaitmuo.

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

Vaizdas
Vaizdas

Aukščiau parodytas laikas yra: 3x5 + 0x1: 3x5 + 2x1: 5x2 + 1x1 = 15:17:11 = 15:17:11 PM

Vaizdas
Vaizdas

Aukščiau parodytas laikas yra: 3x5 + 2x1: 3x5 + 3x1: 16x2 + 1x1 = 17:18:33 = 5:18:33 PM

2 žingsnis: įrankiai ir medžiagos

Įrankiai ir medžiagos
Įrankiai ir medžiagos
Įrankiai ir medžiagos
Įrankiai ir medžiagos
Įrankiai ir medžiagos
Įrankiai ir medžiagos

Elektronikos medžiagos:

  • Arduino Nano
  • Realaus laiko laikrodis
  • Adresuojami šviesos diodai
  • Maitinimo kištukas
  • Maitinimo kabelis
  • USB maitinimo kištukas
  • Nuo šviesos priklausomas rezistorius ir subalansuotas rezistorius (jei norite, kad jis naktį pritemdytų)
  • Viela

Medienos apdirbimo medžiagos:

  • 3/4 colio Fanera
  • Plona fanera
  • Medžio laužas (naudojau 2x4, bet taip pat tiktų kietmedis)
  • Dažyti
  • 30 x 36 colių akrilo lakštas (rastas vietinėje namų tobulinimo parduotuvėje)
  • Langų atspalvis (pabandykite gauti šaltinį vietoje. Jei jo nėra, čia rasite pakankamai didelį lapą)
  • Langų atspalvių tepimo skystis (purškimo buteliuke naudojau vandenį, sumaišytą su kūdikių šampūnu)
  • Windex
  • Mėsininko popierius
  • Varžtai
  • Purškiamas klijai
  • Klijai
  • Pieštukiniai klijai

Įrankiai:

  • Valdovas
  • „Xacto“peilis
  • Juosta
  • Dvipusė juosta
  • Kompasas
  • Apskritimo pjovimo įrenginys
  • Jigsaw
  • Juostinis pjūklas
  • Veleno šlifuoklis
  • Palm Sander
  • Disko šlifuoklis
  • Maršrutizatoriaus lentelė
  • Awl
  • Gręžtuvai ir gręžtuvai/suktuvai
  • Spaustukai
  • Lituoklis
  • Lituoklis
  • Vielos nuėmikliai

3 žingsnis: Surinkite šablonus

Surinkite šablonus
Surinkite šablonus
Surinkite šablonus
Surinkite šablonus

Jei norite naudoti didelį šabloną, atsispausdinkite jį naudodami „Adobe Reader“plakato nustatymą. Nupjaukite kiekvieno popieriaus paraštes ir kartu priklijuokite. Vertikalios, horizontalios ir įstrižos linijos padės išlyginti šabloną. Visuose puslapiuose yra nedideli skaičiai, kad būtų lengviau juos tvarkyti, jei jie sutriks.

Visi reikalingi šablonai ir failai yra rasti 26 veiksme.

4 žingsnis: grubiai supjaustyti apskritimai

Grubiai supjaustyti apskritimai
Grubiai supjaustyti apskritimai
Grubiai supjaustyti apskritimai
Grubiai supjaustyti apskritimai

Išdėstę du šablonus ant 3/4 colio faneros lapo, kompasu nubrėžkite šiek tiek didesnius apskritimus, nei reikia. Naudodami dėlionę, iškirpkite šiurkščią formą.

5 žingsnis: supjaustykite pagal dydį

Supjaustykite pagal dydį
Supjaustykite pagal dydį
Supjaustykite pagal dydį
Supjaustykite pagal dydį

Naudodami apskritimo pjovimo antgalį ant juostinio pjūklo, supjaustykite apskritimus iki galutinio dydžio.

6 veiksmas: pritaikykite šabloną

Taikyti šabloną
Taikyti šabloną
Taikyti šabloną
Taikyti šabloną
Taikyti šabloną
Taikyti šabloną

Naudodami purškiamus klijus, kiekvieną šabloną uždėkite ant apskritimo. Įdėkite vinį į šablono centrą, kad jis būtų centre.

7 žingsnis: Iškirpkite šabloną

Iškirpti šabloną
Iškirpti šabloną
Iškirpti šabloną
Iškirpti šabloną
Iškirpti šabloną
Iškirpti šabloną

Naudodami dėlionę, iškirpkite kiekvieną atskirą šablono langą. Jei turite prieigą prie CNC, šis žingsnis būtų daug lengvesnis! Kiekviename lange išgręžiau skylę, kuri padėtų atlikti šį procesą. Kai pradėsite pjaustyti, šablonas gali pradėti nulupti. Jei taip atsitiks, galite jį pritvirtinti mažais juostos gabalėliais.

8 žingsnis: šlifavimas

Šlifavimas
Šlifavimas
Šlifavimas
Šlifavimas
Šlifavimas
Šlifavimas

Naudodami šlifavimo popierių, užteptą ant pagaliuko, šlifuoklio su špindeliu ir šlifuokliu, nušlifuokite ir išlyginkite šiurkštus pjūklo pjūvį.

9 veiksmas: gręžimo laikikliai šviesos diodams

Gręžimo laikikliai šviesos diodams
Gręžimo laikikliai šviesos diodams
Gręžimo laikikliai šviesos diodams
Gręžimo laikikliai šviesos diodams
Gręžimo laikikliai šviesos diodams
Gręžimo laikikliai šviesos diodams
Gręžimo laikikliai šviesos diodams
Gręžimo laikikliai šviesos diodams

Pažymėkite kiekvienos skylės centrą tėkšte ir išgręžkite šviesos diodų tarpelius. Aš naudoju vadovą, kuris padėjo grąžtą laikyti statmeną ruošiniui, ir atraminę lentą, kad neišpūstų medienos ant nugaros.

10 žingsnis: Sujunkite plokštes

Sujunkite lentas
Sujunkite lentas
Sujunkite lentas
Sujunkite lentas
Sujunkite lentas
Sujunkite lentas

Pakeiskite priekinę ir galinę plokštes ir atsekite rėmo dalis LED plokštės gale. Perkelkite rėmą atgal į LED plokštės priekį ir gręžkite skyles bei prisukite dalis.

Daugiau informacijos rasite vaizdo pastabose.

11 veiksmas: įdėkite šviesos diodus

Įdėkite šviesos diodus
Įdėkite šviesos diodus
Įdėkite šviesos diodus
Įdėkite šviesos diodus

Stumkite šviesos diodus per LED plokštės galą. Skylės turi būti išdėstytos tiek, kad jums nereikėtų perpjauti jokių laidų, išskyrus judėjimą iš vieno apskritimo į kitą.

Iš nugaros šviesos diodai prasideda centre, o tada veikia prieš laikrodžio rodyklę, tada iki kito žiedo.

12 veiksmas: pritvirtinkite 1 segmentą

Pridėti 1 segmentą
Pridėti 1 segmentą
Pridėti 1 segmentą
Pridėti 1 segmentą
Pridėti 1 segmentą
Pridėti 1 segmentą

Iškirpkite 9 segmentus iš šablono „1 segmentas“, pritvirtinto prie 3/4 colio faneros (rasta 26 veiksme). Pritvirtinkite prie LED plokštės klijais ir spaustukais. Jei esate nekantrus, taip pat galite jį pritvirtinti nagais.

Išdžiūvus, šlifuokite kraštą lygiu šlifuokliu.

13 žingsnis: dažymas

Dažyti
Dažyti
Dažyti
Dažyti
Dažyti
Dažyti
Dažyti
Dažyti

Purškite dažus tiek LED plokštę, tiek rėmą. Jei tai daryčiau dar kartą, būčiau pasirinkusi naudoti baltus, o ne juodus dažus, nes jie labiau atspindėtų per objektyvą.

14 žingsnis: 2 segmentas

2 segmentas
2 segmentas
2 segmentas
2 segmentas
2 segmentas
2 segmentas

Iškirpkite 9 segmentus iš 2 segmento šablono, pritvirtinto iš 2 3/8 colio storio medienos (rasta 26 veiksme). Aš naudoju kai kuriuos laužo gabalus 2x4 iš parduotuvės. Sausai pritvirtinkite segmentus ir įsitikinkite, kad jie gerai priglunda prie juostos spaustuko. Jei viskas patikrinta, uždenkite išorę dažytojų juostele, kad klijai neliptų, ir leiskite išdžiūti mažiausiai valandą prieš pereinant prie kito žingsnio.

15 žingsnis: 3 segmentas

3 segmentas
3 segmentas
3 segmentas
3 segmentas
3 segmentas
3 segmentas

Iškirpkite 9 segmentus iš šablono „3 segmentas“, pritvirtinto iš 3/8 colio storio skalda (rasta 26 veiksme). Klijuokite juos taip, kad 2 segmento siūlės būtų kiekvieno 3 segmento viduryje. Tai sustiprins žiedą.

16 žingsnis: lygus žiedas ir dažai

Lygus žiedas ir dažai
Lygus žiedas ir dažai
Lygus žiedas ir dažai
Lygus žiedas ir dažai

Aš padariau specialų šlifavimo bloką iš nupjauto didžiojo žiedo gabalo. Šlifuokite žiedo vidų ir išorę ir užpildykite visus įtrūkimus, kurie galėjo atsirasti klijavimo proceso metu.

Kai jis bus lygus, užtepkite kelis juodų dažų sluoksnius ir skaidrų sluoksnį.

17 žingsnis: supjaustykite akrilą

Iškirpti akrilą
Iškirpti akrilą
Iškirpti akrilą
Iškirpti akrilą
Iškirpti akrilą
Iškirpti akrilą
Iškirpti akrilą
Iškirpti akrilą

Iškirpkite akrilą į 30 x 30 colių kvadratą ir pažymėkite centrą. Pritvirtinkite akrilą dvipuse juosta. Naudodami praplaunamą apdailos frezą, pašalinkite akrilo perteklių

18 veiksmas: pritaikykite lango atspalvį

Taikyti langų atspalvį
Taikyti langų atspalvį
Taikyti langų atspalvį
Taikyti langų atspalvį
Taikyti langų atspalvį
Taikyti langų atspalvį

Aplinkoje, kurioje nėra dulkių, nuimkite apsauginę plėvelę nuo akrilo. Užtepkite purškiklį ir nuimkite pagrindą nuo lango atspalvio. Užtepkite lango atspalvį lipnia puse žemyn. Naudodami valytuvą ar kredito kortelę, išspauskite visą skystį iš po lango atspalvio. Pašalinus visus burbuliukus ir raukšles, aštriu peiliu nupjaukite perteklinį lango atspalvį.

19 veiksmas: pritvirtinkite „Defuser“

Pritvirtinkite „Defuser“
Pritvirtinkite „Defuser“
Pritvirtinkite „Defuser“
Pritvirtinkite „Defuser“

Aš panaudojau didelį mėsos popieriaus lapą, kad veikčiau kaip skiediklis. Padėkite popierių ant lygaus paviršiaus. Uždenkite rėmo veidą klijais iš klijų lazdelės. Kol klijai neišdžiūvo, laikrodžio priekinę dalį uždėkite ant popieriaus ir šiurkščiai nupjaukite perteklių. Išdžiovinus, nuplaukite skalavimą aštriu peiliu.

20 žingsnis: uždėkite izoliaciją

Taikyti izoliaciją
Taikyti izoliaciją

Aš naudoju elektros juostą, kad maitinimo ir duomenų linijos būtų atskirtos.

21 žingsnis: Surinkite

Surinkti
Surinkti
Surinkti
Surinkti
Surinkti
Surinkti

Nuimkite kitą apsauginį sluoksnį nuo akrilo. Įdėkite akrilą į žiedą lango atspalviu į viršų. Įstumkite likusią laikrodžio dalį į žiedą. Naudokite spaustuką, kad sumažintumėte slėgį, kol per žiedą ir į LED plokštę išgręžiama skylė. Tai turėtų būti maždaug 1 1/8 colio atstumu nuo nugaros. Būkite atsargūs, kad nesigilintumėte į šviesos diodą. Į skylę įsukite santvaros galvutės varžtą. Pakartokite iš viso aštuonis varžtus aplink laikrodžio perimetrą.

22 veiksmas: pritvirtinkite tvirtinimo taškus

Pridėkite tvirtinimo taškus
Pridėkite tvirtinimo taškus

Klijų inkaras nukreiptas į laikrodžio nugarėlę, prie kurios pritvirtinamas galinis dangtelis. Jie yra 3/4 colio storio ir apie 2 colių ilgio.

23 žingsnis: gręžimo galia ir LDR jutiklio angos

Gręžimo galios ir LDR jutiklių angos
Gręžimo galios ir LDR jutiklių angos

Per laikrodžio apačią išgręžkite maitinimo kištuko maitinimo angą, o viršuje - nuo šviesos priklausomo rezistoriaus (LDR) jutiklio skylę.

24 veiksmas: įdiekite elektronikos laikiklį

Įdiekite elektronikos laikiklį
Įdiekite elektronikos laikiklį
Įdiekite elektronikos laikiklį
Įdiekite elektronikos laikiklį

Įdiekite 3D spausdintą laikiklį RTC ir „Arduino Nano“. Prijunkite visą elektroniką, kaip parodyta schemoje.

25 žingsnis: galinis dangtelis

Galinis viršelis
Galinis viršelis
Galinis viršelis
Galinis viršelis
Galinis viršelis
Galinis viršelis
Galinis viršelis
Galinis viršelis

Nupjaukite galinį dangtelį iš plonos faneros, tik mažesnės nei laikrodžio išorė. Gręžkite skyles į tvirtinimo taškus. Raskite nugaros centrą ir išmatuokite 8 colius bet kuria kryptimi, kad iškirptumėte raktų skyles (standartinis 16 smeigių centruose JAV). Aš išgręžiau pagrindinę skylę, didesnę nei varžtų galvutė, kurią ketinu naudoti, ir padengiau skylę viena kryptimi. Dažykite juodai ir uždėkite dangtelį.

26 žingsnis: kodas ir failai

Vėlgi, aš esu gana naujas, kai naudojuosi daugeliu čia naudojamų „Arduino“bibliotekų, todėl esu tikras, kad yra geresnių būdų jas naudoti.

Parašiau kodą, kad jį būtų galima lengvai atnaujinti, atsižvelgiant į tai, kiek šviesos diodų naudojate, jei projektas padidinamas arba sumažinamas. Viskas, ką jums reikia padaryti, tai atnaujinti šviesos diodų pradžios ir pabaigos pozicijas bei kiek šviesos diodų yra kiekvieno skaitmens dalis.

Pridėjau keletą animacijų, kurios paleidžiamos paleidžiant ir valandą. Jie yra sudo atsitiktiniai, remiantis atsitiktinių skaičių generatoriumi.

Galite nustatyti laikrodį, kad jis perjungtų spalvas arba liktų nejudantis. Jūs netgi galite paryškinti indikatoriaus skaitmenį, kad būtų lengviau perskaityti laiką, kaip parodyta įžangoje.

Nesivaržykite redaguoti ir keisti kodą, kaip norite.

#include "RTClib.h"

#include #define NUM_LEDS 96 #define DATA_PIN 3 #define LDR A0 RTC_DS1307 rtc; loginis laikasChange = false; loginis printTime = false; // Nustatykite į true, jei norite matyti išvestį konsolėje. Naudinga derinant. boolean redDown = tiesa; loginė žaliaDown = false; loginis mėlynasDown = false; loginis ciklas = false; // Nustatykite true, jei norite, kad laikrodžio spalvos pakeistų loginį paryškinimą = true; // Nustatykite „true“, kad paryškintumėte „paskutinį skaitmenį“. // Kiekvienos laiko konstravimo grupės pradžios ir pabaigos vietos 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; // Daugikliai, naudojami laiko konstracijai padalyti int MULTIPLIER_FIVE = 5; const int MULTIPLIER_TWO = 2; const int START_UP_DELAY = 1; // Pakeiskite tai, kad pagreitintumėte arba sulėtintumėte paleidimo animaciją const int CYCLE_SPEED = 1; // Čia pakeiskite spalvų keitimo ciklo greitį (turi būti didesnis nei 1) // Deklaruoti kintamuosius int lastSecond = 0; int currentHour = 0; int currentMinute = 0; int currentSecond = 0; int valanda1 = 0; int valanda2 = 0; int minute1 = 0; int minute2 = 0; int antras1 = 0; int antras2 = 0; int cycleCount = 1; float fadeValue = 255; float fadeCheck = 255; uint8_t ryškus = 255; int numberOfAnimations = 5; int atsitiktinumas = 0; // Nustatyti spalvas uint8_t red = 0; uint8_t žalia = 0; uint8_t mėlyna = 255; uint8_t highlight_red = 60; uint8_t highlight_green = 60; uint8_t highlight_blue = 255; // Apibrėžkite šviesos diodų masyvą CRGB šviesos diodai [NUM_LEDS]; void setup () {Serial.begin (19200); FastLED.addLeds (šviesos diodai, NUM_LEDS); LEDS.setBrightness (ryškus); FastLED.clear (); rtc.begin (); // Atminkite eilutę žemiau, kad nustatytumėte laiką. // rtc.adjust (DateTime (2020, 2, 19, 23, 59, 50)); // rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Paleidimo animacija animate (atsitiktinumas); } void loop () {// Gauti laiką DateTime now = rtc.now (); currentHour = dabar.valanda (); currentMinute = dabar.minutė (); currentSecond = dabar.sekundė (); timeChange = klaidinga; // Naudokite juos norėdami rankiniu būdu nustatyti laiką be RTC. Naudinga derinant // currentHour = 5; // currentMinute = 30; // currentSecond = 30; // Iš naujo nustatyti visus bitus į nulį (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB:: Black; } // Nustatyti valandą // Nustatyti valandą 1 valandą1 = (currentHour % MULTIPLIER_FIVE) * LEDS_PER_HOUR_1; // Tai skaičiuos visus laiko vieneto šviesos diodus, kurie užsidegs (int i = HOUR_1_START_LOCATION; i 0) // && hour1 <12) {už (int i = (HOUR_1_START_LOCATION + valanda 1 - 1); i> = (HOUR_1_START_LOCATION + valanda1-LEDS_PER_HOUR_1); i--) {leds = CRGB (paryškinti_raudonai, paryškinti_žali, paryškinti_melsvi); }} // Nustatyti valandą 2 valandą2 = (dabartinė valanda / MULTIPLIER_FIVE) * LEDS_PER_HOUR_2; // Tai skaičiuos visus laiko vieneto šviesos diodus, kurie užsidegs (int i = HOUR_2_START_LOCATION; i 0) // && hour2 <8) {už (int i = (HOUR_2_START_LOCATION + valanda 2 - 1); i> = (HOUR_2_START_LOCATION + valanda2-LEDS_PER_HOUR_2); i--) {leds = CRGB (paryškinti_raudonai, paryškinti_žali, paryškinti_melsvai); }} // Nustatyti minutę // Nustatyti minutę 1 minutę1 = (currentMinute % MULTIPLIER_FIVE) * LEDS_PER_MINUTE_1; // Tai skaičiuos visus laiko vieneto šviesos diodus, kurie užsidegs (int i = MINUTE_1_START_LOCATION; i 0) // && minute1 <24) {už (int i = (MINUTE_1_START_LOCATION + minute1 - 1); i> = (MINUTE_1_START_LOCATION + minutė1-LEDS_PER_MINUTE_1); i--) {leds = CRGB (paryškinti_raudonai, paryškinti_žali, paryškinti_melsvi); }} // Nustatyti minutę 2 minutė2 = (currentMinute / MULTIPLIER_FIVE) * LEDS_PER_MINUTE_2; // Tai skaičiuos visus laiko vieneto šviesos diodus, kurie užsidegs (int i = MINUTE_2_START_LOCATION; i 0) // && minute2 <22) {už (int i = (MINUTE_2_START_LOCATION + minute2 - 1); i> = (MINUTE_2_START_LOCATION + minutė2-LEDS_PER_MINUTE_2); i--) {leds = CRGB (paryškinti_raudonai, paryškinti_žali, paryškinti_melsvi); }} // Nustatykite antrąjį if (currentSecond! = LastSecond) {timeChange = true; } // Nustatyti antrąją 1 sekundę1 = dabartinėAntra % MULTIPLIER_TWO; if (second1 == 1) {leds [SECOND_1_LOCATION] = CRGB (raudona, žalia, mėlyna); } // Nustatyti antrą 2 sekundę2 = 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--) {leds = CRGB (paryškinti_raudonai, paryškinti_žali, paryškinti_melsvai); }} lastSecond = currentSecond; // Skaičiuokite programos ciklus ir iškvieskite funkciją setColor, kad pakeistumėte šviesos diodų spalvą kada nors CYCLE_SPEED ciklai. if (cycleCount šviesus) // {// fadeValue = ryškus; //} // else if (fadeValue <150) // {// fadeValue = 150; //} // LEDS.setBrightness (fadeValue); FastLED.show (); // Spausdinti dabartinį laiką konsolėje, jei (timeChange == true && printTime == true) {printToConsole (); }} // Animacijos funkcija pridėkite čia daugiau animacijų, kaip norite void animate (int select) {if (select == 0) {for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (raudona, žalia, mėlyna); FastLED.show (); vėlavimas (START_UP_DELAY); } for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Black; FastLED.show (); vėlavimas (START_UP_DELAY); }} else if (select == 1) {for (int i = 0; i <250; i ++) {int light = random (95); šviesos diodai [šviesa] = CRGB (raudona, žalia, mėlyna); FastLED.show (); }} else if (pasirinkite == 2) {leds [0] = CRGB (raudona, žalia, mėlyna); už (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {leds [SECOND_2_START_LOCATION+i] = CRGB (raudona, žalia, mėlyna); if (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {rodo [MINUTE_1_START_LOCATION + i] = CRGB (raudona, žalia, mėlyna); } jei (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {pirmauja [MINUTE_2_START_LOCATION + i] = CRGB (raudona, žalia, mėlyna); } jei (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {rodo [HOUR_1_START_LOCATION + i] = CRGB (raudona, žalia, mėlyna); } if (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {rodo [HOUR_2_START_LOCATION + i] = CRGB (raudona, žalia, mėlyna); } uždelsimas (34); FastLED.show (); }} else if (pasirinkite == 3) {leds [0] = CRGB (raudona, žalia, mėlyna); už (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {šviesos diodai [SECOND_2_END_LOCATION - i] = CRGB (raudona, žalia, mėlyna); if (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {pirmauja [MINUTE_1_END_LOCATION - i] = CRGB (raudona, žalia, mėlyna); } jei (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {pirmauja [MINUTE_2_END_LOCATION - i] = CRGB (raudona, žalia, mėlyna); } if (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {rodo [HOUR_1_END_LOCATION - i] = CRGB (raudona, žalia, mėlyna); } jei (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {rodo [HOUR_2_END_LOCATION - i] = CRGB (raudona, žalia,mėlyna); } uždelsimas (34); FastLED.show (); }} else if (pasirinkite == 4) {for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Black; } FastLED.show (); vėlavimas (200); už (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (raudona, žalia, mėlyna); } FastLED.show (); vėlavimas (200); (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Juoda; } FastLED.show (); vėlavimas (200); už (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (raudona, žalia, mėlyna); } FastLED.show (); vėlavimas (200); (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Juoda; } FastLED.show (); vėlavimas (200); }} // Spalvų ciklo funkcija void setColor (boolean cycleColors) {if (cycleColors == true) {if (redDown == true && greenDown == false) {red ++; žalias--; jei (žalia <= 0) {raudona = 255; redDown = klaidinga; žaliaDown = tiesa; }} else if (žaliaDown == tiesa && blueDown == klaidinga) {žalia ++; mėlyna-; jei (mėlyna <= 0) {žalia = 255; žaliaDown = klaidinga; blueDown = tiesa; }} else if (blueDown == true && redDown == false) {blue ++; raudona-; jei (raudona <= 0) {mėlyna = 255; mėlynaDown = klaidinga; redDown = tiesa; }}} else {red = 0; žalia = 0; mėlyna = 255; }} // Spausdinti į serijinio monitoriaus funkciją void printToConsole () {Serial.print ("Dabartinis laikas:"); Serial.print (currentHour); Serial.print (":"); Serial.print (currentMinute); Serial.print (":"); Serial.println (currentSecond); Serial.println (""); už (int i = HOUR_2_START_LOCATION; i <= HOUR_2_END_LOCATION; i ++) {Serial.print (šviesos diodai ); if (i % 2 == 0) {Serial.print (""); }} Serial.println (""); už (int i = HOUR_1_START_LOCATION; i <= HOUR_1_END_LOCATION; i ++) {Serial.print (šviesos diodai ); if ((((i - HOUR_1_START_LOCATION + 1) % 3) == 0) {Serial.print (""); }} Serial.println (""); (int i = MINUTE_2_START_LOCATION; i <= MINUTE_2_END_LOCATION; i ++) {Serial.print (šviesos diodai ); if ((((i - MINUTE_2_START_LOCATION) + 1) % 2 == 0) {Serial.print (""); }} Serial.println (""); (int i = MINUTE_1_START_LOCATION; i <= MINUTE_1_END_LOCATION; i ++) {Serial.print (šviesos diodai ); if ((((i - MINUTE_1_START_LOCATION) + 1) % 6 == 0) {Serial.print (""); }} Serial.println (""); (int i = SECOND_2_START_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {Serial.print (šviesos diodai ); Serial.print (""); } Serial.println (""); Serial.println (šviesos diodai [SECOND_1_LOCATION]); Serial.println (); for (int i = 0; i <NUM_LEDS; i ++) {Serial.print (leds ); } Serial.println (); Serial.println (); }

27 žingsnis: Mėgaukitės

Vaizdas
Vaizdas

Apibendrinant galima pasakyti, kad šį laikrodį yra nuostabu žiūrėti, o kai jį įsisavinsi, jį palyginti lengva perskaityti. Jei kuriate savo laikrodžio projektą, praneškite man!

Rekomenduojamas: