Cuprins:

Ceas Word Rainbow cu efect Rainbow complet și multe altele: 13 pași (cu imagini)
Ceas Word Rainbow cu efect Rainbow complet și multe altele: 13 pași (cu imagini)

Video: Ceas Word Rainbow cu efect Rainbow complet și multe altele: 13 pași (cu imagini)

Video: Ceas Word Rainbow cu efect Rainbow complet și multe altele: 13 pași (cu imagini)
Video: The Lost Crown | J. Wilbur Chapman | Christian Audiobook 2024, Noiembrie
Anonim
Ceas Rainbow Word cu efect curcubeu complet și multe altele
Ceas Rainbow Word cu efect curcubeu complet și multe altele

Obiective

1) Simplu

2) Nu este scump

3) Cât mai eficientă din punct de vedere energetic

Rainbow Word Clock cu efect curcubeu complet.

Un zâmbet pe ceasul cuvântului.

Telecomandă IR simplă

Actualizare 03-nov-18 LDR pentru controlul luminozității neopixelilor

Actualizare 01-ianuarie-19 Reducerea consumului de energie WS2812B.

Actualizare Smiley 15-ianuarie-19.

Actualizare 23-ianuarie-19 Cod 1.6

Actualizați linkurile pentru biblioteci 10-mar-19

Actualizați versiunea 14-apr-19 1.7 Alegere smiley on / off curcubeu curcubeu / fix enz.

Ultima actualizare 01-jun-19 versiunea 2.0 Telecomanda IR și reproiectarea codului

Pasul 1: Carcasa pentru ceas

Cazul pentru ceas
Cazul pentru ceas
Cazul pentru ceas
Cazul pentru ceas
Cazul pentru ceas
Cazul pentru ceas

Cu câteva instrumente simple și un pic de îndemânare, nu este greu să creez un ceas cu scrisori Am folosit materialele disponibile pentru mine.

Pentru caz am folosit o bară de pin aspră în care am tăiat câteva cadre. Acestea ar face cele patru laturi ale carcasei, care au fost lipite între ele și întărite cu o mică bucată de lemn în colțuri. Atunci lemnul are nevoie de șlefuire și vopsire.

Literele sunt decupate din folie de o imprimantă care scrie în oglindă. Folia se află în spatele plăcii de sticlă și este acoperită cu o hârtie model dublu strat pentru o mai bună distribuție a luminii. Sticla este fixată cu etanșant siliconic.

Pasul 2: Neopixeli

Neopixeli
Neopixeli
Neopixeli
Neopixeli
Neopixeli
Neopixeli
Neopixeli
Neopixeli

LED-urile Neopixels sunt aranjate pe o placă de lemn, în care găuriți mai întâi găuri de 3 mm. În partea din față sunt mărite la dimensiunea literelor la 3/4 adâncime. După aceea, cei 3 mm din spate sunt mărite la 10 mm, aceasta este dimensiunea unui Neopixel. Pentru unele personaje, printre altele, W, gaura ar trebui să fie ușor ajustată.

Am folosit placaj care s-a despicat rapid, MDF poate fi mai bun.

Cu LED-uri individuale nu sunteți legat de o distanță fixă, așa cum este cazul benzilor cu LED-uri. LED-urile trebuie să fie conectate între ele. Puteți face acest lucru cu toate bucățile scurte de sârmă. Dar cele două conexiuni min (-) sunt la fel ca cele două conexiuni plus (+) conectate intern, deci aceeași conexiune.

Vă puteți economisi multă muncă prin lipirea unei bucăți de sârmă la LED-ul din stânga și apoi la LED-ul din dreapta. Apoi lipiți cele intermediare.

Conexiunea de date trebuie, desigur, cu piese scurte, deoarece ieșirea datelor se duce la introducerea datelor.

Pasul 3: Ajustarea textului frontal

Reglarea textului frontal
Reglarea textului frontal
Reglarea textului frontal
Reglarea textului frontal
Reglarea textului frontal
Reglarea textului frontal

Placa frontală este acum în olandeză, dar pur și simplu pentru a fi convertită în orice limbă.

Ledurile NeoPixels sunt comutate succesiv aici de la 0 la 167. Numerotarea merge de la primul rând din stânga sus la dreapta și apoi la al doilea rând de la dreapta la stânga etc. Ajustarea se poate face în funcție de propriile nevoi. Numărul de NeoPixeli este determinat de cantitatea de caractere. Mai puțini sau mai mulți Neopixeli pot fi reglați în următoarea linie

#define NUMPIXELS 168 // Câți NeoPixel sunt atașați la Arduino?

168 este mai mult decât un alt număr. Numerotarea începe de la 0. Puteți crea orice text. Dacă schimbați textul, va trebui, de asemenea, să ajustați cuvintele corespunzătoare. Numerotarea rămâne aceeași.

De exemplu, DRIE-ul procesului verbal este determinat în cod

void zetmDrie () {

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

}

Dacă doriți să faceți cuvântul Arduino, atunci merge așa:

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

}

Deci, puteți face cuvinte între.

Pentru cuvintele cu ceas este util dacă formează un cuvânt contigu, dar nu este absolut necesar. Literele neutilizate nu au nevoie de Neonpixeli. Le-am completat pe toate pentru utilizarea posibilităților viitoare, altele decât timpul afișat.

Dacă schimbați punctul de plecare sau modificați succesiunea succesiunii, numerotarea ar trebui să se schimbe în consecință.

Pasul 4: Efect curcubeu complet

Efect curcubeu complet
Efect curcubeu complet

Ceasul este acum atât de programat încât se contorizează numărul de ori pe secundă câte neopixeli sunt pornite.

Spectrul total este aproximativ numărul de divizați și apoi ușor deplasat. Ca urmare, fiecare Neopixel are o culoare diferită care se schimbă continuu. Neopixel nr 1 și nr 167 se succed pe o anumită culoare.

Dacă preferați culori mai puțin diferite în același timp, acest lucru este ușor de reglat. Culoarea se schimbă încă pe întregul spectru, dar cu o parte mai mică a acestuia. Neopixel nr 1 și nr 167 nu se mai urmează unul pe celălalt și implică o anumită culoare.

Luminozitatea poate fi setată în următoarea linie, pixeli.setBrightness (150);

Un număr mai mic este mai mic și un număr mai mare mai multă luminozitate.

Pasul 5: Diversele componente

Diversele componente
Diversele componente
Diversele componente
Diversele componente
Diversele componente
Diversele componente

Următoarele componente le-am folosit

Arduino Pro Mini ATMEGA328 5V / 16MHz

Modul de ceas DS3231

168 bucăți Neopixeli cu LED WS2812 LED Chip și radiator 5V 5050 RGB WS2811 IC încorporat

Șablon scrisoare din folie

Receptor DCF77

Pasul 6: Cod pentru ceas

Iată codul. S-a adăugat un control al luminozității și oprire atunci când nimeni nu este prezent și noaptea.

S-a adăugat senzorul de mișcare radar cu microunde RCWL-0516 (căutați RADAR)

După 10 minute fără mișcare, NeoPixels se sting.

Despre versiunea 2.0

Utilizarea memoriei a fost prea mare, fără avertismente de memorie în compilator. De aceea am schimbat complet codul, dar operația a rămas aceeași și s-a adăugat un receptor IR.

Există o bucată de cod pentru a furniza EEPROM-ului cu date. Rulați o dată eliminând temporar / * și * /. Căutați => rulați o dată pentru a furniza EEPROM cu date

La începutul buclei de gol este codul pentru a citi codul de la propria telecomandă. Puteți rula acest lucru eliminând temporar / * și * /, nu uitați să le puneți înapoi după aceea. De asemenea, vă puteți defini propriile butoane. Codul citit trebuie introdus în => Definiți propriile butoane aici

Telecomanda Samsung funcționează mai bine decât simpla (foarte ieftină).

Pasul 7: Descrierea hardware-ului

Descrierea hardware-ului
Descrierea hardware-ului
Descrierea hardware-ului
Descrierea hardware-ului
Descrierea hardware-ului
Descrierea hardware-ului

Există diferite versiuni ale Arduino Pro Mini. Vă rugăm să rețineți, conexiunile pot diferi.

S-a adăugat un senzor de mișcare cu microunde RCWL-0516.

Atâta timp cât există mișcare în vecinătatea ceasului, NeoPixel rămâne aprins

și imediat ce nu mai există mișcare, NeoPixel se stinge după câteva minute.

În versiunea 2.0, receptorul DCF77 este furnizat cu alimentare prin pinul 13. Acest pin este definit ca ieșire și setat la înaltă atunci când rutina DCF77 este adresată. Receptorul DCF77 folosește 0,28 mA și este necesar doar câteva minute pe zi.

Dezactivarea salvării

5 Volți * 0,28 mA / 1000 * 24 de ore * 365 de zile * Sursa de alimentare cu eficiență de 1 / 0,85 = 14,4 wați pe an.

Acest lucru nu pare prea mult, dar fiecare bit ajută.

Pasul 8: LDR pentru controlul luminozității neopixelilor

LDR pentru controlul luminozității neopixelilor
LDR pentru controlul luminozității neopixelilor
LDR pentru controlul luminozității neopixelilor
LDR pentru controlul luminozității neopixelilor

S-a adăugat un LDR pentru controlul luminozității neopixelilor.

Am lipit LDR în spațiul neopixelului 103. Acesta nu este utilizat în afișarea timpului și, prin urmare, nu influențează reglementarea. Hârtia umple lumina incidentă, dar nu este o problemă.

Divizorul de tensiune al rezistorului LDR și al rezistenței de 20 kohm merge la A0 al Arduino Pro Mini. Tensiunea este un indicator al intensității luminii și, prin urmare, un indicator al cantității de lumină pe care neopixelii trebuie să o dea.

Formula pe care o folosesc îmi oferă un control bun al luminii, poate fi ajustată în funcție de circumstanțe. În funcție de cantitatea de lumină, tensiunea poate varia între 0 și 5 volți, care este convertită la 0 la 1024 numere care sunt în „LDRValue”.

Dacă noua valoare măsurată este mai mare decât ultima valoare calculată, intensitatea este crescută cu 1, dacă este mai mică decât decrementată cu 1 și dacă este egală nu se face nimic. Pentru a face ca valoarea să se desfășoare încet, astfel încât să nu existe niciun efect de clipire, doar 1 este mărit sau micșorat și deoarece calculul este în buclă, acesta este recalculat numai după parcurgerea buclei de 25 de ori.

Intensitatea este teoretic minim 20 și maxim 1024/7 + 45 = 191. Valoarea maximă pe care am măsurat-o a fost 902, care se ridică la o intensitate de 173. Aceasta se potrivește bine cu 150 pe care le-am setat ca valoare implicită. (vezi pixels.setBrightness (150))

În versiunea 2.0 puteți seta comanda prin telecomandă. Au fost adăugați următorii parametri: Luminozitate_min ca minim și Luminozitate_max ca setare maximă și Luminozitate_Ofset ca parametru de setare. Luminozitatea_min și _max sunt valorile care pot depinde de propria situație. Brightness_Offset este o valoare care poate fi setată cu telecomanda și cu care poate fi setată mai mult sau mai puțin luminozitate.

Există, de asemenea, o bandă moartă de 3 între LDRValue măsurat și valorile BerLDRValue calculate.

Utilizați declarațiile de imprimare din butonul BrightnessControl pentru a verifica setarea de luminozitate.

Pasul 9: Reducerea consumului de energie WS2812B

Reducerea consumului de energie WS2812B
Reducerea consumului de energie WS2812B

Driverele de pe neopixeli adresabili WS2812B trag curent chiar și atunci când neopixeli sunt opriți, setat la culoarea 0 (nu există elemente de neopixeli aprinse).

Când toți cei 169 de neopixeli sunt în afara, măsoară 69 mA la neopixeli. Presupunând că ceasul este oprit 12 ore pe zi, oprirea totală salvează apoi: 5 (alimentare cu volt) * 69/1000 (Miliampere / 1000 = Ampere) * 12 (Număr de ore pe zi) * 365 (Număr de zile într-o an) = 1511 Watt ore. Deci, pe o bază anuală 1,5 Kwh. Sunt de acord, nu este mult în sine, dar multe mici fac una mare.

Circuitul este simplu. Plusul sursei de alimentare este comutat de un MosFet cu canal P. Senzorul radar determină dacă neopixelii sunt activi sau opriți. Am pus două MosFet parrelel pentru a menține rezistența la ON cât mai scăzută posibil datorită pierderii MosFet-urilor. În utilizare normală măsoară 4, 5 mili volți peste MosFets. Poarta este controlată de ieșirea 4 de la Arduino printr-un rezistor de 470 Kohm. Dacă ieșirea ajunge la scăzut (0) digital, neopixelii sunt aprinși și la un nivel ridicat (1) sunt opriți.

Pasul 10: Smiley la Word Clock

Smiley pe Word Clock
Smiley pe Word Clock
Smiley pe Word Clock
Smiley pe Word Clock

Un zâmbet pe ceasul cuvântului.

Apare ocazional câte un Smiley pe ceas, însă asta te face fericit.

Smiley este declanșat de senzorul radar. De câte ori mișcarea (reglabilă) este o măsură a aspectului Smiley. Semnele% indică faptul că mișcarea a fost detectată. Cu fiecare a zecea mișcare (reglabilă), Smiley vine cu o față Winky și după trei ori o față Winky vine a patra oară când un Smiley Face scoate limba.

Smiley este o mică modificare a codului.

Pasul 11: Ce biblioteci sunt utilizate

Ce biblioteci sunt utilizate.

Le folosesc în Windows 7 cu Arduino IDE 1.6 și au fost testate și în Windows 10 cu Adruino IDE 1.8.8

RTClib-master

Arduino-DS3231-master

Adafruit_NeoPixel-master

Arduino-DCF77-master

Biblioteca IRremote a lui Ken Shirriff

Deoarece există întotdeauna confuzie cu privire la biblioteca utilizată, o adaug pe cea pe care o folosesc.

Biblioteca IRremote folosește multă memorie. În IRremote.h este indicat faptul că puteți dezactiva orice protocol neutilizat

// Fiecare protocol pe care îl includeți costă memorie și, în timpul decodării, costă timpul // Dezactivați (setat la 0) toate protocoalele de care nu aveți nevoie / doriți!

Am totul dezactivat, cu excepția protocolului NEC și Samsung. Acest lucru oferă o economie de memorie de 10%. În acest moment nu mai există nicio problemă cu cantitatea de memorie, așa că deocamdată nu este necesară dezactivarea.

Pasul 12: Telecomandă IR simplă

Telecomandă IR simplă
Telecomandă IR simplă
Telecomandă IR simplă
Telecomandă IR simplă
Telecomandă IR simplă
Telecomandă IR simplă

Adunarea

După cum puteți vedea în fotografii, gaura pentru LED 132 s-a dovedit a fi puțin prea mare. Am folosit bine acest lucru și am adăugat receptorul IR la acesta. Conectați pinul de date al receptorului IR VS1838 la pinul 7 al Arduino. În plus, conectați sursa de alimentare plus și minus. Receptorul IR utilizează 0,21 mA și ar putea fi, de asemenea, conectat la sursa de alimentare plus după comutatorul FET. Acest lucru are ca rezultat o economie, dacă ceasul este pornit la 50% din timp, de 5 Volți * 0,21 mA / 1000 * 12 ore * 365 de zile * 1 / 0,85 sursă de energie eficientă = 5,4 wați pe an. Acest lucru nu pare prea mult, dar fiecare bit ajută.

Funcționarea este după cum urmează

Apăsați orice tastă de pe telecomanda IR și apoi tasta OK. Prima dată când apăsați, veți ajunge la procesarea IR și a doua oară veți detecta dacă a fost o cerere justificată. A doua oară OK trebuie să urmeze rapid prima apăsare a tastei, pentru că altfel se întoarce din nou. Am făcut această construcție, astfel încât cu greu am primit primul cod corect decodat și, prin urmare, nu am ajuns la manipularea IR.

Odată ajuns în gestionarea IR, mai multe LED-uri se aprind pentru informații, pentru explicații citiți mai departe și vizualizați prima imagine.

Descrierea este pentru telecomanda simplă, dar puteți utiliza orice telecomandă și puteți defini propriile chei. Am folosit și o telecomandă Samsung.

Primele patru taste corespund primelor patru rânduri de LED-uri. Patru LED-uri virează la stânga sau la dreapta în funcție de setare. Când se apasă tastele de la 1 la 4, starea este inversată și stocată în memorie.

1 culoare fixă sau efect curcubeu

Bliț de 2 secunde dezactivat sau al doilea bliț activat

3 smiley off smiley on

4 DCF77 oprit sau DCF77 activat

Numărul tastei este afișat pe următoarele taste

5 contor zâmbitor

6 lățimea spectrului curcubeu

7 fixează setarea roșie

8 fixează setarea verde

9 fixează setarea albastră

Rândul 6, 7 și 8 din LED-urile corespund acum valorii setate, rândul 6 indică unitățile, rândul 7 zecile și rândul 8 suta. Fiecare rând începe cu valoarea zero. Deci primul led din rând este 0 al doilea este 1 etc.

0 setare de timp

/ / setare luminozitate

Când este apăsat butonul 0, LED-urile „zece” se aprind pentru a indica faptul că doriți să setați ora și când apăsați 0 a doua oară, pe ecran apare ora setată.

Ora poate fi setată acum și este afișată pe afișaj.

Setați ora corectă și apoi dacă minutul este același pe un ceas de referință, apăsați butonul OK.

Ora este ajustată.

Dacă nu acționați butonul pentru minute sau ore, nu se va face nicio schimbare de oră. Dacă le apăsați, ora va fi setată imediat.

Valoarea tastelor 5-9 poate fi modificată cu tastele

dreapta este plus 1

stânga este minus 1

înainte este plus 10

invers este minus 10.

și pentru setarea orei

dreapta este plus 1 minut

stânga este minus 1 minut

înainte este plus 1 oră

inversarea este minus 1 oră

Uneori se întâmplă ca apăsarea tastelor să nu fie recunoscută sau să fie efectuată de două ori. Deci, acordați atenție dacă setarea merge bine, altfel încercați sau corectați din nou. Telecomanda Samsung pe care am testat-o, de asemenea, a funcționat de multe ori mai bine decât telecomanda simplă (foarte ieftină).

Când setați culoarea, vedeți modificarea direct pe întregul ecran. Pentru un site cu o prezentare generală a culorilor, consultați https://www.helderester.nl/kleurentabel.html. Desigur, puteți seta orice valoare.

Dacă lățimea spectrului curcubeu are o valoare 0, spectrul este foarte îngust și afișajul are o singură culoare care se schimbă constant.

Dezavantajul setării orei în acest mod este că nu puteți calcula o tranziție de vară / iarnă, deoarece data este incorectă. Nu contează pentru ceasul în sine, deoarece nu îl folosim acum.

Pasul 13: Ce Nexte?

Ce Nexte?
Ce Nexte?

Ce urmează, sună, dacă memoria liberă este încă suficientă.

Am deja cutiile pentru difuzoare. Sunt de la un laptop vechi.

Recomandat: