Turinys:

Vaivorykštinis žodžių laikrodis su visu vaivorykštės efektu ir dar daugiau: 13 žingsnių (su nuotraukomis)
Vaivorykštinis žodžių laikrodis su visu vaivorykštės efektu ir dar daugiau: 13 žingsnių (su nuotraukomis)

Video: Vaivorykštinis žodžių laikrodis su visu vaivorykštės efektu ir dar daugiau: 13 žingsnių (su nuotraukomis)

Video: Vaivorykštinis žodžių laikrodis su visu vaivorykštės efektu ir dar daugiau: 13 žingsnių (su nuotraukomis)
Video: Мальвы цветут_Рассказ_Слушать 2024, Liepa
Anonim
Vaivorykštinis žodžių laikrodis su visu vaivorykštės efektu ir dar daugiau
Vaivorykštinis žodžių laikrodis su visu vaivorykštės efektu ir dar daugiau

Tikslai

1) Paprasta

2) nėra brangus

3) Kiek įmanoma taupiau naudoti energiją

Vaivorykštinis žodinis laikrodis su visišku vaivorykštės efektu.

Šypsenėlė ant žodžio laikrodžio.

Paprastas IR nuotolinio valdymo pultas

Atnaujinkite 03-nov-18 LDR, skirtą neopikselių ryškumo kontrolei

Atnaujinimas 01-sausio 19 WS2812B energijos suvartojimo mažinimas.

Atnaujinta sausio 15-osios šypsenėlė.

Atnaujinimas sausio 23 d. Kodas 1.6

Atnaujinkite 10-kovo-19 bibliotekų nuorodas

Atnaujinti 14-balandžio 19 versiją 1.7 Pasirinkti šypsenėlių įjungimo/išjungimo vaivorykštės/taisymo fermentą.

Paskutinis atnaujinimas 01-jun-19 versija 2.0 IR nuotolinio valdymo pultas ir kodo pertvarkymas

1 žingsnis: laikrodžio dėklas

Laikrodžio dėklas
Laikrodžio dėklas
Laikrodžio dėklas
Laikrodžio dėklas
Laikrodžio dėklas
Laikrodžio dėklas

Naudojant keletą paprastų įrankių ir šiek tiek įgūdžių, nėra sunku padaryti raidžių laikrodį. Aš naudojau man prieinamas medžiagas.

Korpusui naudojau šiurkščią pušies juostą, kurioje pjoviau kelis rėmus. Taip būtų padarytos keturios korpuso pusės, kurios buvo suklijuotos ir sutvirtintos nedideliu medžio gabalu kampuose. Tada medieną reikia šlifuoti ir dažyti.

Raidės iš folijos iškirptos spausdintuvu veidrodiniu raštu. Folija yra stiklo plokštės gale ir yra padengta dvigubo sluoksnio rašto popieriumi, kad būtų geriau paskirstytas šviesa. Stiklas tvirtinamas silikoniniu sandarikliu.

2 žingsnis: Neopikseliai

Neopikseliai
Neopikseliai
Neopikseliai
Neopikseliai
Neopikseliai
Neopikseliai
Neopikseliai
Neopikseliai

Neopikselių šviesos diodai išdėstyti ant medinės plokštės. Pirmiausia išgręžkite 3 mm skyles. Priekyje jie padidinami iki raidės dydžio iki 3/4 gylio. Po to 3 mm gale padidinamas iki 10 mm, tai yra neopikselio dydis. Kai kuriems simboliams, be kita ko, W, skylė turėtų būti šiek tiek pakoreguota.

Aš naudojau fanerą, kuri greitai suskilinėjo, MDF gali būti geresnis.

Naudodami atskirus šviesos diodus, jūs neprisirišate prie fiksuoto atstumo, o tai yra su LED juostelėmis. Šviesos diodai turi būti sujungti vienas su kitu. Tai galite padaryti su visais trumpais vielos gabalais. Tačiau dvi min. (-) jungtys yra tokios pačios kaip dvi pliusinės (+) jungtys, sujungtos iš vidaus, taigi tas pats ryšys.

Galite sutaupyti daug darbo, lituodami vielos gabalėlį prie kairiojo ir tada prie dešiniojo šviesos diodo. Tada lituokite tarpinius.

Duomenų ryšys, žinoma, turi būti sudarytas iš trumpų dalių, nes duomenų išvestis patenka į duomenų įvestį.

3 žingsnis: priekinio teksto reguliavimas

Priekinio teksto reguliavimas
Priekinio teksto reguliavimas
Priekinio teksto reguliavimas
Priekinio teksto reguliavimas
Priekinio teksto reguliavimas
Priekinio teksto reguliavimas

