Բովանդակություն:

132 պիքսել ժամացույց ՝ 5 քայլ (նկարներով)
132 պիքսել ժամացույց ՝ 5 քայլ (նկարներով)

Video: 132 պիքսել ժամացույց ՝ 5 քայլ (նկարներով)

Video: 132 պիքսել ժամացույց ՝ 5 քայլ (նկարներով)
Video: The Light Gate Welcomes Aage Nost, August 28th, 2023 2024, Հուլիսի
Anonim
Image
Image
132 պիքսել ժամացույց
132 պիքսել ժամացույց

Ես, որքան հիշում եմ, տարված էի լուսադիոդներով և ժամանակով: Այս նախագծում ես ստեղծել եմ պատի մեծ ժամացույց, որը ցուցադրում է ընթացիկ ժամանակը `օգտագործելով 132 նեոպիքսելային LED- ներ, որոնք տեղադրված և փայլում են զուգված տախտակի միջով: Դա հիբրիդային անալոգային թվային է `Անհատական պիքսելով` յուրաքանչյուր ժամի, րոպեի և վայրկյանի համար:

Սա մինչ օրս ստանձնած ամենամեծ ծրագիրն էր, որի մասին սկսեցի մտածել 6 ամիս առաջ և գաղափարը կամաց -կամաց համախմբվեց: Ես իսկապես գոհ եմ արդյունքից և անհամբերությամբ սպասում եմ այն կիսել ձեզ հետ:

Քայլ 1: Պաշարների և գործիքների հավաքում:

Պաշարների և գործիքների հավաքում
Պաշարների և գործիքների հավաքում
Պաշարների և գործիքների հավաքում
Պաշարների և գործիքների հավաքում
Պաշարների և գործիքների հավաքում
Պաշարների և գործիքների հավաքում
Պաշարների և գործիքների հավաքում
Պաշարների և գործիքների հավաքում

Բաղադրիչներ

Այս նախագիծը կառուցված է իմ տեղական DIY խանութի հոբբիի վրա: Տախտակի չափը 850 մմ լայնություն է 500 մմ բարձրություն և 18 մմ խորություն:

Այս նախագծում օգտագործվող LED- ները 5050 WS2812b- ն են, որոնք տեղադրված են շրջանաձև PCB- երի վրա, մոտավորապես 9 մմ տրամագծով, հետևի մասում `զոդման բարձիկներով:

Ես օգտագործում եմ Arduino Pro Mini համատեղելի միկրո վերահսկիչ: Դա 5V 16 MHZ տարբերակն է: Ես ընտրեցի այս մեկը, քանի որ այն ունի չափազանց բարակ ձևավորում, փոքր ոտնաթաթի տպագրություն և բոլոր անհրաժեշտ նավահանգիստները ՝ գումարած պահեստային ապագա արդիականացման համար: Այն նաև 5 վոլտ է, այնպես որ ես կարող եմ օգտագործել մեկ սնուցման աղբյուր LED- ների, միկրո վերահսկիչի և RTC- ի համար

Keepingամանակի պահպանումը հոգում է RTC (Իրական ժամանակի ժամացույց) մոդուլը, որը պարունակում է DS3231 չիպը: Այս չիպը շատ ճշգրիտ է, այնպես որ ժամանակը չպետք է շատ շեղվի:

Նաև օգտագործվում է.

Մետաղալար Sոդման և տաք սոսինձ:

Գործիքներ:

Էլեկտրական փորվածք և փայտի փորվածքներ (10 մմ և 5 մմ)

Oldոդման երկաթ

Տաք սոսինձ ատրճանակ

մետաղալարերի հատվածներ

Dremel և plunge երթուղիչի պարագաներ

Քայլ 2: Նշում, հորատում և ուղղություն

Նշում, հորատում և ուղղություն
Նշում, հորատում և ուղղություն
Նշում, հորատում և ուղղություն
Նշում, հորատում և ուղղություն
Նշում, հորատում և ուղղություն
Նշում, հորատում և ուղղություն

Հորատում

  • Օգտագործելով նեղ եզր, գտեք տախտակի կենտրոնը ՝ հակառակ անկյուններից գիծ քաշելով:
  • Նշեք 3 շրջանակ ՝ օգտագործելով լար և գրիչ: Շրջանի արտաքին մասը պետք է լինի տախտակի եզրից մոտ 20 մմ հեռավորության վրա, իսկ մնացած 2 գծերը վերջին գծից 15 մմ -ով շարժվում են դեպի ներս:
  • Ես օգտագործեցի տպագիր ժամացույցի երես, որն ինձ օգնեց նշելու րոպեներից և վայրկյաններից յուրաքանչյուրի դիրքերը արտաքին 2 տողերում և ներքին գծի վրա:
  • Հորատեք 10 մմ անցքեր մոտավորապես 5 մմ խորությամբ յուրաքանչյուր ժամ, րոպե և վայրկյան:
  • Օգտագործեք 5 մմ տրամագծով փորվածք ՝ տախտակի վրա մեկ ժամ, րոպե և երկրորդ վայրկյան անցնելու համար:

Ուղղորդում

Չնայած այս քայլն անհրաժեշտ չէ, այն թույլ կտա ժամացույցը տեղավորել պատին:

  • Օգտագործելով երթուղիչ և շրջանագծի ուղեցույց երթուղու մետաղալարեր տախտակում
  • Նշեք և սահմանեք ընդմիջում RTC- ի և Micro Controller- ի համար:
  • Ուղղորդեք մի ալիք արտաքին գծերից դեպի ընդմիջում լարերի համար

Քայլ 3: Այնքան շատ զինվելը, կտրելը և մերկացնելը:

Այնքան շատ զինվոր, կտրում և մերկացում
Այնքան շատ զինվոր, կտրում և մերկացում
Այնքան շատ զինվոր, կտրում և մերկացում
Այնքան շատ զինվոր, կտրում և մերկացում
Այսքան զինվոր, կտրում և մերկացում
Այսքան զինվոր, կտրում և մերկացում

Այս հաջորդ հատվածը շատ ավելի հեշտ է ասել, քան անել: Իմ խորհուրդն այն կլինի, որ շտապեք: փորձեք գտնել համակարգ և մտեք ռիթմի մեջ:

LED- ներից յուրաքանչյուրին անհրաժեշտ է 5 վոլտ ներս, 5 վոլտ ելք, Տվյալների մուտքագրում, Տվյալների ելք, Գրունտ ներս և հող դուրս: ներառյալ միկրոկառավարիչի և RTC- ի իր ավելի քան 400 լարերը, բոլորը պոկված և զոդված երկու ծայրերում:

Կապույտ կպչուն նյութը շատ օգտակար է այս քայլի համար:

  • Սկսեցի միմյանց կողքի 2 լուսադիոդային լուսադիոդ տեղադրելով ՝ միմյանց միանալու համար անհրաժեշտ լարերի երկարությունը մշակելու համար:
  • Օգտագործելով մետաղալարերի 1 -ին կտորը որպես ուղեցույց, ես կտրեցի յուրաքանչյուր գույնի մետաղալարից 60 հատ:
  • Յուրաքանչյուր մետաղալարերի ծայրերից հանել 2 մմ թևք և թիթեղել դրանք զոդով:
  • LEDոդեք մի փոքրիկ բլուր զոդիչ LED բարձիկներից յուրաքանչյուրի վրա:
  • Լարերը կպցրեք LED- ներին `րոպեների և վայրկյանների համար կազմելով երկու շղթա` 60 հատ, իսկ ժամերի համար `12 շղթա: 5V- ի համար օգտագործել եմ կարմիր մետաղալար, տվյալների համար `դեղին, իսկ գետնին` կապույտ:
  • Հոգ տանել, որ յուրաքանչյուր Data Out (DOUT) - ը միանա հաջորդ LED- ի Data In (DIN) - ին
  • Վերջին շղթայի յուրաքանչյուր դոզայի դեպքում անհրաժեշտ չէ տվյալների հեռացում:

Բոլոր շղթաներն ավարտվելուց հետո լավ գաղափար է դրանք տեղադրելուց առաջ դրանք փորձարկել: Ես օգտագործեցի իմ Arduino UNO- ն և Adafruit NeoPixel Strand Test- ը `հաստատելու համար, որ յուրաքանչյուր LED- ն աշխատում է:

Ավելի երկար լարեր կպցրեք շղթաներից յուրաքանչյուրի վրա `5V, Ground և Data in:

Այս պահին պետք է լինի հինգ 5 վ լար, երեք տվյալների հաղորդալար `միացված Arduino Pro Mini- ին և 5 գրունտային լար:

Հեռացրեք 5 վ լարերի ծայրերից 5 մմ հեռավորության վրա և կպցրեք դրանք բոլորը միասին և կրկնում գրունտի լարերի համար:

Երեք շղթաներն ավարտելուց հետո միացրեք 5 Վ լարը Arduino Pro Mini- ի RAW կապում, ինչպես նաև RTC- ի համար VTC կապում: Arduino Pro Mini- ի և RTC- ի վրա GND- ի հիմնավորված մետաղալար և այնուհետև ևս 2 լար:

SCL RTC- ից A5 ՝ Pro Mini- ով

SDA RTC- ից A4 ՝ Pro Mini- ով

LED- ների տվյալների գծերը պետք է միացվեն հետևյալին.

  • Վայրկյաններ - Թվային փին 3:
  • Րոպեներ - DigitalPin 4
  • Oursամեր - DigitalPin 5

Քայլ 4: Տեղադրում

Տեղադրում
Տեղադրում
Տեղադրում
Տեղադրում
Տեղադրում
Տեղադրում

Soldոդումից հետո LED- ների տեղադրումն իրենց անցքերի մեջ պետք է ուղիղ առաջ ընթանա: LED- ները պետք է տեղադրվեն այնպես, որ տվյալները հետևի ժամացույցի սլաքի հակառակ ուղղությամբ պտտվեն, երբ հետևից նայում եք, քանի որ ծածկագիրը տեղադրված է առջևից:

Ես մի փոքր քանակությամբ տաք սոսինձ օգտագործեցի դրանք պահելու համար, քանի որ ցանկանում եմ, որ ապագայում այն չկարողանա փոխարինել մեկ LED:

Ես նաև օգտագործեցի տաք սոսինձ ՝ բոլոր լարերը կոկիկ և կոկիկ պահելու և տակառի միակցիչը տախտակին ամրացնելու համար:

Կան մի շարք arduino pro մինի ծրագրավորման ուղեցույցներ: Ես օգտագործում եմ արտաքին USB- ի սերիական փոխարկիչ մեթոդը `այս կոդը Arduino- ում բեռնելու համար.

Այս ծածկագիրը նաև RTC- ի ժամանակը կդարձնի այն կազմման ժամանակը: ուստի կարևոր է պարզապես ծածկել վերբեռնման կոճակը, որպեսզի այն համապատասխանի և հնարավորինս արագ վերբեռնվի:

Այս ծածկագրի մեծ մասը վերցվել է NeoPixel Ring Clock- ից ՝ Էնդի Դորոյի կողմից: Ոմանք Adafruit NeoPixel Strand Test- ից, իսկ ոմանք ՝ միասին:

Ձեզ հարկավոր կլինի տեղադրել մի քանի գրադարան: Դրանք հասանելի են Գրադարանների կառավարչից ՝ Arduino ծրագրակազմով:

Adafruit NeoPixel- ը ws2812b LED- ների համար

Հաղորդալար RTC- ի հետ I2C- ով խոսելու համար (սա ներկառուցված է որպես ստանդարտ)

և RTClib- ը `իմանալու համար, թե ինչ հարցնել RTC- ին

/********************************************* **************************NeoPixel Ring Clock ՝ Էնդի Դորոյի կողմից ([email protected]) https://andydoro.com/ringclock/ *********************************************** *************************

Վերանայման պատմություն

Ամսաթիվ Ինչով

20140320 AFD Առաջին նախագիծ 20160105 AFD Խունացած աղեղներ 20160916 AFD Trinket համատեղելի 20170727 AFD ավելացրեց STARTPIXEL- ը 3D պարիսպի համար, փոփոխական ելակետ, ավելացրեց ավտոմատ DST աջակցություն 20180424 AFD ՝ օգտագործելով DST գրադարանը https://github.com/andydoro/DST_RTC *

/ ներառել գրադարանի ծածկագիրը ՝

#ներառել #ներառել

#ներառում

// սահմանել կապում

#սահմանել SECPIN 3 #սահմանել MINPIN 4 #սահմանել HOUPIN 5 -ը

#սահմանեք ՊԱՀՈՍՏՈ //ԹՅՈ 20Ն 20 // սահմանեք առավելագույն պայծառություն

#սահմանի r 10

#սահմանել g 10 #սահմանել b 10 RTC_DS3231 rtc; // Ստեղծեք ժամացույցի օբյեկտ

Adafruit_NeoPixel շերտ = S Adafruit_NeoPixel (60, SECPIN, NEO_GRB + NEO_KHZ800); // շերտի օբյեկտ

Adafruit_NeoPixel ժապավեն M = Adafruit_NeoPixel (60, MINPIN, NEO_GRB + NEO_KHZ800); // շերտի օբյեկտ Adafruit_NeoPixel stripH = Adafruit_NeoPixel (24, HOUPIN, NEO_GRB + NEO_KHZ800); // շերտի օբյեկտի բայթ pixelColorRed, pixelColorGreen, pixelColorBlue; // պահում է գունային արժեքներ

void setup () {

Wire.begin (); // Սկիզբ I2C rtc.begin (); // սկսել ժամացույցը

Serial.begin (9600);

// սահմանել pinMode pinmode (SECPIN, OUTPUT); pinMode (MINPIN, OUTPUT); pinMode (HOUPIN, OUTPUT);

եթե (rtc.lostPower ()) {

Serial.println («RTC- ն կորցրեց էներգիան, թույլ տվեք սահմանել ժամանակը»); // հաջորդ տողը RTC- ն սահմանում է այս ուրվագծի կազմման ամսաթվի և ժամի rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Այս տողը սահմանում է RTC- ն հստակ ամսաթվով և ժամով, օրինակ `սահմանելու համար // 2014 թ. Հունվարի 21 -ին, ժամը 3 -ին, դուք կզանգահարեք ՝ // rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0)); }

stripS.begin ();

stripM.begin (); stripH.gegin (); //strip.show (); // Նախագծել բոլոր պիքսելները «անջատված»

// գործարկման հաջորդականություն

ուշացում (500);

colorWipeS (շերտեր. Գույն (0, գ, 0), 5); // Blue colorWipeM (stripM. Color (r, 0, 0), 5); // Կապույտ գույնWipeH (շերտագիծ. Գույն (0, 0, բ), 50); // Կապույտ

ուշացում (1000);

DateTime theTime = rtc.now (); // հաշվի է առնում DST բայթ secondval = theTime.second (); // ստանալ վայրկյաններ բայթ րոպեական = theTime.minute (); // ստանալ րոպե int hourval = theTime.hour (); ժամային ժամ = ժամային ժամ % 12; // Այս ժամացույցը 12 ժամ է, եթե 13-23, փոխակերպեք 0-11`

for (uint16_t i = 0; i <secondval; i ++) {stripS.setPixelColor (i, 0, 0, b); stripS.show (); ուշացում (5); }

for (uint16_t i = 0; i <րոպեանոց; i ++) {stripM.setPixelColor (i, 0, g, 0); stripM.show (); ուշացում (5); }

for (uint16_t i = 0; i <hourval; i ++) {stripH.setPixelColor (i, r, 0, 0); stripH.show (); ուշացում (5); }

}

դատարկ շրջան () {

// ժամանակ ստանալ

DateTime theTime = rtc.now (); // հաշվի է առնում DST- ն

բայթ secondval = theTime.second (); // ստացեք վայրկյաններ

բայթ minuteval = theTime.minute (); // ստանալ րոպեներ int hourval = theTime.hour (); // ստանալ ժամային ժամ = ժամային ժամ 12 %; // Այս ժամացույցը 12 ժամ է, եթե 13-23, փոխակերպեք 0-11`

stripS.setPixelColor (երկրորդ կարգ, 0, 0, 20); stripS.show (); ուշացում (10); if (secondval == 59) {for (uint8_t i = stripS.numPixels (); i> 0; i--) {stripS.setPixelColor (i, 0, g, 0); stripS.show (); ուշացում (16);}}

stripM.setPixelColor (րոպե, 0, գ, 0);

stripM.show (); ուշացում (10); if (secondval == 59 && minuteval == 59) {for (uint8_t i = stripM.numPixels (); i> 0; i--) {stripM.setPixelColor (i, r, 0, 0); stripM.show (); ուշացում (16);}}

stripH.setPixelColor (ժամային ժամ, r, 0, 0);

stripH.show (); ուշացում (10); if (secondval == 59 && minuteval == 59 && hourval == 11) {for (uint8_t i = stripH.numPixels (); i> 0; i--) {stripH.setPixelColor (i, 0, 0, բ); stripH.show (); ուշացում (83);}} // սերիական վրիպազերծման համար Serial.print (hourval, DEC); Serial.print (':'); Serial.print (րոպե, DEC); Serial.print (':'); Serial.println (երկրորդ կարգ, DEC); }

// Կետերը մեկը մյուսի հետևից լրացրու գույնով

void colorWipeS (uint32_t c, uint8_t սպասել) {for (uint16_t i = 0; i <stripS.numPixels (); i ++) {stripS.setPixelColor (i, c); stripS.show (); ուշացում (սպասել); }}

դատարկ գույնWipeM (uint32_t գ, uint8_t սպասել) {

for (uint16_t i = 0; i <stripM.numPixels (); i ++) {stripM.setPixelColor (i, c); stripM.show (); ուշացում (սպասել); }}

դատարկ գույն WipeH (uint32_t գ, uint8_t սպասել) {

for (uint16_t i = 0; i <stripH.numPixels (); i ++) {stripH.setPixelColor (i, c); stripH.show (); ուշացում (սպասել); }}

Քայլ 5: Վերջնական հպումներ

Image
Image
Վերջնական հպումներ
Վերջնական հպումներ

Մնում է միայն RTC- ն և Micro Controller- ը իջեցնել ներքևի փոսում:

Ես տեղադրել եմ RTC մարտկոցի կողմը, որպեսզի անհրաժեշտության դեպքում կարողանամ հեշտությամբ փոխել մարտկոցը:

5 վ լարերը միացրեք միակցիչի + կողմին, իսկ գետինը `կողային

Միացրու ուժը:

Ես ունեմ միացված USB մարտկոցի բանկին, բայց USB հեռախոսի լիցքավորիչը նույնքան լավ կաշխատի:

Նշում:

LED- ների պայծառությունը սահմանվում է ծածկագրում: Այն սահմանվել է ցածր `ընթացիկ վիճակահանությունը ցածր պահելու համար: Ամբողջ պայծառության դեպքում, լուսավորված բոլոր LED- ների դեպքում, այն կարող է քաշել գրեթե 8 ամպեր: Ընթացիկ կարգավորմամբ այն 1 -ից պակաս է:

Ocksամացույցների մրցույթ
Ocksամացույցների մրցույթ
Ocksամացույցների մրցույթ
Ocksամացույցների մրցույթ

Երկրորդ տեղը զբաղեցնող ժամացույցների մրցույթում

Խորհուրդ ենք տալիս: