Innehållsförteckning:

Rainbow Word Clock med en fullständig Rainbow -effekt och mer: 13 steg (med bilder)
Rainbow Word Clock med en fullständig Rainbow -effekt och mer: 13 steg (med bilder)

Video: Rainbow Word Clock med en fullständig Rainbow -effekt och mer: 13 steg (med bilder)

Video: Rainbow Word Clock med en fullständig Rainbow -effekt och mer: 13 steg (med bilder)
Video: Кто-нибудь из вас слышал о полуночной игре? Страшные истории. Мистика. Ужасы 2024, Juli
Anonim
Rainbow Word Clock med en fullständig Rainbow -effekt och mer
Rainbow Word Clock med en fullständig Rainbow -effekt och mer

Mål

1) Enkelt

2) Inte dyrt

3) Så energieffektivt som möjligt

Rainbow Word Clock med full regnbågseffekt.

En smiley på ordklockan.

Enkel IR -fjärrkontroll

Uppdatera 03-nov-18 LDR för ljusstyrkekontroll av neopixlarna

Uppdatering 01-jan-19 Minska WS2812B-strömförbrukning.

Uppdatera 15-jan-19 Smiley.

Uppdatering 23-jan-19 Kod 1.6

Uppdatera 10-mar-19 bibliotekslänkar

Uppdatera 14-apr-19 version 1.7 Choice smiley on/off collor rainbow/fix enz.

Senaste uppdatering 01-jun-19 version 2.0 IR fjärrkontroll och koddesign

Steg 1: Fodralet för klockan

Fodralet för klockan
Fodralet för klockan
Fodralet för klockan
Fodralet för klockan
Fodralet för klockan
Fodralet för klockan

Med några enkla verktyg och lite skicklighet är det inte svårt att göra en bokstavsklocka. Jag använde materialet tillgängligt för mig.

För fallet använde jag en grov tallbar där jag sågade några ramar. Dessa skulle göra de fyra sidorna av fodralet, som limmades ihop och förstärktes med en liten bit trä i hörnen. Sedan behöver träet slipas och målas.

Bokstäverna skärs ut av folie av en skrivare i spegelskrivning. Folien ligger på baksidan av glasplattan och är täckt med ett dubbelsidig mönsterpapper för bättre ljusfördelning. Glaset fixeras med silikon.

Steg 2: Neopixels

Neopixels
Neopixels
Neopixels
Neopixels
Neopixels
Neopixels
Neopixels
Neopixels

Neopixels lysdioder är placerade på en träplatta. I detta borrar du först 3 mm hål. På framsidan förstoras de till bokstavsstorlek till 3/4 djup. Därefter ökas 3 mm på baksidan till 10 mm, detta är storleken på en Neopixel. För vissa tecken, bland andra W, bör hålet justeras något.

Jag använde plywood som snabbt splittrades, MDF kan vara bättre.

Med enskilda lysdioder är du inte bunden till ett fast avstånd, vilket är fallet med LED -remsor. Lysdioderna måste vara anslutna till varandra. Du kan göra detta med alla korta bitar av tråd. Men de två min (-) anslutningarna är precis som de två plus (+) anslutningarna internt anslutna, så samma anslutning.

Du kan spara mycket arbete genom att löda en bit tråd till vänster LED och sedan till höger LED. Löd sedan de mellanliggande.

Dataförbindelsen måste naturligtvis med korta bitar eftersom data-out går till data-in.

Steg 3: Justera främre text

Justera främre text
Justera främre text
Justera främre text
Justera främre text
Justera främre text
Justera främre text

Frontplattan är nu på nederländska, men helt enkelt att konvertera till vilket språk som helst.

NeoPixels-lysdioderna växlas i följd här från 0-167. Numreringen går från första raden högst upp till vänster till höger och sedan till andra raden höger till vänster etc. Justering kan göras efter dina egna behov. Antalet NeoPixels bestäms av mängden tecken. Mindre eller fler Neopixels kan justeras i följande rad

#define NUMPIXELS 168 // Hur många NeoPixels är anslutna till Arduino?

168 är än ett annat tal. Numreringen börjar med 0. Du kan göra valfri text. Om du ändrar texten måste du också justera motsvarande ord. Numreringen förblir densamma.

Som ett exempel bestäms DRIE av protokollet i koden

void zetmDrie () {

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

}

Om du vill skapa ordet Arduino så går det så här:

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

}

Så du kan göra ord mellan.

För klockord är det användbart om de bildar ett sammanhängande ord men det är inte absolut nödvändigt. De oanvända bokstäverna behöver inte Neonpixels. Jag har dem alla fyllda för att använda framtida möjligheter förutom att tiden visas.

Om du ändrar startpunkten eller ändrar successionsföljden bör numreringen ändras i enlighet därmed.

Steg 4: Full Rainbow -effekt

Full Rainbow -effekt
Full Rainbow -effekt

Klockan är nu så programmerad att antalet gånger per sekund räknas hur många neopixlar det är på.

Det totala spektrumet handlar om antalet delade och sedan något förskjutna. Som ett resultat har varje Neopixel en annan färg som ändras kontinuerligt. Neopixel nr 1 och nr 167 följer varandra på vissa färger.

Om du föredrar mindre olika färger samtidigt är detta enkelt att justera. Färgen skiftar fortfarande över hela spektrumet men med en mindre del av det. Neopixel nr 1 och nr 167 följer inte längre på varandra i vissa färger.

Ljusstyrkan kan ställas in på följande rad, pixlar.setBrightness (150);

Ett mindre antal är mindre och ett större antal mer ljusstyrka.

Steg 5: De olika komponenterna

De olika komponenterna
De olika komponenterna
De olika komponenterna
De olika komponenterna
De olika komponenterna
De olika komponenterna

Följande komponenter använde jag

Arduino Pro Mini ATMEGA328 5V/16MHz

Klockmodul DS3231

168 stycken Neopixels leds WS2812 LED-chip och kylfläns 5V 5050 RGB WS2811 IC Inbyggd

Folie brev stencil

DCF77 -mottagare

Steg 6: Kod för klockan

Här är koden. Lagt till en ljusstyrka och stäng av när ingen är närvarande och på natten.

Tillagd RCWL-0516 Radar Mikrovågsrörelsessensor (sök efter RADAR)

Efter 10 minuter utan rörelse släpper NeoPixels.

Om version 2.0

Minnesanvändningen var för stor, och minnesvarningarna i kompilatorn tar slut. Det är därför jag har ändrat koden helt, men operationen har förblivit densamma och en IR -mottagare har lagts till.

Det finns en kod för att förse EEPROM med data. Kör detta en gång genom att tillfälligt ta bort / * och * /. Sök efter => kör detta en gång för att förse EEPROM med data

I början av tomrumsslingan finns kod för att läsa koden från din egen fjärrkontroll. Du kan köra detta genom att tillfälligt ta bort / * och * /, glöm inte att sätta tillbaka dem efteråt. Du kan också definiera dina egna knappar. Den lästa koden måste anges i => Definiera dina egna knappar här

Samsungs fjärrkontroll fungerar bättre än den (mycket billiga) enkla.

Steg 7: Maskinvarubeskrivningen

Maskinvarubeskrivningen
Maskinvarubeskrivningen
Maskinvarubeskrivningen
Maskinvarubeskrivningen
Maskinvarubeskrivningen
Maskinvarubeskrivningen

Det finns olika versioner av Arduino Pro Mini. Observera att anslutningarna kan skilja sig åt.

Har lagt till en RCWL-0516 mikrovågsrörelsessensor.

Så länge det rör sig i närheten av klockan, förblir NeoPixel på

och så fort det inte är mer rörelse försvinner NeoPixel efter några minuter.

I version 2.0 förses DCF77 -mottagaren med ström via stift 13. Denna stift definieras som utmatning och sätts högt när DCF77 -rutinen adresseras. DCF77 -mottagaren använder 0,28 mA och behövs bara några minuter per dag.

Avstängning sparar

5 volt * 0,28 mA / 1000 * 24 timmar * 365 dagar * 1 / 0,85 effektiv strömförsörjning = 14,4 watt per år.

Det här verkar inte så mycket, men varje bit hjälper.

Steg 8: LDR för ljusstyrkekontroll av neopixlarna

LDR för Neopixels ljusstyrka
LDR för Neopixels ljusstyrka
LDR för Neopixels ljusstyrka
LDR för Neopixels ljusstyrka

Lade till en LDR för ljusstyrkekontrollen av neopixlarna.

Jag har limmat LDR i utrymmet på neopixel 103. Den här används inte i tidsdisplayen och påverkar därför inte regleringen. Papperet dämpar det infallande ljuset, men det är inga problem.

Spänningsdelaren för LDR och 20 kohm motstånd går till A0 i Arduino Pro Mini. Spänningen är en indikator på ljusintensiteten och därför också en indikator på mängden ljus som neopixlarna måste ge.

Formeln som jag använder ger mig bra ljuskontroll, den kan justeras beroende på omständigheterna. Beroende på ljusmängden kan spänningen variera mellan 0 och 5 volt vilket omvandlas till 0 till 1024 räkningar som är i "LDRValue".

Om det nya mätvärdet är större än det senast beräknade värdet, ökas intensiteten med 1, om det är lägre än minskat med 1 och om det är lika görs ingenting. För att få värdet att gå långsamt, så att det inte finns någon blinkande effekt, ökas eller minskas bara 1 och eftersom beräkningen är i slingan beräknas det bara igen efter att ha passerat slingan 25 gånger.

Intensiteten är teoretiskt minst 20 och högst 1024/7 + 45 = 191. Maxvärdet som jag mätte var 902, vilket uppgår till en intensitet på 173. Detta passar bra med de 150 som jag har satt som standardvärde. (se pixlar.setBrightness (150))

I version 2.0 kan du ställa in kontrollen via fjärrkontrollen. Följande parametrar har lagts till: Brightness_min som minimum och Brightness_max som maximal inställning och Brightness_Offset som inställningsparameter. Brightness_min och _max är de värden som kan bero på din egen situation. Brightness_Offset är ett värde som kan ställas in med fjärrkontrollen och med vilket mer eller mindre ljusstyrka kan ställas in.

Det finns också ett dödband på 3 mellan uppmätta LDRValue och beräknade BerLDRValue -värden.

Använd utskriftsangivelserna i void BrightnessControl för att kontrollera inställningen för ljusstyrka.

Steg 9: Minska WS2812B strömförbrukning

Minska WS2812B strömförbrukning
Minska WS2812B strömförbrukning

Drivrutinerna på WS2812B adresserbara neopixlar drar ström även när neopixlarna är avstängda, inställda på färg 0 (inga neopixelelement tänds).

När alla 169 neopixlar är ute mäter jag 69 mA till neopixlarna. Om vi antar att klockan är avstängd 12 timmar om dagen, sparar den totala avstängningen sedan: 5 (Volt strömförsörjning) * 69/1000 (Miliampere / 1000 = Ampere) * 12 (Antal timmar per dag) * 365 (Antal dagar i en år) = 1511 Wattimmar. Så på årsbasis 1,5 Kwh. Jag håller med, det är inte mycket i sig, men många små gör en stor.

Kretsen är enkel. Plus för strömförsörjningen byts av en P-kanal MosFet. Radarsensorn avgör om neopixlarna är på eller av. Jag har satt två MosFet -parrelel för att hålla ON -motståndet så lågt som möjligt på grund av förlust av MosFets. Vid normal användning mäter jag 4, 5 mili volt över MosFets. Porten styrs av utgång 4 från Arduino via ett 470 Kohm -motstånd. Om utmatningen går till låg (0) digitalt är neopixlarna på och vid höga (1) är de avstängda.

Steg 10: Smiley på Word Clock

Smiley på ordklockan
Smiley på ordklockan
Smiley på ordklockan
Smiley på ordklockan

En smiley på ordklockan.

Det dyker upp en smiley ibland på klockan, men det gör dig glad.

Smiley utlöses av radarsensorn. Antalet gånger rörelse (justerbar) är ett mått på Smileys utseende. % -Tecknen indikerar att rörelse har detekterats. Med var tionde (justerbar) rörelse kommer Smiley upp med ett Winky Face och efter tre gånger kommer ett Winky Face fjärde gången som ett Smiley Face sticker ut tungan.

Smiley är en liten ändring av koden.

Steg 11: Vilka bibliotek används

Vilka bibliotek som används.

Jag använder dem i Windows 7 med Arduino IDE 1.6 och de har också testats i Windows 10 med Adruino IDE 1.8.8

RTClib-master

Arduino-DS3231-master

Adafruit_NeoPixel-master

Arduino-DCF77-master

Ken Shirriffs IRremote-bibliotek

Eftersom det alltid är förvirring om biblioteket som används, lägger jag till det jag använder.

IRremote -biblioteket använder mycket minne. I IRremote.h indikeras att du kan inaktivera alla oanvända protokoll

// Varje protokoll du inkluderar kostar minne och, under avkodning, kostar tid // Inaktivera (ställ in på 0) alla protokoll du inte behöver/vill ha!

Jag har allt inaktiverat utom NEC- och Samsung -protokollet. Detta ger en minnesbesparing på 10%. För tillfället finns det inte längre några problem med mängden minne, så för närvarande är det inte nödvändigt att inaktivera.

Steg 12: Enkel IR -fjärrkontroll

Enkel IR -fjärrkontroll
Enkel IR -fjärrkontroll
Enkel IR -fjärrkontroll
Enkel IR -fjärrkontroll
Enkel IR -fjärrkontroll
Enkel IR -fjärrkontroll

Monteringen

Som du kan se på bilderna har hålet för LED 132 visat sig vara lite för stort. Jag utnyttjade detta bra och lade till IR -mottagaren. Anslut datastiftet för IR -mottagaren VS1838 till stift 7 på Arduino. Anslut dessutom plus och minus strömförsörjning. IR -mottagaren använder 0,21 mA och kan också anslutas till plusströmförsörjningen efter FET -omkopplaren. Detta resulterar i en besparing, om klockan är på 50% av tiden, på 5 volt * 0,21 mA / 1000 * 12 timmar * 365 dagar * 1 / 0,85 effektiv strömförsörjning = 5,4 watt per år. Det här verkar inte så mycket, men varje bit hjälper.

Funktionen är enligt följande

Tryck på valfri knapp på IR -fjärrkontrollen och sedan på OK. Första gången du trycker kommer du att hamna i IR -behandlingen och andra gången kommer du att upptäcka om det var en berättigad begäran. Andra gången OK måste följa snabbt den första knapptryckningen för annars går den tillbaka igen. Jag gjorde denna konstruktion så att jag knappt fick den första koden korrekt avkodad och därför inte hamnade i IR -hanteringen.

Väl i IR -hanteringen tänds ett antal lysdioder för information, för förklaring läs vidare och se den första bilden.

Beskrivningen är för den enkla fjärrkontrollen men du kan använda valfri fjärrkontroll och definiera dina egna nycklar. Jag använde också en fjärrkontroll från Samsung.

De fyra första knapparna motsvarar de fyra översta raderna med lysdioder. Fyra lysdioder svänger åt vänster eller höger beroende på inställningen. När knapparna 1 till 4 trycks in, återställs tillståndet och lagras i minnet.

1 fast färg eller regnbågseffekt

2 sekunders avstängning eller andra blixt på

3 smiley av smiley på

4 DCF77 av eller DCF77 på

Knappens nummer visas på följande tangenter

5 smiley -räknare

6 regnbågespektrumbredd

7 fixa röd inställning

8 fixa grön inställning

9 fixa blå inställning

Rad 6, 7 och 8 på lysdioderna motsvarar nu det inställda värdet, rad 6 anger enheterna, rad 7 tiotal och rad 8 hundra. Varje rad börjar med värdet noll. Så den första ledningen i raden är 0 den andra är 1 osv.

0 tidsinställning

/\ ljusstyrka

När du trycker på 0 -knappen tänds de "tio" lysdioderna för att indikera att du vill ställa in tiden och när du trycker på 0 en andra gång visas den inställda tiden på displayen.

Tiden kan nu ställas in och visas på displayen.

Ställ in rätt tid och tryck på OK -knappen om minuten är densamma på en referensklocka.

Tiden justeras.

Om du inte använder knappen minuter eller timmar kommer ingen tidsändring att göras. Om du trycker på dem kommer tiden att ställas in omedelbart.

Värdet för knapparna 5 till 9 kan ändras med knapparna

rätt är plus 1

vänster är minus 1

framåt är plus 10

baksidan är minus 10.

och för tidsinställning

höger är plus 1 minut

vänster är minus 1 minut

framåt är plus 1 timme

omvänd är minus 1 timme

Det händer ibland att knapptryckningen inte känns igen eller utförs två gånger. Så var uppmärksam om inställningen går bra annars försök eller korrigera igen. Samsungs fjärrkontroll som jag också testade fungerade många gånger bättre än den (mycket billiga) enkla fjärrkontrollen.

När du ställer in färgen ser du ändringen direkt på hela displayen. För en webbplats med en översikt över färger se https://www.helderester.nl/kleurentabel.html. Du kan naturligtvis ange valfritt värde.

Om regnbågens spektrumbredd har ett värde på 0 är spektrumet mycket smalt och displayen har en färg som ändras ständigt.

Nackdelen med att ställa in tiden på detta sätt är att du inte kan beräkna en sommar / vinterövergång eftersom vi har datumet fel. Det spelar ingen roll för själva klockan eftersom vi inte använder den nu.

Steg 13: Vilka framsteg?

Vilka framsteg?
Vilka framsteg?

Vad som följer, ljud, om det lediga minnet fortfarande är tillräckligt.

Jag har redan högtalarlådorna. De är från en gammal bärbar dator.

Rekommenderad: