Բովանդակություն:
- Քայլ 1: Առջևի շերտ
- Քայլ 2. Ուղեցույցի շերտի ձևավորում
- Քայլ 3. Կառուցեք ուղեցույցի շերտը
- Քայլ 4: LED- ների միացում
- Քայլ 5: Էլեկտրոնիկայի նախագծում
- Քայլ 6: Էլեկտրոնիկայի միացում
- Քայլ 7: mingրագրավորում
- Քայլ 8: Բնակարան
- Քայլ 9. Փակման խոսքեր
Video: Լոնդոնի մետրոյի քարտեզի ժամացույց. 9 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:45
2014 -ին, Լոնդոնում 3D տպագրության խորհրդատվության պրակտիկայի ընթացքում և իրենց Stratasys մեքենայի միջոցով գունավոր լիտոֆաններով փորձի միջոցով, ես նախագծում եմ իմ սեփական հեռավոր նվերը, խողովակների գծերի գունավոր 3D տպագրություն `իրենց գրասենյակներում: Ես վճռել էի դրանից ինչ -որ բան պատրաստել: 2 տարի անց ՝ 2016 թվականին, ես ունեի իմ սեփական 3D տպիչը և սկսեցի աշխատել այն դարձնելով ժամացույց:
Մանկության տարիներին ես, այնուամենայնիվ, Tokyo Flash թվային ժամացույցները երբևէ եղած ամենալավ բաներն էին, և դրանք դաջված էին դիզայնի ոգեշնչման կետը:
Եվ հիմա ընդամենը 4 տարի ընդմիջում է եղել, մինչև որ ես սկսեցի գրել այն:
Թեև ճշգրիտ հրահանգները դժվար կլինի կրկնել, և վերջին մի քանի տարում հոբբիստական PCB- ի արտադրության ծախսերի նվազումը կարող է հնացած դարձնել LED տեղադրման իմ ճշգրիտ մեթոդը: Հուսով եմ, որ կիսված գաղափարները կարող են հանգեցնել նրան, որ ուրիշները տարօրինակ ժամացույցներ պատրաստեն բարակ առարկաներից:
Քայլ 1: Առջևի շերտ
Ինչպես նշվեց ներածության մեջ, սա գունավոր 3D տպագրություն էր, ես կարծում եմ, որ Stratasys մեքենան օգտագործել է փոշու մահճակալ և թանաքի փոփոխված փամփուշտ ՝ ամրացնողի և պիգմենտի համար:
Ֆայլը կորել է պատմության մեջ, բայց այս շերտը կարող է լինել ամեն ինչ, լուսանկարը կամ մեկ գունավոր լիտոֆանը հրաշքներ կգործեն:
Այս հատվածը պատրաստվել է 3DS max- ով 2014 թվականին, բայց այսօր կան առցանց գործիքներ ՝ պատկերը պայծառությունից ելնելով SLT- ի վերածելու համար
Քայլ 2. Ուղեցույցի շերտի ձևավորում
Այստեղ մենք որոշում ենք նախագծի բարդությունը և ժամանակը կարդալու մեթոդը: Պատկերները ցույց են տալիս 2 գաղափարները, որոնց հետ ես խաղում էի:
Դրանք կատարվել են դիզայնի սկանավորման և ներկերի լանդշաֆտում գծեր գծելու միջոցով:
Սա այնքան էլ ընթեռնելի ժամացույց չէ, բայց ես նախընտրեցի ամբողջ օրը տողերը լրացնելու գաղափարը, ինչը դարձավ դիզայնի նպատակը:
Երկուական հաշվարկը կենսունակ մեթոդ է LED- ների քանակը նվազեցնելու համար, և այն կբարելավի ընթերցանությունը, եթե երկուականը լինի քո ջեմը, բայց դա խաթարեց իմ «լրացման տողերի» գաղափարը, ուստի այս նախագծի տարբերակ չէր:
Տոկիոյի Flash ժամացույցների վրա սովորական է նվազեցնել LED- ների քանակը, բայց մեկ հատվածը հաշվելով 3 -ով կամ 5 -ով, այնուհետև մեկ այլ լցված ամեն անգամ, երբ այդ հատվածը լրացվում է, ես օգտագործում էի այս տեխնիկան րոպեների ընթացքում `դրանք 60 -ից 20 գումարած 2. I վայրկյանների ընթացքում այնքան էլ չէր անհանգստանում դրա ճշգրտությամբ:
Քայլ 3. Կառուցեք ուղեցույցի շերտը
LED- ների համար նախատեսված այս ուղեցույցը ունի 2 նպատակ, այն LED- ները պահում է տեղում և կանխում դրանց միջև թափվելը
Այն գծված էր որպես շերտ Inkscape- ի վրա անմիջապես սկանավորման վերևում, որը ես օգտագործում էի դիզայնի դասավորության համար: Մինչև տպիչս ուղարկելը բլենդերի մեջ ավելացվել է 1 մմ հաստություն:
Սա ամենադժվար տպումներից մեկն էր, որ ես պետք է կատարեի իմ խղճուկ Makibox A6- ի վրա, մասը տպագրված էր որովայնի խոռոչով, ուստի մի տոննա ացետոնային խառնուրդ օգտագործվեց `այն նվազագույն ճկումով ամրացնելով կառուցապատման հարթակին: Բարեբախտաբար, այս հատվածը չի երևում վերջնական արտադրանքի վրա
Վերջնական պատկերը ցույց է տալիս, որ այն պահվում է մինչև լամպը ՝ տարածությունը ստուգելու համար:
Հետևյալ տեսանկյունից, լույսերի միջև գծի երկայնքով թափվելը կարող է իրականում նախընտրելի լինել տեսողականի համար, դժվար չէ կարդալ, դա կարելի է հասնել յուրաքանչյուր լույսի կարճ կողմերում ուղեցույցին մի ճեղք ավելացնելու միջոցով:
Քայլ 4: LED- ների միացում
Բռունցքի պատկերը ցույց է տալիս թեստի տպագրությունը, որը ես արել եմ անցքերի չափերը ստուգելու համար, ես նպատակ ունեի, որ LED- ն մի փոքր ուժով սերտորեն տեղավորվի ժանյակի մեջ, այնուհետև ուղիղ շերտը դնելիս ձեռքով տեղադրվեց:
Իմ 3D տպիչի ցածր հանդուրժողականության պատճառով, ոմանք թուլացել էին և կպչում էին սոսնձի կպչուն տեղում, իսկ մյուսները չափազանց ամուր էին, բայց խրախուսվում էին տեղում ՝ կպցնելով LED- ը, երբ միանում էին, սա իրականում ավելի հարմար էր, քան ճիշտ չափի փոս, որը վարձակալության հանել պետք է մի անգամ միացնելով:
Հաղորդալարերի քանակը նվազեցնելու համար LED- ները զոդվեցին 7 -ով 8 -ի մատրիցով, ինչը նշանակում է, որ բոլոր 55 LED- ները կարող են վերահսկվել միայն 13 կապով, ես ունեի այս միացումներից յուրաքանչյուրի ձեռքով նկարված քարտեզ, որը, ցավոք, կորել է:
Էմալապատ մետաղալարն օգտագործվել է, որպեսզի հատվածները կարողանան տեղում բացվել ՝ միացումը երկաթով տաքացնելով և կապով կապելուց առաջ:
Այս գործընթացը շատ ժամանակատար էր: Ես խորհուրդ կտայի նախագծել PCB
Քայլ 5: Էլեկտրոնիկայի նախագծում
Իմ նախնական պլանն էր օգտագործել Arduino միկրոկառավարիչ RTC- ով, բայց ընտրեցի ESP8266- ը Node MCU D1 տախտակի վրա, քանի որ դա թույլ էր տալիս ավտոմատ լուսավորություն և WIFI- ի վերահսկման ներուժ:
Քորոցների քանակը հետագայում նվազեցնելու համար ես ունեի LED- ների կատարյալ քանակ, որպեսզի կարողանայի օգտագործել MAX7219 (որը կարող է աշխատել մինչև 64 LED):
Այս IC- ն սովորաբար օգտագործվում է LED 7 հատվածի էկրաններ վարելու համար, սակայն այն շատ նման էր իմ գործին, լուսավորելով կամայական թվով LED- ներ `նվազագույն թրթռոցով, այն նույնիսկ վերահսկելի պայծառություն ունի:
Ես որոշեցի օգտագործել նախատախտակը էլեկտրագծերի համար, բայց արծիվը օգտակար էր մասերի տեղադրման և էլեկտրագծերը հասկանալու համար
Ես կցել եմ իմ տախտակի ֆայլերը, բայց սա առաջին անգամն էր, որ օգտագործում էի արծիվ (և մինչ այժմ հնացած տարբերակ), այնպես որ դրանք միայն հղման համար են
Քայլ 6: Էլեկտրոնիկայի միացում
Սա կրկնվող պարզ քայլ էր ՝ Eagle- ի սխեմատիկ սխեմայից հետո, ESP- ի և LED մատրիցի վերնագրերի օգտագործումը մեծապես օգնեց հավաքմանը:
Anode & Cathode LED- ի վերնագրերի 1 -ին նշանը նշվում էր արծաթագույն սուրով, դրանք կարելի էր տարբերակել, քանի որ 7 -ը մյուս 8 -ն էր:
Քայլ 7: mingրագրավորում
Քանի որ մեր ցուցադրումը ավանդական մատրիցա չէ, ես ստիպված եղա մի մեթոդ գտնել `պատկերացնելու համար, թե որ բիթերը միացնեն, որոնք ուղարկվում են HEX- ի MAX IC- ին: Բարեբախտաբար, ես բավականաչափ գերազանց գիտեմ դժվարությունների մեջ ընկնելու համար և ստեղծեցի «Վեցանկյուն հրաշագործ», որը կուղեկցի ինձ, չնայած այն օրինակին, որը ցանկանում էի ցուցադրել, ձեռքով տեղադրված չեկերի տուփերը:
Սա եկավ այն վերագնահատման, որ իմ ժամի, րոպեի և վայրկյանների վեցանկյունը կարող է համակցվել բիթային կամ OR- ի միջոցով ՝ արտադրելով max7219- ին ուղարկելու վերջին վեցանկյուն հրամանը, ներառյալ մի փոքր անիմացիա, որը ես ավելացրել եմ վայրկյաններին, որպեսզի կարողանամ համոզվել տախտակին: չի սառել;
Այսպիսով, գրեթե վերջում: և ժամանակ ՝ մեկ այլ որոշման համար, որն այնքան էլ լավ չի ծերացել:
ESP- ի ծածկագիրը LUA- ում է: Այսօր ես խորհուրդ կտայի օգտագործել arduino IDE- ն `ավելի լավ փաստաթղթերի և հզոր փաթեթային գրադարանի համար, այն ժամանակ, երբ ESP համայնքը դեռ հասունանում էր, և ես ընտրեցի LUA- ն` որպես այս ծրագրի լեզու:
Ես կասկածելի որոշում կայացրեցի պարբերաբար պինգ անել google սերվերներին ՝ ժամանակը կարդալու համար: Շարժումը պետք է RTC- ի կարիք ունենա, որպեսզի նվազագույնի հասցնի դրեյֆը:
halfSec = 0 ժամ = 0 րոպե = 0 վայրկյան = 0
ցածր ինտենսիվություն = 0
բարձր ինտենսիվություն = 9
տեղական SSID = "Wifi"
տեղական SSID_PASSWORD = "Գաղտնաբառ"
գործառույթի ժամանակը () -միացեք ինտերնետին ՝ ընթացիկ ժամը և ամսաթիվը ստանալու համար
եթե wifi.sta.getip () ապա տեղական conn = net.createConnection (net. TCP, 0) conn: միացնել (80, "google.com")
conn: on ("կապ", ֆունկցիա (միացում, բեռնվածություն) conn: ուղարկել ("HEAD/HTTP/1.1 / r / n".. "Host: time.is / r / n".. "Ընդունել ՝ */ *\ r / n".. " Օգտվող-գործակալ ՝ Mozilla/4.0 (համատեղելի; esp8266 Lua;) ".." / r / n / r / n ") վերջ)
conn: on ("ստանալ", ֆունկցիա (conn, payload) -print (payload) conn: close () local p = string.find (payload, "GMT") -ինտերնետից բեռնվածության մեջ գտնել ժամի և ամսաթվի տողը, փոխել ժամային գոտին, եթե p = զրոյական-արդյունահանել թվեր, որոնք վերաբերում են ժամին, րոպեին, երկրորդին, օրին, ամսվա ժամին = տոննա 6, p-5)) երկրորդ = ծանրաբեռնվածություն (լար. Ենթ. (Բեռնվածություն, p-3, p-2)) ավելացնել = (երկրորդ%6)*2 -տպագիր (halfSec) այլ տպագիր («վեբ թարմացումը ձախողվեց») ավարտի ավարտը -գործառույթը) -«ստանալ» միջոցառման ավարտի ավարտը
միացում ՝ միացված («անջատում», գործառույթը (կոն, բեռնվածություն) conn = զրո բեռնվածություն = զրոյական ավարտ) վերջի տպում («դեռ WiFi չկա») ավարտ
գործառույթ borTable (a, b,…) -երկկողմանի կամ աղյուսակներ միասին
եթե arg [1] ապա b = borTable (b, unpack (arg)) վերջացրեք տեղական z = {} i- ի համար, v ipairs- ում (a) կատարեք table.insert (z, bit.bor (v, b )) end վերադարձ z վերջ
գործառույթը bxorTable (a, b,…) -երկկողմանի կամ աղյուսակներ միասին
եթե arg [1] ապա b = bxorTable (b, unpack (arg)) վերջացրեք տեղական z = {} i- ի համար, v ipairs- ում (a) կատարեք սեղանը: տեղադրեք (z, bit.bxor (v, b )) end վերադարձ z վերջ
գործառույթ addSecond ()
երկրորդ = երկրորդ+1 եթե երկրորդ> = 60 ապա երկրորդ = 0 րոպե = րոպե+1 եթե րոպե> = 60 ապա րոպե = 0 ավելացնել ourամ () վերջի վերջ
գործառույթ addHour ()
ժամ = ժամ+1 եթե ժամ> = 24 ապա ժամ = 0 ավարտ, եթե ժամ == 2 կամ ժամ == 16 ապա max7219.setIntensity (ցածրIntensity) ավարտ, եթե ժամ == 8 կամ ժամ == 18 ապա max7219.setIntensity (բարձր ինտենսիվություն) ավարտի ավարտի գործառույթի թարմացում () տեղական secGap = 6 տեղական minGap = 3 տեղական horGap = 1 տեղական վրկ = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03}, {0x00, 0x00,, 0x00, 0x00, 0x02, 0x01, 0x03}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x03}, {0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x01, 0x03}, {0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x01, 0x03}, {0x00, 0x00, 0x01, 0x1 }, {0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x01, 0x03}}; տեղական նվազագույն = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00}, {0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x00}, {0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x02, 0x00}, 0x00, 0x02, 0x00}, 0x00, 0x02, 0x00}, 0x00, 0x02, 0x00}, 0x00, 0x02, 0x00}, 0x00, 0x02, 0x00}, 0x00, 0x0, 0x00, 02, 0x02, 0x02, 0x00, 0x02, 0x00}, {0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x00}, {0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x10}, {0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x12, 0x10}, {0x02, 0x02, 0x02, 0x02, 0x02, 0x10, 0x12, 0x10}, {0x02, 0x02, 0x02, 0x02, 0x12, 0x10, 0x12, 0x10 }, {0x02, 0x02, 0x02, 0x12, 0x12, 0x10, 0x12, 0x10}, {0x02, 0x02, 0x12, 0x12, 0x12, 0x10, 0x12, 0x10}, {0x02, 0x12, 0x12, 0x12, 0x12, 0x10, 0x12, 0x10}, {0x12, 0x12, 0x12, 0x12, 0x12, 0x10, 0x12, 0x10}, {0x12, 0x12, 0x12, 0x12, 0x12, 0x30, 0x12, 0x10}, {0x12, 0x12, 0x12, 0x12, 0x32, 0x30, 0x12, 0x10}, {0x12, 0x12, 0x12, 0x32, 0x32, 0x30, 0x12, 0x10}, {0x12, 0x12, 0x32, 0x32, 0x32, 0x30, 0x12, 0x10}, {0x12, 0x32, 0x32, 0x32, 0x32, 0x30, 0x12, 0x10}, {0x32, 0x32, 0x32, 0x32, 0x32, 0x30, 0x12, 0x10}}; տեղական hor = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00}, {0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x00}, {0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x00}, {0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00}, {0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00}, {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00}, {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08}, {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0C, 0x08}, {0x04, 0x04, 0x04, 0x04, 0x04, 0x0C, 0x0C, 0x08 }, {0x04, 0x04, 0x04, 0x04, 0x0C, 0x0C, 0x0C, 0x08}, {0x04, 0x04, 0x04, 0x0C, 0x0C, 0x0C, 0x0C, 0x08}, {0x04, 0x04, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x08}, {0x04, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x08}, {0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x08}, {0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x48}, {0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x4C, 0x48}, {0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x4C, 0x4C, 0x48}, {0x0C, 0x0C, 0x0C, 0x0C, 0x4C, 0x4C, 0x4C, 0x48}, {0x0C, 0x0C, 0x0C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48}, {0x0C, 0x0C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48}, {0x0C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48}, {0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48}}; -տպագիր (ժամ, րոպե, վայրկյան)
-աղյուսակը սկսվում է 0-ից, այնպես որ 1-ով, ինչպես ներկայումս վրկ [0] = զրո)
max7219. գրել ({անիմացիոն (borTable (վրկ [1+ (երկրորդ/վրկԳ))], րոպե [1+ (րոպե/րոպեԳատ)), սարսափ [1+ (ժամ/horGap)]))))
վերջ -գործառույթ
wifi.setmode (wifi. STATION)
wifi.sta.config (SSID, SSID_PASSWORD) wifi.sta.autoconnect (1)
-կազմաձևել max7219
max7219 = պահանջում ("max7219") max7219.setup ({numberOfModules = 1, slaveSelectPin = 8, ինտենսիվություն = բարձր ինտենսիվություն))
-Հիմնական ծրագիր
checkOnline = tmr.create ()
tmr.alarm (0, 180000, 1, ժամանակ)
tmr.alarm (1, 1000, 1, addSecond)
tmr.alarm (2, 500, 1, թարմացում)
գործառույթը կենդանացնել (դեռ)
տեղական շրջանակներ = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00}, {0x00 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00}, {0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; halfSec = halfSec+1 եթե halfSec> = 12 ապա halfSec = 0 վերջ -տպագիր (halfSec) վերադարձ bxorTable (շրջանակներ [halfSec+1], դեռ) ավարտ
Քայլ 8: Բնակարան
Այժմ ձեր ժամանակն է ցուցադրել ձեր անհավատալի վարպետությունը և նախագծել նախագիծը:
Կամ դա, կամ վերցրեք ամազոնի փաթեթը վերամշակումից և ստեղծեք ժամանակավոր բնակարան, որը դեռ օգտագործվում է այսօր:
Այս մոտեցման օգտագործման առավելությունն այն էր, որ նախագծի յուրաքանչյուր շերտ գրեթե կատարյալ համընկնում էր ստվարաթղթի հաստության հետ, ուստի սենդվիչը կարող էր կուտակվել և սոսնձվել միասին: Նմանատիպ պրեմիում տարբերակը կարող է օգտագործել ակրիլ
Քայլ 9. Փակման խոսքեր
Շնորհակալություն ընթերցանության համար, քանի որ ձեզանից շատերը գիտեն, որ նախագիծը փաստաթղթավորելը կարող է նույնքան դժվար լինել, որքան դրա կատարումը: կան տեսագրություններ, որոնք խոսում են ինձ հետ, որոնք, ի վերջո, կարող են տեսնել օրվա լույսը:
Այս նախագիծը կազմելու և գրելու միջև ընկած տարիներին ես ակնկալում էի տեսնել 3D տպագրությամբ կամայական LED էկրանների ավելի շատ օրինակներ, բայց RGB շերտերի կրճատումը հիմնականում հեռացրել է այլընտրանքի կարիքը:
Հուսով եմ, որ սա տեղեկատվական էր, և խնդրում եմ հարցեր տվեք, քանի որ կփորձեմ ավելի մանրամասն ներկայացնել այն հատվածներին, որոնք լիովին չեն բավարարում:
Կեցցեք
Խորհուրդ ենք տալիս:
Կենսաթոշակային ժամացույց / հաշվել / Dn ժամացույց ՝ 4 քայլ (նկարներով)
Կենսաթոշակային ժամացույց / Count Up / Dn ockամացույց. Ես դարակում ունեի այս 8x8 LED dot-matrix ցուցադրումներից մի քանիսը և մտածում էի, թե ինչ անել դրանց հետ: Ոգեշնչված այլ հրահանգներով, ես գաղափար ստացա կառուցել հետհաշվարկի/վերևի ցուցադրում `հետ հաշվելու համար մինչև ապագա ամսաթիվը/ժամը և եթե նպատակային ժամանակը պ
Լոնդոնի մետրոյի հոբելյանական գծի դռան կոճակ կոտրելը. 12 քայլ (նկարներով)
Լոնդոնի մետրոյի հոբելյանական գծի դռան կոճակ կոտրելը. Լոնդոնի տրանսպորտային թանգարանի խանութը վաճառում է հոբելյանական գծից ապամոնտաժված դռների կոճակներ (առկա են ինչպես ձախ, այնպես էլ աջ): Եթե դուք մտածում եք իրականացնել այնպիսի նախագիծ, որին անհրաժեշտ է ինչ -որ տեսակի կոճակ և ցուցիչ լույս, դուք կլինեիք
C51 4 բիթանոց էլեկտրոնային ժամացույց - փայտյա ժամացույց ՝ 15 քայլ (նկարներով)
C51 4 բիթանոց էլեկտրոնային ժամացույց - Փայտե ժամացույց. Այս հանգստյան օրերին որոշ ժամանակ ունեի, այնպես որ առաջ գնացի և հավաքեցի այս 2.40 ԱՄՆ դոլար արժողությամբ 4 -բիթանոց DIY էլեկտրոնային թվային ժամացույցը, որը ես գնել էի AliExpress- ից քիչ առաջ
Նավարկել ռոբոտը կոշիկի տվիչներով, առանց GPS- ի, առանց քարտեզի `13 քայլ (նկարներով)
Նավարկեք ռոբոտին կոշիկի սենսորներով, GPS/GPS, W/o քարտեզով. Arduino- ն նախապես ծրագրավորված է ճանապարհով, իսկ oblu- ն օգտագործվում է ռոբոտի շարժումը զգալու համար: oblu- ն շարժումներ է փոխանցում
Ձեր բջջային հեռախոսով չափեք և քարտեզի աղմուկի աղտոտումը. 4 քայլ (նկարներով)
Ձեր բջջային հեռախոսի միջոցով չափեք և քարտեզեք աղմուկի աղտոտումը. դուք կսովորեք, թե ինչպես կարող եք օգտագործել ձեր GPS- ով հագեցած բջջային հեռախոսը