Priekinė plokštė dabar yra olandų kalba, bet tiesiog konvertuojama į bet kurią kalbą.

„NeoPixels“šviesos diodai čia keičiami iš eilės nuo 0 iki 167. Numeravimas eina iš pirmosios eilutės viršuje kairėje į dešinę, o paskui į antrą eilutę iš dešinės į kairę ir tt. Reguliavimą galima atlikti pagal savo poreikius. „NeoPikselių“skaičių lemia simbolių skaičius. Mažiau ar daugiau neopikselių galima koreguoti šioje eilutėje

#define NUMPIXELS 168 // Kiek „NeoPixels“pridedama prie „Arduino“?

168 yra kitas skaičius. Numeravimas prasideda nuo 0. Galite sukurti bet kokį tekstą. Jei pakeisite tekstą, taip pat turėsite pakoreguoti atitinkamus žodžius. Numeracija išlieka ta pati.

Pavyzdžiui, protokole DRIE nustatomas kode

void zetmDrie () {

Led_Aan [56] = 1, Led_Aan [57] = 1, Led_Aan [58] = 1, Led_Aan [59] = 1; // min-sausas

}

Jei norite padaryti žodį „Arduino“, jis skamba taip:

void zetArduino () {

Led_Aan [38] = 1, Led_Aan [50] = 1, Led_Aan [56] = 1, Led_Aan [93] = 1;

Led_Aan [120] = 1, Led_Aan [135] = 1, Led_Aan [147] = 1; // Word-arduino

}

Taigi galite sudaryti žodžius tarp jų.

Laikrodžio žodžiams naudinga, jei jie sudaro gretimą žodį, tačiau tai nėra absoliučiai būtina. Nepanaudotoms raidėms nereikia neonpikselių. Aš juos visus užpildau, kad galėčiau pasinaudoti kitomis ateities galimybėmis, išskyrus rodomą laiką.

Jei pakeisite pradinį tašką arba paveldėjimo seką, numeracija turėtų atitinkamai pasikeisti.

4 žingsnis: pilnas vaivorykštės efektas

Pilnas vaivorykštės efektas
Pilnas vaivorykštės efektas

Laikrodis dabar yra taip užprogramuotas, kad skaičiuojama, kiek kartų per sekundę įjungta neopikselių.

Visas spektras yra maždaug padalintų ir šiek tiek pasislinkusių skaičius. Dėl to kiekvienas neopikselis turi skirtingą spalvą, kuri nuolat keičiasi. Neopikselis Nr. 1 ir Nr. 167 seka vienas kitą tam tikromis spalvomis.

Jei tuo pačiu metu norite mažiau skirtingų spalvų, tai lengva sureguliuoti. Spalva vis dar keičiasi visame spektre, tačiau su mažesne jos dalimi. Neopikseliai Nr. 1 ir Nr. 167 nebeseina vienas su kitu dėl tam tikrų spalvų.

Ryškumą galima nustatyti šioje eilutėje, pikseliai.setBrightness (150);

Mažesnis skaičius yra mažesnis, o didesnis - daugiau ryškumo.

5 žingsnis: įvairūs komponentai

Įvairūs komponentai
Įvairūs komponentai
Įvairūs komponentai
Įvairūs komponentai
Įvairūs komponentai
Įvairūs komponentai

Šiuos komponentus naudojau

Arduino Pro Mini ATMEGA328 5V/16MHz

Laikrodžio modulis DS3231

168 vienetų „Neopixels“LED WS2812 LED mikroschema ir radiatorius 5V 5050 RGB WS2811 IC Integruotas

Folijos raidžių trafaretas

DCF77 imtuvas

6 veiksmas: laikrodžio kodas

Čia yra kodas. Pridėtas ryškumo valdymas ir išjungimas, kai niekas nėra ir naktį.

Pridėtas RCWL-0516 radaro mikrobangų judesio jutiklis (ieškokite RADAR)

Po 10 minučių nejudėjimo „NeoPixels“užgęsta.

Apie 2.0 versiją

Atminties naudojimas buvo per didelis, kompiliatoriuje pritrūko įspėjimų. Štai kodėl aš visiškai pakeičiau kodą, tačiau operacija liko ta pati ir buvo pridėtas IR imtuvas.

Yra kodo dalis, skirta EEPROM pateikti duomenis. Paleiskite tai vieną kartą, laikinai pašalindami / * ir * /. Ieškokite => paleiskite tai vieną kartą, kad pateiktumėte EEPROM duomenis

Tuštumos kilpos pradžioje yra kodas, skirtas nuskaityti kodą iš savo nuotolinio valdymo pulto. Tai galite paleisti laikinai pašalindami / * ir * /, nepamirškite vėliau juos grąžinti. Taip pat galite nustatyti savo mygtukus. Perskaitytas kodas turi būti įvestas => Čia apibrėžkite savo mygtukus

„Samsung“nuotolinio valdymo pultas veikia geriau nei (labai pigus) paprastas.

7 veiksmas: aparatinės įrangos aprašymas

Aparatūros aprašymas
Aparatūros aprašymas
Aparatūros aprašymas
Aparatūros aprašymas
Aparatūros aprašymas
Aparatūros aprašymas

Yra įvairių „Arduino Pro Mini“versijų. Atminkite, kad jungtys gali skirtis.

Pridėtas RCWL-0516 mikrobangų judesio jutiklis.

Kol šalia laikrodžio juda, „NeoPixel“lieka įjungtas

ir kai tik nebejudama, „NeoPixel“po kelių minučių išsijungia.

2.0 versijoje DCF77 imtuvas maitinamas per kaištį 13. Šis kaištis yra apibrėžiamas kaip išėjimas ir nustatytas aukštas, kai sprendžiama DCF77 rutina. Imtuvas DCF77 naudoja 0,28 mA ir yra reikalingas tik kelias minutes per dieną.

Išjungimas taupo

5 voltai * 0,28 mA / 1000 * 24 valandos * 365 dienos * 1 / 0,85 efektyvumo maitinimo šaltinis = 14,4 vatai per metus.

Tai neatrodo daug, bet kiekviena dalis padeda.

8 veiksmas: LDR, skirtas neopikselių ryškumo kontrolei

LDR, skirtas neopikselių ryškumo kontrolei
LDR, skirtas neopikselių ryškumo kontrolei
LDR, skirtas neopikselių ryškumo kontrolei
LDR, skirtas neopikselių ryškumo kontrolei

Pridėtas LDR neopikselių ryškumo valdymui.

Aš priklijavau LDR į neopikselio 103. erdvę. Šis nenaudojamas laiko rodinyje ir todėl neturi įtakos reguliavimui. Popierius slopina krintančią šviesą, tačiau tai nėra problema.

LDR ir 20 kohm rezistoriaus įtampos daliklis eina į „Arduino Pro Mini“A0. Įtampa yra šviesos intensyvumo rodiklis, taigi ir šviesos kiekio, kurį turi suteikti neopikseliai, rodiklis.

Naudojama formulė leidžia man gerai valdyti šviesą, ją galima koreguoti atsižvelgiant į aplinkybes. Priklausomai nuo šviesos kiekio, įtampa gali svyruoti nuo 0 iki 5 voltų, o tai paverčiama 0–1024 skaičiais, kurie yra „LDRValue“.

Jei nauja išmatuota vertė yra didesnė už paskutinę apskaičiuotą vertę, intensyvumas padidinamas 1, jei ji yra mažesnė nei sumažinta 1 ir jei ji lygi, nieko nedaroma. Norint, kad vertė vyktų lėtai, kad nebūtų mirksėjimo efekto, padidėja arba sumažėja tik 1 ir kadangi skaičiavimas yra cikle, jis perskaičiuojamas tik 25 kartus perėjus ciklą.

Intensyvumas teoriškai yra ne mažesnis kaip 20 ir ne didesnis kaip 1024/7 + 45 = 191. (žr. pixels.setBrightness (150))

2.0 versijoje valdiklį galite nustatyti nuotolinio valdymo pultu. Pridėti šie parametrai: „Brightness_min“kaip minimalus ir „Brightness_max“kaip maksimalus nustatymas ir „Brightness_Offset“kaip nustatymo parametras. „Brightness_min“ir „_max“yra vertės, kurios gali priklausyti nuo jūsų situacijos. „Brightness_Offset“yra vertė, kurią galima nustatyti nuotolinio valdymo pultu ir kuria galima nustatyti daugiau ar mažiau ryškumą.

Tarp išmatuotos LDRV vertės ir apskaičiuotų BerLDRValue reikšmių taip pat yra 3 negyvos juostos.

Norėdami patikrinti ryškumo nustatymą, naudokite spausdinimo teiginius tuščioje „BrightnessControl“.

9 žingsnis: WS2812B energijos suvartojimo mažinimas

Sumažinti WS2812B energijos suvartojimą
Sumažinti WS2812B energijos suvartojimą

WS2812B adresuojamų neopikselių tvarkyklės traukia srovę net tada, kai neopikseliai yra išjungti, nustatyta į 0 spalvą (neužsidega jokie neopikselių elementai).

Kai visi 169 neopikseliai išeina, aš matau 69 mA neopikselius. Darant prielaidą, kad laikrodis yra išjungtas 12 valandų per dieną, visas išjungimas sutaupo: 5 (voltų maitinimo šaltinis) * 69/1000 (milijamperis / 1000 = amperų) * 12 (valandų skaičius per dieną) * 365 (dienų skaičius per metai) = 1511 vatų valandų. Taigi kasmet 1,5 Kwh. Sutinku, tai savaime nėra daug, bet daugelis mažų daro didelę.

Grandinė yra paprasta. Maitinimo šaltinio pliusą perjungia P kanalo „MosFet“. Radaro jutiklis nustato, ar neopikseliai yra įjungti, ar išjungti. Aš įdėjau du „MosFet“lygiagrečius, kad dėl „MosFets“praradimo būtų kuo mažesnis ON pasipriešinimas. Įprastai naudojant „MosFets“matuoju 4, 5 mili voltų. Vartai valdomi 4 išėjimu iš „Arduino“per 470 Kohm rezistorių. Jei išvestis skaitmeniniu būdu pasiekia žemą (0), neopikseliai yra įjungti, o aukštai (1) jie yra išjungti.

10 veiksmas: šypsenėlė ant „Word Clock“

Šypsenėlė ant žodžio laikrodžio
Šypsenėlė ant žodžio laikrodžio
Šypsenėlė ant žodžio laikrodžio
Šypsenėlė ant žodžio laikrodžio

Šypsenėlė ant žodžio laikrodžio.

Laikrodyje kartais pasirodo šypsenėlė. Tačiau tai daro jus laimingu.

„Smiley“suaktyvina radaro jutiklis. Judėjimo (reguliuojamo) kartų skaičius yra „Smiley“išvaizdos matas. % Ženklai rodo, kad buvo aptiktas judesys. Su kiekvienu dešimtu (reguliuojamu) judesiu „Smiley“sugalvoja „Winky Face“, o po trijų „Winky Face“- ketvirtą kartą, kai „Smiley Face“iškiša liežuvį.

„Smiley“yra nedidelis kodo pakeitimas.

11 veiksmas: naudojamos bibliotekos

Kurios bibliotekos naudojamos.

Aš juos naudoju „Windows 7“su „Arduino IDE 1.6“ir jie taip pat buvo išbandyti „Windows 10“su „Adruino IDE 1.8.8“

RTClib-master

„Arduino-DS3231-master“https://github.com/jarzebski/Arduino-DS3231

„Adafruit_NeoPixel-master“https://github.com/adafruit/Adafruit_NeoPixel

„Arduino-DCF77-master“https://github.com/thijse/Arduino-DCF77

Ken Shirriff IRremote biblioteka

Kadangi visuomet kyla painiavos dėl naudojamos bibliotekos, pridedu tą, kurią naudoju.

„IRremote“biblioteka naudoja daug atminties. „IRremote.h“nurodoma, kad galite išjungti bet kokį nepanaudotą protokolą

// Kiekvienas jūsų įtrauktas protokolas kainuoja atmintį, o dekodavimo metu - laiką // Išjungti (nustatyti į 0) visus jums nereikalingus/norimus protokolus!

Turiu viską išjungtą, išskyrus NEC ir „Samsung“protokolą. Tai leidžia sutaupyti 10%atminties. Šiuo metu nebėra problemų su atminties kiekiu, todėl išjungimas šiuo metu nėra būtinas.

12 veiksmas: paprastas IR nuotolinio valdymo pultas

Paprastas IR nuotolinio valdymo pultas
Paprastas IR nuotolinio valdymo pultas
Paprastas IR nuotolinio valdymo pultas
Paprastas IR nuotolinio valdymo pultas
Paprastas IR nuotolinio valdymo pultas
Paprastas IR nuotolinio valdymo pultas

Surinkimas

Kaip matote nuotraukose, LED 132 skylė pasirodė šiek tiek per didelė. Aš tai gerai panaudojau ir pridėjau prie jo IR imtuvą. Prijunkite IR imtuvo VS1838 duomenų kaištį prie „Arduino“7 kaiščio. Be to, prijunkite pliuso ir minuso maitinimo šaltinį. IR imtuvas naudoja 0,21 mA ir taip pat gali būti prijungtas prie plius maitinimo šaltinio po FET jungiklio. Dėl to, jei laikrodis veikia 50% laiko, sutaupoma 5 voltų * 0,21 mA / 1000 * 12 valandų * 365 dienų * 1 / 0,85 efektyvumo maitinimo šaltinis = 5,4 vatai per metus. Tai neatrodo daug, bet kiekviena dalis padeda.

Operacija yra tokia

Paspauskite bet kurį IR nuotolinio valdymo pulto klavišą, tada - mygtuką OK. Kai pirmą kartą paspausite, baigsite IR apdorojimą, o antrą kartą sužinosite, ar tai buvo pagrįstas prašymas. Antrą kartą OK turi greitai paspausti pirmąjį klavišo paspaudimą, nes priešingu atveju jis vėl sugrįš. Aš padariau šią konstrukciją taip, kad vargu ar teisingai iššifravau pirmąjį kodą, todėl nepateko į IR apdorojimą.

Kai pradedama valdyti IR, tada užsidega daugybė šviesos diodų, kad gautumėte informacijos, paaiškinimą skaitykite toliau ir peržiūrėkite pirmąjį vaizdą.

Aprašymas skirtas paprastam nuotolinio valdymo pultui, tačiau galite naudoti bet kurį nuotolinio valdymo pultą ir nustatyti savo raktus. Aš taip pat naudoju „Samsung“nuotolinio valdymo pultą.

Pirmieji keturi klavišai atitinka keturias viršutines šviesos diodų eilutes. Keturi šviesos diodai sukasi į kairę arba į dešinę, priklausomai nuo nustatymo. Paspaudus klavišus nuo 1 iki 4, būsena pasikeičia ir išsaugoma atmintyje.

1 fiksuotos spalvos arba vaivorykštės efektas

2 sekundžių blykstė išjungta arba antra blykstė įjungta

3 smiley off smiley on

4 DCF77 išjungtas arba DCF77 įjungtas

Rakto numeris rodomas šiuose klavišuose

5 šypsenėlių skaitiklis

6 vaivorykštės spektro plotis

7 pataisykite raudoną nustatymą

8 pataisykite žalią nuostatą

9 pataisykite mėlyną nustatymą

Šviesos diodų 6, 7 ir 8 eilutės dabar atitinka nustatytą vertę, 6 eilutė nurodo vienetus, 7 eilutė - dešimtis, o 8 eilutė - šimtą. Kiekviena eilutė prasideda nuo nulio. Taigi pirmasis eilutės vedlys yra 0, antrasis - 1 ir tt

0 laiko nustatymas

/\ ryškumo nustatymas

Paspaudus mygtuką 0, užsidega „dešimt“šviesos diodai, rodantys, kad norite nustatyti laiką, o antrą kartą paspaudus 0, ekrane pasirodo nustatytas laikas.

Dabar galima nustatyti laiką ir jis rodomas ekrane.

Nustatykite teisingą laiką ir tada, jei etaloninio laikrodžio minutės yra vienodos, paspauskite mygtuką Gerai.

Laikas sureguliuotas.

Jei nespausite minučių ar valandų mygtuko, laikas nebus keičiamas. Jei juos paspausite, laikas bus nustatytas iš karto.

Klavišų nuo 5 iki 9 reikšmę galima pakeisti klavišais

teisybė plius 1

kairėje yra minus 1

pirmyn plius 10

atvirkščiai - minus 10.

ir dėl laiko nustatymo

dešinė yra plius 1 minutė

liko minus 1 minutė

pirmyn plius 1 valanda

atvirkščiai - minus 1 valanda

Kartais atsitinka taip, kad klavišų paspaudimas nėra atpažįstamas arba atliekamas du kartus. Taigi atkreipkite dėmesį, jei nustatymas veikia gerai, kitaip bandykite arba ištaisykite dar kartą. „Samsung“nuotolinio valdymo pultas, kurį taip pat išbandžiau, dirbo daug kartų geriau nei (labai pigus) paprastas nuotolinio valdymo pultas.

Nustatydami spalvą pakeitimą matote tiesiai visame ekrane. Svetainę su spalvų apžvalga rasite https://www.helderester.nl/kleurentabel.html. Žinoma, galite nustatyti bet kokią vertę.

Jei vaivorykštės spektro plotis yra 0, spektras yra labai siauras, o ekranas turi vieną spalvą, kuri nuolat keičiasi.

Taip nustatant laiką, trūkumas yra tas, kad negalite apskaičiuoti vasaros / žiemos perėjimo, nes data neteisinga. Pačiam laikrodžiui tai nesvarbu, nes dabar jo nenaudojame.

13 žingsnis: kokie „Nexts“?

Kokie Nextai?
Kokie Nextai?

Toliau, garsas, jei vis dar pakanka laisvos atminties.

Aš jau turiu garsiakalbių dėžes. Jie yra iš seno nešiojamojo kompiuterio.

Rekomenduojamas: