Inhoudsopgave:

LED-klok met Neopixels - Ajarnpa
LED-klok met Neopixels - Ajarnpa

Video: LED-klok met Neopixels - Ajarnpa

Video: LED-klok met Neopixels - Ajarnpa
Video: TOP 10 neopixel ws2812b projects (2018) 2024, Juli-
Anonim
LED-klok met Neopixels
LED-klok met Neopixels
LED-klok met Neopixels
LED-klok met Neopixels
LED-klok met Neopixels
LED-klok met Neopixels
LED-klok met Neopixels
LED-klok met Neopixels

Welkom bij mijn instructable over het maken van een LED-klok met 60 Neopixels.

U vindt 3 bijgevoegde PDF's, een is voor de segmenten van de klok, een andere is voor de basis en als laatste is er een sjabloon om te helpen bij het aan elkaar lijmen van de secties.

Dus om dit te voltooien, heb je het volgende nodig:

  • Ring van 60 neopixels wordt geleverd in 4 kwarten. zoek naar "ws2812 ring 60" (£12,00)
  • RTC-zoekopdracht voor "DS3231-module" (£ 2,50)
  • Arduino Nano (€ 4)
  • 3 mm/1/8 "multiplex.
  • stukjes draad. hopelijk heb je er nog wat?
  • 5v USB-voedingseenheid. Het type waarop uw kinderen de connector hebben vernietigd.

Hieronder staan de Lipo-items op batterijen, maar na het testen verbruikte de klok te veel stroom, dus de batterij viel ten gunste van een USB-netvoeding.

  • dc-dc converter zoek "boost converter" (£3)
  • Oplaadcircuit TP4056 zoek "tp4056" (£ 2)
  • LiPo 1000Mah enkele cel. zoek naar "1000mah lipo 3.7" OF "503450 lipo" (£8.00)

Het LiPo-nummer is 503450 en het is misschien leuk om te weten dat dit 50 mm lang, 34 mm breed en 5,0 diep betekent.

Stap 1: De houtbits

De houtbeetjes
De houtbeetjes
De houtbeetjes
De houtbeetjes
De houtbeetjes
De houtbeetjes

Je zou op de foto's moeten kunnen zien dat ik het ontwerp heb uitgeprint en het ook op het triplex heb geplakt. Wat misschien niet voor de hand liggend is, is dat ik 3 secties tegelijk heb uitgesneden en het onderste gedeelte is eerst rond de omtrek uitgesneden, dan wordt een sectie verwijderd (van de achterkant) en vervolgens is het gat uitgesneden in de resterende twee secties en vervolgens een andere sectie verwijderd en liet alleen het voorste bitje over, waarna de gleuf voor de draden werd doorgesneden.

Als alle stukjes zijn uitgesneden, moet je eerst kijken hoe ze allemaal in elkaar passen en ze vervolgens allemaal lijmen. ik heb de 3 lagen bovenop een plattegrond van de klok opgebouwd om er zeker van te zijn dat alles correct cirkelvormig was. Zorg er ook voor dat u de onderste bits in de juiste richting plaatst en dat de volledige middelste plak ondersteboven wordt gemonteerd, zodat u over de verbindingen lapt.

De gaten in de voorste secties zorgen ervoor dat de soldeerverbindingen in de kwarten erin kunnen zitten. en de onderste sectie laat de draden door.

De serie foto's laat ook zien hoe de basis in elkaar zit.

Stap 2: Bedrading van de LED-ring

Bedrading van de LED-ring
Bedrading van de LED-ring
Bedrading van de LED-ring
Bedrading van de LED-ring
Bedrading van de LED-ring
Bedrading van de LED-ring
Bedrading van de LED-ring
Bedrading van de LED-ring

Er valt niet veel te zeggen over deze stap, maar voor het geval je nog geen strip WS2812LED's hebt gebruikt, zijn ze intelligent, dus elke heeft een in- en uitgang van gegevens. In de bogen van 15 LED's handelt de printplaat alle verbindingen af, maar als je de secties wilt aansluiten, moet je de stroomaansluitingen en de gegevens maken. Je kunt de verbindingen niet verkeerd krijgen omdat ze in een cirkel zijn, maar als je de cirkel hebt voltooid, zou er een link moeten ontbreken op de data IN / OUT zodat je de draden op de data IN kunt aansluiten. Waar de draden worden aangesloten op de gegevens IN, is de eerste LED of omdat deze correct is genummerd met NUL.

Ik vroeg me af hoe ik de ring van LED's het beste aan de houten ring kon bevestigen? maar uiteindelijk besloot ik om opdoemend koord te gebruiken en weefgetouw rond de omtrek waarbij ik elke keer een LED oversloeg.

Stap 3: Bedrading van de Arduino Nano en voeding

Bedrading van de Arduino Nano en voeding
Bedrading van de Arduino Nano en voeding
Bedrading van de Arduino Nano en voeding
Bedrading van de Arduino Nano en voeding
Bedrading van de Arduino Nano en voeding
Bedrading van de Arduino Nano en voeding

Ik besloot aanvankelijk om een LiPo voor dit project te gebruiken, maar toen ik het uitprobeerde, liep de batterij 's nachts leeg. In eerste instantie dacht ik dat de batterij misschien duff was, dus ik mat de stroom en ontdekte dat het circuit 73mA trok, wat betekent dat het bij de batterij meer zou zijn. In feite heb ik de stroom bij de batterij gemeten (vóór de boost-converter) en ontdekte dat deze meer dan 110mA was. Het was dus duidelijk dat deze klok niet op een batterij zou lopen.

Dus in plaats daarvan kies ik ervoor om een 5V USB-oplader te gebruiken. Ik heb de neiging om heel veel lege USB-opladers in de buurt te hebben omdat de connectoren worden misbruikt door twee kleine kinderen.

Dus omdat we WS2812 LED's gebruiken, hebben we maar 3 verbindingen met de Arduino Nano.

  • Stroom
  • Grond
  • Gegevens IN. Oranje naar D2 op Nano

Vervolgens hebben we de RTC, deze heeft slechts 4 draden.

  • Vermogen 5 Volt
  • Grond
  • SCL (I2C Clock) Blauw naar A5 op Nano
  • SDA (I2C-gegevens) Geel naar A4 op Nano

Ten slotte hebben we stroom nodig en dit gaat naar de 5 V-voedingsaansluiting op de Nano. De Vin is ontworpen om een spanning te hebben die groter is dan 5 volt (d.w.z. 7-12 volt) en de aarde.

Stap 4: Het programma

Ik vind programmeren heel leuk, alleen ben ik er niet zo goed in.

Probleem 1

De seconden en minuten worden correct weergegeven als een getal van 0-59. De eerste LED en dus de nul staat echter onderaan. Dit moest dus worden gecorrigeerd.

ongeldig correctPos(int A)

{ als (A 30) { A = A - 31; } } temp = A; }

Probleem 2

Ik heb geprobeerd alle LED's te wissen voordat de nieuwe positie werd weergegeven, maar hierdoor gingen de LED's knipperen. Dus besloot ik om de volgende LED aan te zetten en vervolgens de vorige uit te schakelen. Dit werkte prima?? NOPE, want als de nieuwe positie nul was, zou hij proberen -1 uit te schakelen. dus dat werd tegelijk aangepakt.

void deleteVorige(int B)

// verwijder de vorige led, als deze nul was, // zet 59 uit, anders trek je gewoon 1 af // en zet die uit. {if (B == 0) { strip.setPixelColor(59, 0, 0, 0);// Alles uit} else { strip.setPixelColor(B - 1, 0, 0, 0);//alles uit}}

Probleem 3

Het bovenstaande werkte heel goed totdat de nieuwe tweede positie in de plaats kwam van de oude minuut. Wat betekende dat de minuut die na de seconden werd bijgewerkt, hem uitschakelde! Hetzelfde geldt ook voor het uur/minuut

als (sec == min-1)

{ strip.setPixelColor (min-1, 0, 30, 0); }

Probleem 4

Dingen beginnen er goed uit te zien, dus laten we de kleuren mengen als ze in dezelfde positie vallen?

als (min == sec)

{ strip.setPixelColor (mins, 15, 13, 0);// groen en rood om geel te maken. }

Probleem 5

De uren beginnen als 24-uurs formaat. dus dit moet eerst worden gecorrigeerd

indien (uren > 12)

{ uur = uur -12; }

Probleem 6

En laten we niet vergeten dat een dag 24 uur heeft en dat ik 60 LED's heb. Gemakkelijk keert het echt met 5

uur = uur * 5;

Probleem 7

Nadat we het bovenstaande hebben gedaan, hebben we nu het uur dat 4 LED's springt. Het zou er een stuk beter uitzien als het alle LED's zou gebruiken en fracties van een uur correct zou weergeven? Nogmaals, dit was een gemakkelijke oplossing. Ik heb zojuist het oorspronkelijke aantal minuten gedeeld door 12 aan de uren toegevoegd.

uren = uren + (addMin/12);

Probleem 8

Wanneer de uren- of minuten-led onderaan staat, verdwijnen de seconden een seconde eerder.

uur = als (min == 0)

{if (secs == 59) { strip.setPixelColor(59, 0, 30, 0);//groen} } if (uren == 0) {if (secs == 59) { strip.setPixelColor(59, 0, 30, 0);//groen } }

Probleem 9

De tijd instellen. Ik besloot om deze build heel eenvoudig te houden, dus bevatte geen knoppen om de tijd aan te passen. Het is dus gewoon een kwestie van de klok op je computer aansluiten en een nieuwe tijd laden. Verwijder eenvoudig het commentaar in het onderstaande gedeelte en stel de gewenste tijd in en laad vervolgens het programma. Als de regel correct is, becommentarieert u de regel opnieuw en verzendt u het programma opnieuw, anders als u de stroom verliest, wordt de installatie opnieuw uitgevoerd en wordt de oude tijd opnieuw geladen.

// 12 april 2020 om 23:20 bel je:

//rtc.adjust(DateTime(2020, 4, 12, 23, 20, 0));

Aanbevolen: