Բովանդակություն:
- Պարագաներ
- Քայլ 1: Ալգորիթմներ 101
- Քայլ 2: Ալգորիթմներ
- Քայլ 3. LED բար. 3D տպել դիմակը
- Քայլ 4: LED բարերի այլընտրանքներ
- Քայլ 5: LED բարերի պարիսպ
- Քայլ 6: Կառավարման վահանակ
- Քայլ 7: Կոճակի ամրացում
- Քայլ 8: Պտտվող կոդավորիչ
- Քայլ 9: 7 հատվածի ցուցադրում
- Քայլ 10: Հիմնական վերահսկիչ խորհուրդ
- Քայլ 11: Հավաքում
- Քայլ 12: Կոդ
- Քայլ 13: Ինչպես օգտագործել
Video: Ալգորիթմի մեքենա. 13 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Ես քոլեջի մակարդակով համակարգչային գիտություն եմ դասավանդում 15 տարի, և չնայած իմ մասնագիտությունն ավելի շատ ծրագրավորման կողմն է, ես դեռ բավականին ժամանակ եմ ծախսում որոնման և տեսակավորման ստանդարտ ալգորիթմների լուսաբանման վրա: Ուսուցման տեսանկյունից կենտրոնական խնդիրը հաշվողական բարդությունն է. Որքա՞ն ժամանակ է պահանջում յուրաքանչյուր ալգորիթմ ՝ հաշվի առնելով որոշակի չափի մուտքագրումը: Բայց կան բազմաթիվ նրբերանգներ: Օրինակ, արդյոք ալգորիթմները տարբեր գործարկման ժամանակ ունե՞ն ՝ կախված կոնկրետ մուտքային արժեքներից (ի տարբերություն չափի): Ո՞ր դեպքերում կընտրեիք տեսակավորման մեկ ալգորիթմ մյուսի փոխարեն: Չնայած մենք այս հարցերը վերացական ենք քննարկում, ինձ միշտ անհանգստացնում էր այն, որ չկար հեշտ միջոց ՝ տեսնելու, թե ինչպես են տարբեր ալգորիթմներ աշխատում տարբեր պայմաններում:
Գոլեր
Այս նախագծի իմ գերակա նպատակն էր ստեղծել ինտերակտիվ ցուցադրում ուսանողների համար ՝ պատկերելու և ուսումնասիրելու ալգորիթմները: Ես սահմանափակվեցի ալգորիթմներով, որոնք աշխատում են արժեքների զանգվածների վրա (ամբողջ թվեր), այնպես որ կարող եմ օգտագործել հասցեավորվող RGB LED ժապավեն `զանգվածի բովանդակությունը պատկերացնելու համար: Theանգվածն ունի 100 տարր, և յուրաքանչյուր ամբողջ թիվ քարտեզագրվում է ծիածանի կարգի գույնի վրա, այնպես որ անմիջապես ակնհայտ է դառնում, երբ զանգվածը տեսակավորվում է, մասամբ դասակարգվում կամ պատահականացվում: Ի հավելումն արժեքների, այնուամենայնիվ, ես ուզում էի միջոց գտնել ալգորիթմի կառավարման ասպեկտները, օրինակ `զանգվածի որ տարրերն են այժմ համեմատվում կամ փոխանակվում:
Հատուկ նպատակներն են.
- Տրամադրել որոնման և տեսակավորման տարբեր ալգորիթմներ
- Պատկերացրեք զանգվածի արժեքները այնպես, որ կարևորվի ալգորիթմի առաջընթացը
- Պատկերացնել ալգորիթմի հսկողությունը; մասնավորապես, դիտարկվող տարրերը:
- Թույլ տվեք օգտվողներին ընտրել մուտքային տվյալների օրինակները, այլ ոչ թե միշտ առաջացնել պատահական արժեքներ
- Թույլ տվեք օգտվողներին վերահսկել արագությունը և դադարեցնել ալգորիթմը
-Թույլ տվեք օգտվողներին պարտադրել լավագույն դեպքում, վատագույն դեպքում, միջին դեպքերի վարքագիծ (հատուկ ալգորիթմի համար)
- Ալգորիթմի ընթացքի ընթացքում ցույց տվեք քայլերի քանակը
Տեսողականացում
Ֆիզիկական դիզայնի տեսանկյունից այս նախագծի ամենահետաքրքիր մասը զանգվածի արտացոլումն է: Ես պայքարում էի, թե ինչպես ցուցադրել տվյալները և վերահսկողությունը և ինչպես ինքնուրույն կառուցել ցուցադրման սարքը: Իմ նպատակն էր ցույց տալ տվյալների արժեքները որպես գունավոր շրջանակներ և կառավարման կետերը `որպես գունավոր սլաքներ, որոնք մատնանշում են տվյալների արժեքները: Որոշ փորձարկումներից հետո ես հաստատվեցի 100 RGB LED- ների (WS2812) երկու զուգահեռ շերտերով դիզայնով ՝ յուրաքանչյուր տվյալների LED- ի վրա շրջանաձև դիմակով և յուրաքանչյուր կառավարման LED- ի վրա եռանկյուն դիմակով: Ես պատրաստեցի դիմակի 3D մոդել `10 զույգ շրջանակներով և եռանկյուններով, այնուհետև 3D- ով տպեցի այս մոդուլներից 10 -ը` ընդհանուր 100 շրջանակների և 100 եռանկյունների համար: Իմ դիմակի չափը և տարածությունը նախատեսված են մետրի համար 100 LED- ով շերտերի համար: 3D մոդելի ֆայլերը ներկայացված են այս նկարագրության մեջ ավելի ուշ:
Էլեկտրոնիկա և պարիսպ
Մնացած սարքը պարզ է ՝ էլեկտրոնիկայի տեսանկյունից: Բացի LED- ի երկու ժապավեններից, կան մի քանի վայրկյանական կոճակներ, պտտվող կոդավորիչ (արագության կառավարման համար) և 7 հատվածի էկրան (քայլերը ցույց տալու համար): Այսքան կոճակներով և հսկիչներով ես որոշեցի օգտագործել ESP32 միկրոկոնտրոլերը, քանի որ այն շատ քորոցներ է բացահայտում, և քանի որ այն բավականին հզոր է: Ես կանցնեմ էլեկտրագծերի ռազմավարությունը, բայց դա բավականին հիմնական է: Հավանաբար, դուք կարող եք խելացի բան անել հերթափոխի գրանցամատյաններով, եթե ցանկանում եք ավելի քիչ կապ օգտագործել:
Այս սարքի պարիսպը կարող եք կառուցել տարբեր ձևերով: Սկզբում ես այն պատկերացնում էի որպես մեծ ուղղանկյուն տախտակ, որի վերևում LED շերտ էր, իսկ մեջտեղում ՝ կոճակների ցանց: Այն ձևը, որով ես ավարտվեցի, ոգեշնչված է 1960-ականների տիեզերական տեխնոլոգիայի վերաբերյալ տեսակետից: Կարող եք նաև այն կառուցել ուղղահայաց ուղղահայաց LED շերտերով: Կամ LED հատվածը շատ ավելի մեծ դարձրեք `լրացրեք մի ամբողջ պատ` առանձին կառավարման վահանակով:
Ծրագրային ապահովում
Այս սարքի ծածկագիրն ազատորեն հասանելի է GitHub- ում, և ես ամեն ինչ արել եմ ՝ փաստաթղթավորելու, թե ինչպես է այն աշխատում և ինչպես կարգավորել այն: Միակ արտաքին գրադարանը, որն անհրաժեշտ է, FastLED է WS2812 շերտերը քշելու համար:
Պարագաներ
Էլեկտրոնիկա
1 ESP32 զարգացման տախտակ (օրինակ ՝
2 WS2812 կամ նման LED շերտ, խտություն 100 LED մեկ մետրի համար (օրինակ ՝
1 եռանկյունու «մեկնարկ» կոճակ (օրինակ ՝
12 ակնթարթային կոճակներ (օրինակ ՝ https://amzn.com/B01N4D4750) - տարբեր ձևեր, եթե ցանկանում եք
1 փաթեթ (20) նախալարված կոճակների միակցիչներ (օրինակ ՝
1 փաթեթ JST միակցիչ (օրինակ ՝
1 Պտտվող կոդավորիչ (օրինակ ՝
1 գլխիկ պտտվող կոդավորիչի համար (օրինակ ՝
1 փաթեթ Dupont միակցիչներ (օրինակ ՝ https://amzn.com/B014YTPFT8) - արժե ձեռք բերել նաև ծալման գործիք:
1 տակառ (ուժի համար) (օրինակ ՝
1 TM1637 7 հատվածի թվային ցուցադրում (օրինակ ՝
Sոդման և էլեկտրագծերի հանդերձում
3D մոդելի ֆայլեր
Դուք կարող եք գտնել 3D մոդելը զույգ 10 լույսի մոդուլների համար Thingiverse- ում.
www.thingiverse.com/thing:4178181
Դուք պետք է տպեք այս մոդելը հինգ անգամ `ընդհանուր 10 մոդուլների համար:
Ծրագրային ապահովում
github.com/samguyer/AlgorithmMachine
Պարիսպ
Փայտ, պլեքսիգլաս, չժանգոտվող պողպատից պտուտակներ և պտուտակներ
Դիֆուզիոն նյութ: Իմ ամենասիրելին Lee Filters #216 լրիվ սպիտակ դիֆուզիոն է, բայց կան այլ տարբերակներ: Նույնիսկ պարզ սպիտակ թուղթը լավ աշխատանք է կատարում:
Քայլ 1: Ալգորիթմներ 101
Շատերը կարծում են, որ համակարգչային գիտությունն ըստ էության ծրագրավորման ուսումնասիրություն է: Բայց այս ոլորտի իրական սիրտն ու հոգին ալգորիթմներն են `խնդիրների լուծման համակարգված ընթացակարգերի և դրանց արժեքի ուսումնասիրությունը (սովորաբար, որքան են դրանք տևում): Ոլորտի կարևոր գործիչները, ինչպես Ալան Թյուրինգը, Ալոնզո Չերչին և Էդսգեր Դեյկստրան, մտածում էին այս գաղափարների մասին նախքան համակարգիչները, ինչպես մենք գիտենք, դրանք գոյություն ունեին:
Առանձնահատուկ խնդիր լուծելու ալգորիթմի հիմնական առանձնահատկությունն այն է, որ այն մանրամասն և ճշգրիտ է, այնպես որ ինչ -որ մեկը կարող է օգտագործել այն լուծում ստանալու համար ՝ ընդհանրապես չհասկանալով, թե ինչպես է այն աշխատում: պարզապես հետևեք քայլերին մեխանիկական եղանակով և ճիշտ պատասխան կստանաք: Դուք կարող եք տեսնել, թե ինչպես է դա օգնում ծրագրավորող համակարգիչներին, քանի որ նրանց անհրաժեշտ է այս մակարդակի մանրամասնությունը: Համակարգիչը չի կարող լրացնել բաց թողնված մանրամասները կամ դատողություններ անել, ինչպես մարդը կարող է:
Որքան ժամանակ դա կպահանջի?
Երբ մենք ունենանք մանրամասն ընթացակարգ, բնական հարցն այն է, թե որքան ժամանակ կպահանջվի պատասխանը ստանալու համար: Մենք չենք կարող ժամանակի սովորական միավորներ օգտագործել, քանի որ դա կախված է նրանից, թե ով է կատարում աշխատանքը (համեմատեք, թե որքան արագ մարդը կարող է ինչ -որ բան հաշվարկել ՝ ընդդեմ գերհամակարգչի): Բացի այդ, դա կախված է նրանից, թե որքան տվյալներ ունենք: Ակնհայտ է, որ միլիոն հեռախոսահամարների ցանկը փնտրելն ավելի երկար է տևում, քան հարյուրինը:
Ալգորիթմի արժեքը նկարագրելու համար մենք նախ ընտրում ենք որոշակի գործողություն այն ընթացակարգում, որը ներկայացնում է մեկ «քայլ». Սովորաբար մի պարզ բան, ինչպիսին է երկու թվերի համադրումը կամ ավելացումը, որի կատարումը որոշակի ժամանակ է պահանջում: Այնուհետև մենք գալիս ենք մի բանաձևի, որը նկարագրում է, թե քանի քայլ է ձեռնարկելու ալգորիթմը ՝ հաշվի առնելով որոշ թվով տվյալների տարրեր: Պատմական պատճառներով, մենք գրեթե միշտ նշում ենք տվյալների միավորների թիվը N մեծատառով:
Օրինակ, N հեռախոսահամարների ցանկը դիտելը տանում է N քայլ: Twiceանկը երկու անգամ դիտելը տանում է 2N քայլ: Այս երկուսն էլ կոչվում են գծային ժամանակի ալգորիթմներ. Քայլերի ընդհանուր թիվը մուտքային չափի որոշ բազմապատիկ է: Այլ ալգորիթմներն են քառակուսի (N քառակուսի ժամանակ) կամ խորանարդ (N խորանարդ) կամ լոգարիթմական (տեղեկամատյան N) կամ դրանց մի քանի համադրություն: Որոշ ամենադժվար հաշվողական խնդիրներից պահանջվում է ժամանակի ցուցադրական ալգորիթմներ (2^N):
Լավ, ուրեմն ինչ?
Երբ N տարրերի թիվը փոքր է, դա մեծ նշանակություն չունի: Օրինակ, N = 10 -ի դեպքում 10N- ն այդ անունն է որպես N քառակուսի: Բայց ինչ վերաբերում է N = 1000 -ին: կամ N = 1000000? Միլիոն քառակուսին բավականին մեծ թիվ է: Նույնիսկ շատ արագ համակարգչի վրա քառակուսի ալգորիթմը կարող է երկար տևել, եթե մուտքը բավականաչափ մեծ է: N = 50 -ի համար երկրաչափական ալգորիթմին երկու շաբաթ կպահանջվի, եթե N = 50 -ը ավարտվի նույնիսկ համակարգչով, որտեղ յուրաքանչյուր քայլ ընդամենը մեկ նանոսեկունդ է (1 միլիարդերորդ վայրկյան): Օuհ
Սանդղակի մյուս ծայրում մենք ունենք լոգարիթմական ժամանակի ալգորիթմներ, որոնք շատ արագ են: Մուտքի ժամանակը հակառակն է ցուցիչ ժամանակի. Հաշվի առնելով մուտքի չափը N, քայլերի քանակը ցուցիչ T- ն է 2^T = N. բանաձևում: Օրինակ, եթե մեր մուտքի չափը մեկ միլիարդ է, ապա գրանցման ժամանակի ալգորիթմը պահանջում է ընդամենը 30 քայլեր, քանի որ 2^30 = 1, 000, 000, 000. Որքա՞ն քաղցր է դա:! ??!
Ձեզ կարող է հետաքրքրել, ո՞ւմ են հետաքրքրում միլիոնավոր կամ միլիարդավոր մուտքերի չափերը: Մտածեք դրա մասին. Քանի՞ օգտվող կա Facebook- ում: Քանի՞ վեբ էջ է ինդեքսավորվում Google- ի կողմից: Քանի՞ բազային զույգ կա մարդու գենոմում: Քանի՞ չափում է կատարվում եղանակային մոդելավորման մեջ:
Քայլ 2: Ալգորիթմներ
Ալգորիթմների մեքենան ներկայումս իրականացնում է հետևյալ ալգորիթմները: Դրանցից երկուսը որոնման ալգորիթմներ են (գտեք ցանկում որոշակի արժեք), մնացածը տեսակավորման ալգորիթմներ են (արժեքները կարգի բերեք):
Գծային որոնում
Սկզբից սկսած մեկ առ մեկ փնտրեք արժեքների ցանկը: Պահանջում է գծային ժամանակ:
Երկուական որոնում
Որոնեք ցուցակ ՝ բազմիցս կիսելով այն կիսով չափ: Պահանջում է գրանցման ժամանակ, սակայն ցանկը պետք է տեսակավորված լինի, որպեսզի այն աշխատի:
Փուչիկների տեսակավորում
Տեսակավորել ցանկը ՝ բազմիցս փոխանակելով հարևան տարրերը, որոնք կարգին չեն: Պահանջում է քառակուսի ժամանակ:
Տեղադրման տեսակավորում
Տեսակավորել ցանկը `յուրաքանչյուր տարր տեղադրելով իր համապատասխան տեղում արդեն դասավորված արժեքների ցանկում: Պահանջում է քառակուսի ժամանակ:
Արագընթաց
Տեսակավորեք ցուցակը ՝ ցանկը բազմիցս կիսելով կիսով չափ և միջինից պակաս բոլոր արժեքները տեղափոխելով առաջին կես, իսկ միջինից մեծ բոլոր արժեքները ՝ երկրորդ կես: Գործնականում մենք չենք կարող արդյունավետ գտնել միջինը, ուստի մենք պատահականորեն ընտրում ենք արժեքը: Արդյունքում, այս ալգորիթմը վատագույն դեպքում կարող է լինել քառակուսի, բայց սովորաբար պահանջում է N * logN ժամանակ:
Միավորել տեսակավորումը
Տեսակավորեք ցուցակը ՝ այն կիսելով կիսով չափ, երկու կեսերը առանձնացնելով առանձին (օգտագործելով միաձուլման տեսակավորումը), այնուհետև դրանք միաձուլելով ՝ արժեքները միահյուսելով: Միշտ պահանջում է N * logN ժամանակ:
Կույտ տեսակավորում
Տեսակավորել ցուցակը ՝ կառուցելով տվյալների կառուցվածք, որը կոչվում է կույտ, ինչը թույլ է տալիս գտնել գրանցման ժամանակի ամենափոքր արժեքը: Միշտ պահանջում է N * logN ժամանակ:
Բիտոնիկ տեսակավորում
Տեսակավորման և արագացման միաձուլման նման, ցուցակը կիսեք կիսով չափ, տեսակավորեք կեսերը և նորից միացրեք դրանք: Այս ալգորիթմը պահանջում է N * logN * logN ժամանակ, սակայն ունի առավելություն, որ հեշտ է զուգահեռել:
Քայլ 3. LED բար. 3D տպել դիմակը
LED բարը կառուցելու առաջին քայլը դիմակի 3D տպումն է, որը լույսերին տալիս է իրենց ձևը: Յուրաքանչյուր մոդուլ ընդգրկում է զանգվածի տասը տարր, 10 արժեք (շրջան) և 10 ցուցիչ (եռանկյուն), այնպես որ ձեզ ընդհանրապես անհրաժեշտ կլինի 10 մոդուլ: STL ֆայլը, որը ես տրամադրում եմ այստեղ, պարունակում է մոդուլի երկու օրինակ, ուստի ձեզ հարկավոր է կատարել տպման հինգ ցիկլ: Ես չունեմ ամենալավ 3D տպիչը, ուստի ես ստիպված էի դրանք ձեռքով մաքրել ՝ օգտագործելով ֆայլ և հղկաթուղթ: Ամենակարեւորն այն է, որ շրջանաձեւ եւ եռանկյունաձեւ անցքերը մաքուր լինեն:
Լուսանկարներում դուք կտեսնեք իմ փորձարկման կարգավորումը. Ես երկու LED ժապավենները կպցրի ներքև և դրանք միակցեցի միկրոկոնտրոլերով հացահատիկի վրա: Այս քայլը պարտադիր չէ, բայց ես ուզում էի տեսնել, թե ինչ տեսք կունենա այն, մինչև որ սկսեմ պարիսպի հավաքումը: Երկու LED շերտի վրա շարեցի դիմակի մոդուլները և պատահական գույներով պարզ ուրվագիծ արեցի: Դիֆուզիոն նյութի շերտով ձևերն ու գույներն իսկապես հայտնվում են:
Քայլ 4: LED բարերի այլընտրանքներ
Երբ ես առաջին անգամ սկսեցի այս նախագիծը, ես փորձարկեցի LED դիմակ պատրաստելու այլ եղանակներ: Եթե դուք չունեք 3D տպիչ, կարող եք դիտարկել այս տարբերակներից մեկը: Անկեղծ կլինեմ. Ահագին ցավ է այս հատվածները պատրաստելը:
Շրջանակների համար ես գնեցի 13/32 փողային խողովակ, որը գրեթե ուղիղ 1 սմ տրամագծով: Ես այն կտրեցի հարյուր 1 սմ հատվածների, այնուհետև սփրեյով ներկեցի դրանք սպիտակ:
Եռանկյունների համար ես օգտագործեցի ծանր քաշով ալյումինե փայլաթիթեղ, որը կտրված էր միանգամյա օգտագործման թխումից: Ես փայտից պատրաստեցի եռանկյունաձև ձև, այնուհետև փայլաթիթեղի կարճ շերտեր փաթաթեցի ձևի շուրջ և կպչեցի դրանք: Կրկին, ձեզ հարկավոր կլինի այս հարյուրից, այնպես որ դա որոշակի ժամանակ և համբերություն կպահանջի:
Քայլ 5: LED բարերի պարիսպ
Իմ պարիսպը բավականին պարզ է. Փայտի երկու շերտ կողքերի համար և երկու շերտ պլեքսիգլաս `վերևի և ներքևի մասերի համար: Բոլոր մասերի երկարությունը մոտ 102 սմ է (1 մետր LED- ների համար, գումարած մի փոքր ավելին `էլեկտրագծերի տեղադրման համար): Կողքերը պետք է մի փոքր բարձր լինեն 1 սմ -ից, որպեսզի տեղ ունենան LED շերտերի համար: Շերտերը կտրելուց հետո ես նրանց միջև դրեցի 3D տպված դիմակի կտորներ `պլեքսիգլասի լայնությունը չափելու համար: Կտրեք պլեքսիգլասի երկու կտոր ձողի լայնությամբ և երկարությամբ: Ի վերջո, կտրեք դիֆուզիոն նյութի մի շերտ, որը տեղավորվում է դիմակի վրա:
Դիֆուզիայի համար ես իսկապես սիրում եմ Lee Filters #216 (ամբողջական սպիտակ դիֆուզիոն): Այն բարակ պլաստիկ թերթ է, որը տալիս է նույնիսկ դիֆուզիոն ՝ առանց շատ լույս կորցնելու: Բայց դա թանկարժեք իրեր են: Երբեմն առցանց վաճառքի համար կարող եք գտնել ավելի փոքր սավաններ, բայց մի ամբողջ գլանափաթեթը ձեզ մոտ $ 125 հետ կբերի: Որոշ այլ տարբերակներ են `սպիտակ թուղթ կամ ցանկացած այլ տեսակի ատլասե կամ ցրտահարված պլաստիկ: Հանրաճանաչ ընտրությունը բարակ պլաստիկ կտրող գորգերն են:
Նախքան LED բարը հավաքելը, համոզվեք, որ ունեք համապատասխան միակցիչներ, որոնք զոդված են LED շերտերին: Շատ շերտեր գալիս են նախապես զոդված կապանքներով, այնպես որ կարող եք դրանք պարզապես օգտագործել:
Ես հավաքը սկսեցի ՝ պլեքսիգլասի վերին կտորը փայտե կողքերով պտուտակելով (տես լուսանկարը): Հետո այն շրջեցի և տեղադրեցի դիֆուզիոն շերտը, որին հաջորդեցին դիմակի 10 կտորները: Երբ ես գոհ էի տարածությունից, ես դրանք ամրացրեցի մի քանի կետ տաք սոսինձով:
Հաջորդը, երկու LED շերտերը կողք կողքի դրեք դիմակների վերևում: Համոզվեք, որ LED- ները ուղղված են դեպի ներքև և համոզվեք, որ յուրաքանչյուր LED գծված է դիմակի համապատասխան անցքով: Ավելացրեք տաք սոսինձ կամ ժապավեն ՝ LED շերտերն իրենց տեղում պահելու համար: Ի վերջո, պտուտակավորեք պլեքսիգլասի հետևի կտորը:
Գործարկեք փորձարկման օրինակ: Հաճելի աշխատանք: Դուք արել եք ամենադժվար մասը:
Քայլ 6: Կառավարման վահանակ
Կառավարման վահանակը այն մասն է, որն ապահովում է առավել ստեղծագործական ազատություն: Այն պարզապես պետք է պահի բոլոր հսկիչներն ու էլեկտրոնիկան ՝ LED սանդղակի հետ միասին: Ամենապարզ դիզայնը ուղղանկյուն տախտակներ են. Կոճակների և կառավարման վահանակների համար անցքեր պատրաստեք և ամրացրեք LED բարը: Ես սիրում եմ համատեղել փայտը, պլեքսիգլասը և այլ նյութեր `մի տեսակ steampunk / retro-modern տեսք հաղորդելու համար: Այս դեպքում ես կտրեցի ծանր պլեքսիգլասի մի կտոր ՝ հիմնական ալգորիթմի ընտրության կոճակները պահելու համար, և փայտե ձող ՝ մնացած էլեկտրոնիկայի համար: Ես անցքեր եմ բացել, որպեսզի համապատասխանեն արկադային կոճակների չափին: Էլեկտրագծերը հետևում են, բայց ինձ դուր է գալիս:
Ես նաև տարածություն եմ բացել 7 հատվածի ցուցադրման, պտտվող կոդավորիչի և հետևի մի քանի էլեկտրագծերի համար: Ես կտրեցի մի դադո վերևում ՝ LED բարը պահելու համար:
Քայլ 7: Կոճակի ամրացում
Շատ կոճակներ լարերը կարող են իսկական ցավ պատճառել: Բարեբախտաբար, արկադային մեքենաներ պատրաստող մարդիկ եկել են մի քանի ստանդարտ միակցիչների, որոնք կարող եք օգտագործել: Յուրաքանչյուր կոճակի միակցիչ մալուխ ունի երկու լար `մեկը VCC- ի և մեկը` գետնի համար: Մի ծայրն ունի բահի միակցիչներ, որոնք տեղավորվում են կոճակի հետևի տողերում `ամրացնելով գետինը« սովորաբար բաց »կապարին, իսկ VCC- ն` «ընդհանուր» հաղորդալարին: Այս կազմաձևում, երբ օգտվողը սեղմում է կոճակը, միացումն ավարտված է, և միկրոկոնտրոլերը համապատասխան մուտքի քորոցի վրա կկարդա HIGH:
Մալուխի մյուս ծայրն ունի JST միակցիչ (փոքրիկ սպիտակ իրը): Այս միակցիչների մեջ հաճելի է այն, որ նրանք միայն մի կերպ են մտնում պահարանի մեջ, այնպես որ պատահականորեն VCC- ն և գետնին հակադարձելու միջոց չկա:
Այն, ինչ ես արեցի, մի փոքր զրահ կառուցելն էր այս միակցիչների համար: Ես JST- ի մի շարք տարաներ կպցրեցի նախատախտակի մի կտորի վրա, այնուհետև լարերը հետ ուղարկեցի Dupont միակցիչներին, որոնք միացնելու եմ միկրոկոնտրոլերի վրա: Կարմիր մետաղալարը VCC գիծ է, և այն միանում է JST- ի բոլոր պահարաններին: Կապույտ լարերն այն կոճակների համար առանձին են:
Քայլ 8: Պտտվող կոդավորիչ
Պտտվող ծածկագրիչը թույլ է տալիս օգտվողին վերահսկել ալգորիթմի արագությունը: Ես օգտագործում եմ մոդուլ, որը գալիս է որպես ճեղքման տախտակ, որը ներառում է երկու տվյալների տողերի համար քաշվող դիմադրիչներ (դեղին լարեր): Այս մեկը նույնպես պատահաբար կոճակ է, բայց ես չեմ օգտագործում այդ հնարավորությունը: Մյուս երկու լարերը VCC են և հող: Ես նաև մի գեղեցիկ ճարպ բռնիչ ստացա:
Ինձ դուր է գալիս պտտվող կոդավորիչը, ի տարբերություն պոտենցիոմետրի, այն է, որ այն պարզապես ազդանշան է տալիս միկրոկոնտրոլերի պտույտին (ժամացույցի սլաքի հակառակ ժամացույցի սլաքի հակառակ ուղղությամբ), ուստի հեշտ է փոխել, թե ինչպես է արժեքը մեկնաբանվում: Օրինակ, դուք կարող եք նրան արագացման զգացում տալ (մկնիկի պես), երբ օգտագործողը արագ պտտում է այն:
Քայլ 9: 7 հատվածի ցուցադրում
Այստեղ շատ բան չկա ասելու: Այս բաներն ամենուր են: LED- ները վերահսկվում են TM1637 կոչվող չիպի միջոցով, որը միկրոկոնտրոլերի հետ շփվում է պարզ սերիական արձանագրության միջոցով: Ես օգտագործում եմ գոյություն ունեցող գրադարանը, որը թույլ է տալիս ինձ ասել, թե ինչ թիվ եմ ուզում ցույց տալ, և դա անում է մնացածը:
Հետեւի մասում կա չորս կապում `VCC, հող եւ երկու լար` սերիական արձանագրության համար: Ես զոդեցի 4 պինանի վերնագրի կտոր, որը միանում է միկրոկոնտրոլերին միացված համապատասխան Dupont միակցիչին:
Քայլ 10: Հիմնական վերահսկիչ խորհուրդ
Հիմնական կառավարման վահանակում տեղակայված է միկրոկառավարիչը և կառավարման միացման բոլոր միակցիչները (կոճակներ, էկրան, լուսադիոդներ): Միկրոկոնտրոլերը ESP32 է, որն ապահովում է մեծ հաշվողական հզորություն և հիշողություն և բացահայտում է բազմաթիվ կապում: Էլեկտրագծերը բավականին ստանդարտ են, բայց ես նշեմ մի քանի հետաքրքիր բիթ:
EԱՆՈԹՈ:ԹՅՈՆ. Հնարավոր է, որ նախքան հիմնական տախտակի լարերը միացնելը, նայեք ծածկագրին (https://github.com/samguyer/AlgorithmMachine), որպեսզի ձեր կապի կոնֆիգուրացիան համապատասխանի իմին:
Ես ամրացման համար ամրացրեցի տակառի խրոցակը և միացրեցի երկու պղնձե մետաղալարեր տախտակի հոսանքի և գրունտի ռելսերին: Պատճառն այն է, որ LED բարը կարող է շատ էներգիա վերցնել, եթե պայծառությունը բարձր է դրված, և ես չեմ ուզում այդ ամբողջ հզորությունը քաշել միկրոկառավարիչի USB միակցիչի միջոցով:
Կոճակի էլեկտրագծերը պարզեցնելու համար ես միաձուլեցի մի տղամարդու և կնոջ աջ անկյունի վերնագրի մի շերտ միկրոկառավարիչի ամբողջ կողքով (տախտակի վերին կողմը, ինչպես ցույց է տրված): Կոճակի ամրացման Dupont միակցիչները միանում են անմիջապես այս վերնագրին:
ԿԱՐԵՎՈՐ. Կոճակների (կարմիր մետաղալարերի) հոսանքը պետք է միացված լինի միկրոկառավարիչի 3.3V հոսանքի գծին: ESP32- ը 3.3 Վ չիպ է, այնպես որ տվյալների պիներին պետք է կցվեն միայն 3.3 Վ աղբյուրներ:
Միկրոկոնտրոլերը ուժը (կամ ուժը մղում է) դեպի ռելսեր (տախտակի ստորին կողմը, ինչպես ցույց է տրված) 5V USB կապի և գետնի միջոցով: Մնացած բոլոր կարմիր/սև լարերը VCC են և հիմնավորված:
Երկու կապույտ լարերը LED գծերի (WS2812s) տվյալների գծերն են:Դեղին/կանաչ զույգը պտտվող կոդավորիչի տվյալների տողերն են, իսկ դեղին զույգը ՝ 7 հատվածի ցուցադրման սերիական կապը:
Քայլ 11: Հավաքում
Այս լուսանկարների շարքը ցույց է տալիս վերջնական հավաքումն ու էլեկտրագծերը: Ես նաև կցեցի հիմնական վերահսկիչի տախտակը հետևի մասում ՝ վերևում:
Նախքան այն միացնելը, ես մի քանի ստուգում կատարեցի, որպեսզի խուսափեմ տհաճ անակնկալներից: Մասնավորապես, համոզվելու համար, որ ես չունեմ հոսանքի/հողակցման միակցիչներ հետընթաց, և ոչ մի կարճ միացում: Ձեր բազմիմետրը սահմանեք շարունակականության ստուգման համար, այն ազդանշան կհնչի, երբ երկու հոսանքի միջև էլեկտրական ուղի լինի: Կոճակներին ամրացրեք մեկ ուղեցույց դեպի ընդհանուր VCC տող: Այնուհետև մյուս կապարը ամրացրեք ամրագոտու յուրաքանչյուր քորոցին մեկ առ մեկ: Մուլտիմետրը պետք է ազդանշան հնչի միայն կոճակը սեղմելիս: Եթե դուք ստանում եք որևէ այլ ազդանշան, դա նշանակում է, որ դուք ունեք հակադարձում կամ կարճ: Հետևեք դրան և շտկեք այն նախքան հոսանքը միացնելը:
Քայլ 12: Կոդ
Նախ, բացեք ձեր Arduino IDE- ն և համոզվեք, որ տեղադրված է FastLED գրադարանը:
Ներբեռնեք Ալգորիթմ մեքենայի կոդը GitHub- ից.
github.com/samguyer/AlgorithmMachine.git
Կարող եք այն ուղղակիորեն կլոնավորել ձեր Arduino թղթապանակում կամ ձեռքով պատճենել:
Նախքան այն վերբեռնելը, համոզվեք, որ քորոցի կարգավորումները համապատասխանում են ձեր ապարատային կազմաձևին: Ես տեղադրել եմ բոլոր կապի կարգավորումները ֆայլի վերևում:
Վերբեռնեք և վայելեք:
Քայլ 13: Ինչպես օգտագործել
Ալգորիթմ մեքենան պարզ է օգտագործման համար և կոճակների գրեթե ցանկացած համադրություն լավ է:
Նախ, օգտագործեք տվյալների կոճակները `զանգվածի արժեքները սկզբնավորելու համար: Երեք տարբերակ կա. (1) պատահականացնել, (2) ավելացնել մեկ պատահական արժեք և (3) հակադարձել զանգվածը: Նկատի ունեցեք, որ արժեքները մշտական են, այնպես որ կարող եք անել այնպիսի բաներ, ինչպիսիք են դրանք նախ տեսակավորելը, այնուհետև ավելացնել որոշ աղմուկ, այնուհետև գործարկել տեսակավորման կամ որոնման այլ ալգորիթմ:
Ընտրեք որոնման կամ տեսակավորման ալգորիթմ կոճակի մյուս տարբերակներից: Ներկայումս, այս ընտրությունը կատարելիս հետադարձ կապ չկա (ինչ -որ բան ապագա աշխատանքի համար): Այնուհետև կտտացրեք «խաղալ» կոճակին:
Կոճակը վերահսկում է արագությունը: Կարող եք նաև հարվածել «խաղալ» ՝ ալգորիթմը դադարեցնելու և դադարեցնելու համար:
Ավարտելուց հետո այն ինքնաբերաբար կդադարի: Կարող եք նաև ցանկացած ժամանակ սեղմել մեկ այլ ալգորիթմի կոճակ: Մեքենան կդադարեցնի ընթացիկ ալգորիթմը և կսկսի նորը, բայց կպահպանի տվյալները ճիշտ այնպես, ինչպես թողել է նախորդ ալգորիթմը:
Գլխավոր մրցանակ STEM մրցույթում
Խորհուրդ ենք տալիս:
BBC Micro: bit and Scratch - Ինտերակտիվ ղեկ և մեքենա վարելու խաղ. 5 քայլ (նկարներով)
BBC Micro: bit and Scratch - Ինտերակտիվ ղեկ և մեքենա Ես կարծում էի, որ սա կատարյալ հնարավորություն էր ՝ իմ ThreadBoard- ի միջոցով ներկառուցված համակարգ ստեղծելու համար: Իմ ոգեշնչումը քերծվածքների համար
DIY Arduino Bluetooth- ով կառավարվող մեքենա. 6 քայլ (նկարներով)
DIY Arduino Bluetooth- ով կառավարվող մեքենա. Բարև ընկերներ: Իմ անունը Նիկոլաս է, ես 15 տարեկան եմ և ապրում եմ Հունաստանում, Աթենքում: Այսօր ես ձեզ ցույց կտամ, թե ինչպես պատրաստել 2 անիվով Bluetooth- ով կառավարվող մեքենա ՝ օգտագործելով Arduino Nano, 3D տպիչ և մի քանի պարզ էլեկտրոնային բաղադրիչներ: Անպայման դիտեք իմ
Rանկացած մեքենա/մեքենա դարձնել Bluetooth հավելվածի վերահսկման մեքենա ՝ 9 քայլ
Rանկացած R/C մեքենա վերածել Bluetooth ծրագրի կառավարման R/C մեքենայի. Այս նախագիծը ցույց է տալիս սովորական հեռակառավարման մեքենան Bluetooth (BLE) կառավարման մեքենայի Wombatics SAM01 ռոբոտաշինական տախտակով, Blynk App- ով և MIT App Inventor- ով փոխելու քայլերը: շատ ցածր գնով RC մեքենաներ են `բազմաթիվ հնարավորություններով, ինչպիսիք են LED լուսարձակները և
Ինքնահավասարակշռող ռոբոտ PID ալգորիթմի միջոցով (STM MC). 9 քայլ
Ինքնահավասարակշռող ռոբոտ PID ալգորիթմի միջոցով (STM MC). Վերջերս շատ աշխատանքներ են կատարվել օբյեկտների ինքնահավասարակշռման ուղղությամբ: Ինքնահավասարակշռման հայեցակարգը սկսվեց շրջված ճոճանակի հավասարակշռմամբ: Այս հայեցակարգը տարածվեց նաև ինքնաթիռների նախագծման վրա: Այս նախագծում մենք նախագծել ենք փոքր ռեժիմ
DC շարժիչի արագության կառավարում PID ալգորիթմի միջոցով (STM32F4). 8 քայլ (նկարներով)
DC շարժիչի արագության կառավարում PID ալգորիթմի միջոցով (STM32F4). Բարև բոլորին, սա tahir ul haq է մեկ այլ նախագծով: Այս անգամ այն STM32F407 է որպես MC: Սա կիսամյակային ծրագրի ավարտ է: Հուսով եմ, որ ձեզ դուր կգա: Այն պահանջում է շատ հասկացություններ և տեսություն, ուստի մենք առաջինը կմտնենք դրա մեջ: Համակարգիչների գալուստով և