Turinys:

LED laikrodis naudojant neopikselius: 4 žingsniai (su paveikslėliais)
LED laikrodis naudojant neopikselius: 4 žingsniai (su paveikslėliais)

Video: LED laikrodis naudojant neopikselius: 4 žingsniai (su paveikslėliais)

Video: LED laikrodis naudojant neopikselius: 4 žingsniai (su paveikslėliais)
Video: Part 1 - Tom Swift and His Submarine Boat Audiobook by Victor Appleton (Chs 1-12) 2024, Liepa
Anonim
LED laikrodis naudojant neopikselius
LED laikrodis naudojant neopikselius
LED laikrodis naudojant neopikselius
LED laikrodis naudojant neopikselius
LED laikrodis naudojant neopikselius
LED laikrodis naudojant neopikselius
LED laikrodis naudojant neopikselius
LED laikrodis naudojant neopikselius

Sveiki atvykę į mano instrukciją, kaip padaryti LED laikrodį naudojant 60 neopikselių.

Rasite 3 PDF priedus, skirtus laikrodžio segmentams, kitą - pagrindui, o galiausiai - šabloną, padedantį klijuoti skyrius.

Taigi, norint tai padaryti, jums reikės šių dalykų

  • 60 neopikselių žiedas yra 4 ketvirčiuose. ieškokite „ws2812 ring 60“(£ 12.00)
  • RTC paieška „DS3231 modulis“(2,50 £)
  • „Arduino Nano“(4 svarai)
  • 3mm/1/8 "fanera.
  • vielos gabaliukai. tikiuosi, kad aplinkui jų bus?
  • 5 V USB maitinimo blokas. Tipas, kurį jūsų vaikai sunaikins jungtį.

Žemiau yra elementai, maitinami „Lipo“akumuliatoriumi, tačiau po bandymų laikrodis sunaudojo per daug energijos, todėl akumuliatorius buvo numestas į elektros tinklo USB maitinimo šaltinį.

  • DC-DC keitiklio paieška "boost converter" (£ 3)
  • Įkrovimo grandinė TP4056 ieškokite „tp4056“(£ 2)
  • LiPo 1000Mah vieno elemento. ieškokite „1000mah lipo 3.7“ARBA „503450 lipo“(£ 8,00)

LiPo numeris yra 503450 ir gali būti malonu žinoti, kad tai reiškia 50 mm ilgio 34 mm pločio ir 5,0 gylio.

1 žingsnis: medienos gabaliukai

Medienos gabaliukai
Medienos gabaliukai
Medienos gabaliukai
Medienos gabaliukai
Medienos gabaliukai
Medienos gabaliukai

Nuotraukose turėtumėte matyti, kad išspausdinau dizainą ir įklijavau fanerą. Tai, kas gali būti neaišku, yra tai, kad iš karto iškirpau 3 sekcijas, o apatinė dalis iš pradžių išpjaunama aplink perimetrą, tada viena dalis pašalinama (iš nugaros), o likusiuose dviejuose skyriuose išpjaunama skylė, tada kita dalis pašalintas, paliekant tik priekinį antgalį, tada buvo nutrauktas laidų lizdas.

Kai visi gabaliukai bus išpjauti, pirmiausia turėtumėte patikrinti, kaip jie visi dera tarpusavyje, tada klijuoti. Aš sukūriau 3 sluoksnius ant laikrodžio plano, kad įsitikinčiau, jog viskas teisingai apskrito. Taip pat įsitikinkite, kad apatiniai gabalai yra teisingos orientacijos, o visa vidurinė skiltelė yra sumontuota aukštyn kojomis, kad aplenktumėte sąnarius.

Priekinėse sekcijose esančios skylės leidžia įlituoti ketvirčių lituotas jungtis, o apatinė - laidus.

Nuotraukų serijoje taip pat parodyta, kaip surenkamas pagrindas.

2 žingsnis: LED žiedo prijungimas

LED žiedo prijungimas
LED žiedo prijungimas
LED žiedo prijungimas
LED žiedo prijungimas
LED žiedo prijungimas
LED žiedo prijungimas
LED žiedo prijungimas
LED žiedo prijungimas

Nėra daug ką pasakyti apie šį žingsnį, tačiau tik tuo atveju, jei nenaudojote WS2812LED juostelės, jie yra protingi, todėl kiekvienas turi duomenis įeinant ir išvedant. 15 šviesos diodų lankuose PCB tvarko visus ryšius, tačiau kai ateinate prisijungti prie sekcijų, turite atlikti maitinimo jungtis ir duomenis. Jūs negalite suklysti jungčių, nes jos yra apskritime, tačiau, kai baigsite ratą, duomenų įvesties/išvesties duomenų trūksta vienos nuorodos, kad galėtumėte prijungti laidus prie duomenų įvesties. Ten, kur laidai prijungti prie duomenų IN, bus pirmasis šviesos diodas arba jis teisingai pažymėtas nuliu.

Man buvo įdomu, kaip buvo geriausias būdas pritvirtinti šviesos diodų žiedą prie medžio žiedo? bet galų gale nusprendžiau naudoti kylantį laidą ir stakles aplink apskritimą, kiekvieną kartą praleisdamas šviesos diodus.

3 žingsnis: „Arduino Nano“ir „Power“prijungimas

„Arduino Nano“ir „Power“laidų prijungimas
„Arduino Nano“ir „Power“laidų prijungimas
„Arduino Nano“ir „Power“laidų prijungimas
„Arduino Nano“ir „Power“laidų prijungimas
„Arduino Nano“ir „Power“laidų prijungimas
„Arduino Nano“ir „Power“laidų prijungimas

Iš pradžių šiam projektui nusprendžiau naudoti „LiPo“, bet kai jį išbandžiau, akumuliatorius išsikrovė per naktį. Iš pradžių maniau, kad akumuliatorius galėjo būti kvailas, todėl išmatavau srovę ir atradau, kad grandinė traukia 73 mA srovę, o tai reiškia, kad akumuliatoriuje jo bus daugiau. Tiesą sakant, aš išmatavau srovę akumuliatoriuje (prieš padidinimo keitiklį) ir atradau, kad ji yra didesnė nei 110 mA. Taigi buvo akivaizdu, kad šis laikrodis neveiks iš baterijos.

Taigi aš nusprendžiau naudoti 5V USB įkroviklį. Aš linkęs turėti daugybę negyvų USB įkroviklių, nes jungtys piktnaudžiauja dviem mažais vaikais.

Taigi, kadangi mes naudojame WS2812 šviesos diodus, turime tik 3 jungtis prie „Arduino Nano“.

  • Galia
  • Gruntas
  • Duomenys IN. Oranžinė iki D2 „Nano“

Toliau turime RTC, tai tik 4 laidai.

  • Galia 5 voltai
  • Gruntas
  • SCL (I2C laikrodis) nuo mėlynos iki A5 „Nano“
  • SDA (I2C duomenys) nuo geltonos iki A4 „Nano“

Galiausiai mums reikia maitinimo, o tai patenka į 5 V maitinimo jungtį „Nano“. „Vin“yra sukurta taip, kad įtampa būtų didesnė nei 5 voltai (ty 7–12 voltų) ir žemė.

4 žingsnis: programa

Man labai patinka programavimas, aš tiesiog nelabai moku.

1 problema

Sekundės ir minutės teisingai pateikiamos kaip skaičius nuo 0 iki 59. Tačiau pirmasis šviesos diodas, taigi ir nulis, yra apačioje. Taigi tai reikėjo ištaisyti.

void correctPos (int A)

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

2 problema

Prieš rodydamas naują padėtį, bandžiau išvalyti visus šviesos diodus, tačiau dėl to šviesos diodai mirksi. Taigi nusprendžiau įjungti kitą šviesos diodą ir tada išjungti ankstesnį. Tai puikiai pavyko ?? NE, nes jei nauja pozicija būtų lygi nuliui, ji bandytų išjungti -1. todėl tuo pačiu metu buvo sprendžiama.

void delete Ankstesnis (int B)

// ištrinkite ankstesnį indikatorių, jei jis buvo nulis, tada // išjunkite 59, tik atimkite 1 // ir išjunkite tą. {if (B == 0) {strip.setPixelColor (59, 0, 0, 0); // Viskas išjungta} else {strip.setPixelColor (B - 1, 0, 0, 0); // all off}}

3 problema

Tai, kas buvo padaryta aukščiau, veikė tikrai gerai, kol naujoji antroji pozicija buvo senosios minutės vietoje. Tai reiškė, kad minutė, kuri buvo atnaujinta po sekundžių, ją išjungė! Tas pats ir valandai/minutei

jei (sek == min-1)

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

4 problema

Viskas pradeda atrodyti gerai, todėl sumaišykime spalvas, kai jos patenka į tą pačią padėtį?

jei (min. == sek.)

{strip.setPixelColor (min., 15, 13, 0); // žalia ir raudona, kad būtų geltona. }

5 problema

Valandos prasideda 24 valandų formatu. todėl pirmiausia reikia pataisyti

jei (valandos> 12)

{valandos = valandos -12; }

6 problema

Nepamirškime, kad per parą yra 24 valandos ir aš turiu 60 šviesos diodų. Lengva, tikrai 5 kartus

valandos = valandos * 5;

7 problema

Atlikę aukščiau minėtus veiksmus, dabar turime šokinėti 4 šviesos diodus, kas atrodytų daug geriau, jei būtų naudojami visi šviesos diodai ir teisingai parodytos valandos dalys? Vėlgi, tai buvo lengva išspręsti, aš tiesiog pridėjau pradinį minučių skaičių, padalytą iš 12, prie valandų.

valandos = valandos + (addMin/12);

8 problema

Kai valandos ar minutės indikatorius yra apačioje, sekundės dingsta vienai sekundei.

valandos = jei (minutės == 0)

{if (secs == 59) {strip.setPixelColor (59, 0, 30, 0); // green}} if (valandos == 0) {if (sek. == 59) {strip.setPixelColor (59, 0), 30, 0); // žalia}}

9 problema

Laiko nustatymas. Aš nusprendžiau, kad ši konstrukcija būtų labai paprasta, todėl neįtraukiau mygtukų, skirtų laikui reguliuoti. Taigi tereikia prijungti laikrodį prie kompiuterio ir įkelti naują laiką. Tiesiog pašalinkite komentarą žemiau ir nustatykite reikiamą laiką, tada įkelkite programą. Kai ištaisysite klaidą, pakartokite eilutę ir persiųskite programą, o jei prarasite maitinimą, ji vėl paleis sąranką ir vėl įkels seną laiką.

// 2020 m. Balandžio 12 d. 23.20 val. Skambintumėte:

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

Rekomenduojamas: