Përmbajtje:

Makina e algoritmit: 13 hapa (me fotografi)
Makina e algoritmit: 13 hapa (me fotografi)

Video: Makina e algoritmit: 13 hapa (me fotografi)

Video: Makina e algoritmit: 13 hapa (me fotografi)
Video: НЕ ВЗДУМАЙ снимать аккумулятор с машины. Делай это ПРАВИЛЬНО ! 2024, Korrik
Anonim
Image
Image
Shiriti LED: Shtypni maskën në 3D
Shiriti LED: Shtypni maskën në 3D

Unë kam mësuar shkenca kompjuterike në nivelin e kolegjit për 15 vjet, dhe megjithëse ekspertiza ime është më shumë në anën e programimit, unë ende shpenzoj shumë kohë duke mbuluar algoritme standarde për kërkimin dhe renditjen. Nga pikëpamja e mësimdhënies, çështja qendrore është kompleksiteti llogaritës: sa kohë kërkon secili algoritëm, duke pasur parasysh inputin e një madhësie të veçantë? Por ka shumë nuanca. Për shembull, a kanë algoritmet ekzekutime të ndryshme në varësi të vlerave specifike të hyrjes (në krahasim me madhësinë)? Në cilat raste do të zgjidhni një algoritëm të renditjes mbi një tjetër? Megjithëse ne i diskutojmë këto çështje në mënyrë abstrakte, gjithmonë më shqetësonte se nuk kishte asnjë mënyrë të lehtë për të parë se si funksionojnë algoritme të ndryshme në kushte të ndryshme.

Golat

Qëllimi im kryesor për këtë projekt ishte krijimi i një ekrani interaktiv për studentët që të vizualizojnë dhe eksplorojnë algoritmet. U kufizova në algoritmet që punojnë në vargjet e vlerave (numra të plotë), kështu që mund të përdor një shirit LED të adresueshëm RGB për të vizualizuar përmbajtjen e grupit. Grupi ka 100 elementë, dhe secili numër i plotë është hartuar në një ngjyrë sipas renditjes së ylberit, në mënyrë që të jetë menjëherë e qartë kur vargu është i renditur, i renditur pjesërisht ose i rastësuar. Përveç vlerave, megjithatë, doja një mënyrë për të vizualizuar aspektet e kontrollit të algoritmit - për shembull, cilat elementë të grupit aktualisht po krahasohen ose shkëmbehen.

Qëllimet specifike janë:

- Siguroni një shumëllojshmëri të algoritmeve të kërkimit dhe renditjes

- Vizualizoni vlerat në grup në një mënyrë që nxjerr në pah përparimin e algoritmit

- Vizualizoni kontrollin e algoritmit; në veçanti, elementët që merren parasysh.

- Lejoni përdoruesit të zgjedhin modelet e të dhënave hyrëse në vend që të gjenerojnë gjithmonë vlera të rastësishme

- Lejoni përdoruesit të kontrollojnë shpejtësinë dhe të ndalojnë algoritmin

-Lejoni përdoruesit të detyrojnë sjelljen në rastin më të mirë, në rastin më të keq, në rastin mesatar (algoritmi specifik)

- Tregoni numrin e hapave ndërsa algoritmi vazhdon

Vizualizimi

Nga pikëpamja e dizajnit fizik, pjesa më interesante e këtij projekti është vizualizimi i grupit. Kam luftuar se si të tregoj të dhënat dhe kontrollin dhe si të krijoj vetë pajisjen e ekranit. Qëllimi im ishte të tregoja vlerat e të dhënave si qarqe me ngjyrë dhe pikat e kontrollit si shigjeta me ngjyrë që tregojnë vlerat e të dhënave. Pas disa eksperimentimeve u vendosa në një dizajn me dy shirita paralel prej 100 LED RGB (WS2812) me një maskë rrethore mbi secilën LED të të dhënave dhe një maskë trekëndore mbi secilën LED kontrolluese. Kam bërë një model 3D të maskës me 10 palë rrathë dhe trekëndësha, dhe më pas kam printuar 3D 10 nga këto module për një total prej 100 qarqesh dhe 100 trekëndësha. Madhësia dhe hapësira e maskës sime është projektuar për shirita me 100 LED për metër. Skedarët e modelit 3D jepen më vonë në këtë përshkrim.

Elektronikë dhe rrethim

Pjesa tjetër e pajisjes është e drejtpërdrejtë, nga pikëpamja elektronike. Përveç dy shiritave LED, ka një mori butonash të çastit, një kodues rrotullues (për kontrollin e shpejtësisë) dhe një ekran me 7 segmente (për të treguar hapat). Me kaq shumë butona dhe kontrolle zgjodha të përdor një mikrokontrollues ESP32 sepse ekspozon shumë kunja dhe sepse është mjaft i fuqishëm. Unë do të kaloj mbi strategjinë e instalimeve elektrike, por është mjaft themelore. Ju ndoshta mund të bëni diçka të zgjuar me regjistrat e ndërrimit nëse doni të përdorni më pak kunja.

Mund ta ndërtoni rrethimin për këtë pajisje në shumë forma të ndryshme. Fillimisht e imagjinova si një dërrasë të madhe drejtkëndëshe me shirit LED në pjesën e sipërme, dhe një rrjetë butonash në mes. Forma me të cilën përfundova është frymëzuar nga një lloj pikëpamje e viteve 1960 për teknologjinë e epokës hapësinore. Ju gjithashtu mund ta ndërtoni atë me shirita LED në një orientim vertikal. Ose bëjeni pjesën LED shumë më të madhe - mbushni një mur të tërë - me një panel kontrolli të veçantë.

Softuer

Kodi për këtë pajisje është i disponueshëm lirshëm në GitHub, dhe unë kam bërë çmos për të dokumentuar se si funksionon dhe si ta konfiguroj atë. Biblioteka e vetme e jashtme që ju nevojitet është FastLED për të drejtuar shiritat WS2812.

Furnizimet

Elektronikë

1 bord zhvillimi ESP32 (p.sh., 2 shirita LED të ngjashëm WS2812, densitet 100 LED për metër (p.sh., 1 Butoni "fillimi" i trekëndëshit (p.sh., 12 butona çasti (p.sh., https://amzn.com/B01N4D4750) - forma të ndryshme nëse dëshironi

1 pako (20) lidhës të butonave të paravendosur (p.sh., 1 Paketë lidhësish JST (p.sh., 1 Kodues rrotullues (p.sh., 1 Çelës për kodifikues rrotullues (p.sh., 1 Paketë lidhës Dupont (p.sh., https://amzn.com/B014YTPFT8) - ia vlen të marrësh edhe mjetin e shtypjes.

1 prizë fuçi (për energji) (p.sh., 1 ekran numerik 7 segmentesh TM1637 (p.sh., Pajisje saldimi dhe instalime elektrike

Skedarë të modelit 3D

Ju mund të gjeni modelin 3D për një palë module me 10 dritë në Thingiverse:

www.thingiverse.com/thing:4178181

Ju do të duhet të printoni këtë model pesë herë për një total prej 10 modulesh.

Softuer

github.com/samguyer/AlgorithmMachine

Rrethim

Dru, pleksiglas, bulona dhe vida prej çeliku inox

Material difuzioni. I preferuari im është Lee Filters #216 difuzioni i plotë i bardhë, por ka mundësi të tjera. Edhe letra e bardhë e thjeshtë bën një punë të mirë.

Hapi 1: Algoritmet 101

Shumë njerëz mendojnë se shkenca kompjuterike është në thelb studimi i programimit. Por zemra dhe shpirti i vërtetë i kësaj fushe janë algoritmet: studimi i procedurave sistematike për zgjidhjen e problemeve dhe koston e tyre (zakonisht, sa kohë zgjasin). Figurat themelore në këtë fushë, si Alan Turing, Alonzo Church dhe Edsger Dijkstra, po mendonin për këto ide para se kompjuterat siç i njohim të ekzistonin.

Karakteristika kryesore e një algoritmi për të zgjidhur një problem të veçantë është se ai është i detajuar dhe i saktë, në mënyrë që dikush ta përdorë atë për të marrë një zgjidhje pa e kuptuar se si funksionon fare; thjesht ndiqni hapat në mënyrë mekanike dhe do të merrni përgjigjen e duhur. Ju mund të shihni se si kjo ndihmon me programimin e kompjuterëve, pasi ata kanë nevojë për këtë nivel detajesh. Një kompjuter nuk mund të plotësojë detajet që mungojnë ose të bëjë gjykime, siç mundet një person.

Sa do të zgjas?

Pasi të kemi një procedurë të detajuar, një pyetje e natyrshme është sa kohë do të duhet për të marrë përgjigjen? Ne nuk mund të përdorim njësi të zakonshme të kohës, pasi varet se kush po e bën punën (krahaso sa shpejt një person mund të llogarisë diçka kundrejt një superkompjuter). Përveç kësaj, varet nga sa të dhëna kemi. Cleshtë e qartë se kërkon më shumë kohë për të kërkuar një listë me një milion numra telefoni sesa një listë me njëqind.

Për të përshkruar koston e një algoritmi, ne së pari zgjedhim një operacion në procedurën që përfaqëson një "hap" - zakonisht diçka e thjeshtë, si krahasimi ose shtimi i dy numrave, që kërkon një sasi të caktuar kohe për t'u bërë. Pastaj dalim me një formulë që përshkruan sa hapa do të ndërmarrë algoritmi duke pasur parasysh një numër të artikujve të të dhënave. Për arsye historike, ne pothuajse gjithmonë shënojmë numrin e artikujve të të dhënave me një shkronjë N.

Për shembull, shikimi i një liste të numrave të telefonit N kërkon N hapa. Shikimi i listës dy herë merr hapa 2N. Të dyja këto quhen algoritme lineare të kohës - numri i përgjithshëm i hapave është një shumëfish i madhësisë së hyrjes. Algoritmet e tjera janë kuadratike (koha N në katror) ose kub (N kub) ose logaritmik (log N) ose ndonjë kombinim i tyre. Disa nga problemet më të vështira llogaritëse kërkojnë algoritme të kohës eksponenciale (2^N).

OK, pra çfarë?

Kur numri i artikujve të të dhënave N është i vogël nuk ka shumë rëndësi. Për shembull, për N = 10, 10N është ai emër si N në katror. Por çfarë ndodh me N = 1000? ose N = 1000000? Një milion në katror është një numër mjaft i madh. Edhe në një kompjuter shumë të shpejtë, një algoritëm kuadratik mund të marrë shumë kohë nëse hyrja është mjaft e madhe. Algoritmet eksponenciale janë shumë më shqetësuese: për N = 50 një algoritmi eksponencial do të duhej dy javë për të përfunduar edhe në një kompjuter ku secili hap është vetëm një nanosekond (1 miliard i sekondës). Ouch!

Në anën tjetër të shkallës kemi algoritme logaritmike të kohës, të cilat janë shumë të shpejta. Koha e regjistrimit është e kundërta e kohës eksponenciale: duke pasur parasysh madhësinë e hyrjes N, numri i hapave është eksponenti T në formulën 2^T = N. Për shembull, nëse madhësia jonë e hyrjes është një miliard, atëherë një algoritëm i kohës së regjistrimit kërkon vetëm 30 hapa, pasi 2^30 = 1, 000, 000, 000. Sa e ëmbël është kjo?! ??!

Ju mund të pyesni veten, kujt i intereson madhësia e të dhënave prej miliona ose miliarda? Mendoni pak: sa përdorues ka në Facebook? Sa faqe uebi indeksohen nga Google? Sa çifte bazë ka në gjenomin njerëzor? Sa matje shkojnë në një simulim të motit?

Hapi 2: Algoritmet

Makina e Algoritmeve aktualisht zbaton algoritmet e mëposhtëm. Dy prej tyre janë algoritme kërkimi (gjeni një vlerë të veçantë në listë), pjesa tjetër janë algoritme të renditjes (vendosni vlerat në rregull).

Kërkim linear

Kërkoni listën e vlerave një nga një duke filluar nga fillimi. Kërkon kohë lineare.

Kërkimi binar

Kërkoni një listë duke e ndarë atë në mënyrë të përsëritur në gjysmë. Kërkon kohë regjistrimi, por lista duhet të renditet që të funksionojë.

Lloj flluskë

Rendit një listë duke shkëmbyer në mënyrë të përsëritur elementet fqinje që nuk janë në rregull. Kërkon kohë kuadratike.

Renditja e futjes

Renditni një listë duke vendosur secilin element në vendin e duhur në listën e vlerave të renditura tashmë. Kërkon kohë kuadratike.

Quicksort

Renditni një listë duke e ndarë listën në mënyrë të përsëritur në gjysmë dhe duke i zhvendosur të gjitha vlerat më pak se mesatarja në gjysmën e parë, dhe të gjitha vlerat më të mëdha se mesatarja në gjysmën e dytë. Në praktikë, ne nuk mund të gjejmë mesataren në mënyrë efikase, kështu që ne zgjedhim një vlerë rastësisht. Si rezultat, ky algoritëm mund të jetë kuadratik në rastin më të keq, por zakonisht kërkon kohë N * logN.

Renditja e shkrirjes

Renditni një listë duke e ndarë atë në gjysmë, duke i renditur dy gjysmat veç e veç (duke përdorur renditjen e shkrirjes), dhe më pas bashkojini ato së bashku duke gërshetuar vlerat. Gjithmonë kërkon kohë N * logN.

Renditja e grumbullit

Renditni një listë duke ndërtuar një strukturë të të dhënave të quajtur grumbull, e cila ju lejon të gjeni vlerën më të vogël në kohën e regjistrimit. Gjithmonë kërkon kohë N * logN.

Renditje bitonike

Ngjashëm me shkrirjen e renditjes dhe përzgjedhjes së shpejtë, ndani një listë në gjysmë, renditni gjysmat dhe rindërtojini ato. Ky algoritëm kërkon kohë N * logN * logN, por ka përparësinë se është e lehtë të paralelizohet.

Hapi 3: LED Bar: 3D Print Mask

Shiriti LED: Shtypni maskën në 3D
Shiriti LED: Shtypni maskën në 3D
Shiriti LED: Shtypni maskën në 3D
Shiriti LED: Shtypni maskën në 3D

Hapi i parë në ndërtimin e shiritit LED është printimi 3D i maskës që u jep dritave formën e tyre. Çdo modul mbulon dhjetë elementë të grupit, 10 vlera (qarqe) dhe 10 tregues (trekëndësha), kështu që do t'ju duhen 10 module krejt. Skedari STL që po ofroj këtu përmban dy raste të modulit, kështu që do t'ju duhet të bëni pesë cikle printimi. Unë nuk kam printerin më të mirë 3D, kështu që më duhej të bëja disa pastrime manuale mbi to duke përdorur një skedar dhe letër zmerile. Gjëja më e rëndësishme është që vrimat rrethore dhe trekëndore të jenë të pastra.

Në fotot do të shihni konfigurimin tim të provës: I fiksova dy shiritat LED dhe i lidha në një pjatë me një mikrokontrollues. Ky hap nuk është i nevojshëm, por doja të shihja se si do të dukej para se të filloja të montoja rrethimin. Rreshtova modulet e maskës në dy shiritat LED dhe drejtova një skicë të thjeshtë me ngjyra të rastësishme. Me një rrip të materialit të shpërndarjes, format dhe ngjyrat shfaqen vërtet.

Hapi 4: Alternativat e shiritit LED

Alternativat e shiritit LED
Alternativat e shiritit LED
Alternativat e shiritit LED
Alternativat e shiritit LED
Alternativat e shiritit LED
Alternativat e shiritit LED

Kur fillova për herë të parë këtë projekt, unë eksperimentova me mënyra të tjera për të bërë maskën LED. Nëse nuk keni një printer 3D, mund të konsideroni një nga këto opsione. Do të jem i sinqertë: është një dhimbje e madhe të bësh këto pjesë.

Për qarqet, bleva një tub prej bronzi 13/32, i cili është pothuajse saktësisht 1 cm në diametër. E kam prerë në njëqind segmente 1cm dhe më pas i kam lyer me llak me ngjyrë të bardhë.

Për trekëndëshat, kam përdorur fletë alumini me peshë të rëndë të prerë nga një tavë pjekje e disponueshme. Unë bëra një formë trekëndore nga druri, pastaj mbështolla shirita të shkurtër petë rreth formës dhe i ngjita ato. Përsëri, do t'ju duhen njëqind prej këtyre gjërave, kështu që duhet pak kohë dhe durim.

Hapi 5: Shtojca e shiritit LED

Rrethimi i shiritit LED
Rrethimi i shiritit LED
Rrethimi i shiritit LED
Rrethimi i shiritit LED
Rrethimi i shiritit LED
Rrethimi i shiritit LED

Rrethoja ime është mjaft e thjeshtë: dy shirita druri për anët dhe dy shirita pleksiglas për pjesën e sipërme dhe të poshtme. Të gjitha pjesët janë rreth 102 cm të gjata (1 metër për LED, plus pak më shumë për të akomoduar instalimet elektrike). Anët duhet të jenë pak më të larta se 1 cm për të bërë vend për shiritat LED. Pas prerjes së shiritave, unë sandviçova pjesët e maskës të printuar 3D midis tyre për të matur gjerësinë për pleksiglasin. Pritini dy pjesë pleksiglas gjerësinë dhe gjatësinë e shiritit. Së fundi, prerë një rrip të materialit të shpërndarjes që të përshtatet mbi maskën.

Për përhapjen më pëlqen shumë Lee Filters #216 (shpërndarje e bardhë e plotë). Shtë një fletë e hollë plastike që jep edhe difuzion pa humbur shumë dritë. Por janë gjëra të shtrenjta. Ndonjëherë mund të gjeni çarçafë më të vegjël për shitje në internet, por një rrotull i tërë do t'ju kthejë rreth 125 dollarë. Disa opsione të tjera janë letra e bardhë ose çdo lloj tjetër sateni ose plastike e mbuluar me brymë. Një zgjedhje popullore janë dyshekët e hollë të prerjes plastike.

Para se të montoni shiritin LED sigurohuni që të keni lidhësit e duhur të ngjitur në shiritat LED. Shumë shirita vijnë me plumb të para-bashkuar, kështu që ju thjesht mund t'i përdorni ato.

Fillova montimin duke vidhosur pjesën e sipërme të pleksiglasit në anët prej druri (shiko foton). Pastaj e ktheva dhe vendosa shiritin e difuzionit, i ndjekur nga 10 pjesët e maskës. Pasi isha i kënaqur me ndarjen, i fiksova në vend me disa pika zam të nxehtë.

Tjetra, vendosni dy shiritat LED krah për krah në majë të maskave. Sigurohuni që LED -të të jenë me fytyrë poshtë dhe sigurohuni që secila LED të rreshtohet me vrimën përkatëse në maskë. Shtoni pak ngjitës ose kasetë të nxehtë për të mbajtur shiritat LED në vend. Së fundi, vidhosni pjesën e pasme të pleksiglasit.

Drejtoni një model testimi. Punë e bukur! Ju keni bërë pjesën më të vështirë!

Hapi 6: Paneli i Kontrollit

Paneli i kontrollit
Paneli i kontrollit
Paneli i kontrollit
Paneli i kontrollit
Paneli i kontrollit
Paneli i kontrollit
Paneli i kontrollit
Paneli i kontrollit

Paneli i kontrollit është pjesa që jep lirinë më krijuese. Thjesht duhet të mbajë të gjitha kontrollet dhe pajisjet elektronike, së bashku me shiritin LED. Dizajni më i thjeshtë është një dërrasë drejtkëndëshe: shponi vrima për butonat dhe kontrollet dhe bashkoni shiritin LED. Më pëlqen të kombinoj dru, pleksiglas dhe materiale të tjera për të dhënë një lloj pamje steampunk / retro-moderne. Në këtë rast, unë pres një copë pleksiglas të rëndë për të mbajtur butonat kryesore të zgjedhjes së algoritmit, dhe një shufër prej druri për të mbajtur pjesën tjetër të pajisjeve elektronike. Kam shpuar vrima që të përputhen me madhësinë e butonave të arkadës. Instalimet elektrike shfaqen në anën e pasme, por më pëlqen!

Gjithashtu shpova hapësirë për ekranin me 7 segmente, koduesin rrotullues dhe disa nga instalimet elektrike në anën e pasme. Kam prerë një dado në krye për të mbajtur shiritin LED.

Hapi 7: Rrip i butonit

Harness Button
Harness Button
Harness Button
Harness Button
Harness Button
Harness Button

Instalimi i shumë butonave mund të jetë një dhimbje e vërtetë. Për fat të mirë, njerëzit që bëjnë makina arcade kanë dalë me disa lidhje standarde që mund t'i përdorni. Çdo kabllo lidhëse butoni ka dy tela, një për VCC dhe një për tokëzim. Njëra anë ka lidhje lidhëse që përshtaten me prizat në pjesën e pasme të butonit - lidhni tokën me prizën "normalisht të hapur" dhe VCC në prizën "e zakonshme". Në këtë konfigurim, kur përdoruesi shtyn butonin, qarku përfundon dhe mikrokontrolluesi do të lexojë LART HIGH në pinin përkatës të hyrjes.

Fundi tjetër i kabllit ka një lidhës JST (gjëja e vogël e bardhë). Ajo që është e bukur për këto lidhje është se ato futen vetëm në enë në një mënyrë, kështu që nuk ka asnjë mënyrë për të ndryshuar aksidentalisht VCC dhe tokëzimin.

Ajo që bëra është ndërtimi i një parzmore të vogël për këto lidhje. Unë bashkoj një seri kontejnerësh JST në një pjesë të protoboardit dhe pastaj i kthej telat përsëri në lidhësit Dupont që do t'i lidh në mikrokontrollues. Teli i kuq është linja VCC, dhe lidhet me të gjitha enët JST. Telat blu janë ato që janë të ndara për secilin buton.

Hapi 8: Kodifikues rrotullues

Kodifikues rrotullues
Kodifikues rrotullues

Kodifikuesi rrotullues lejon përdoruesin të kontrollojë shpejtësinë e algoritmit. Unë përdor një modul që vjen si një tabelë shpërthimi që përfshin rezistorë tërheqës për dy linjat e të dhënave (telat e verdhë). Ky gjithashtu ndodh të jetë një buton, por unë nuk e përdor atë veçori. Dy telat e tjerë janë VCC dhe toka. Unë gjithashtu mora një çelës të mirë yndyre.

Ajo që më pëlqen në lidhje me një kodues rrotullues, në krahasim me një potenciometër, është se ai thjesht sinjalizon rrotullimin (në drejtim të akrepave të orës kundrejt akrepave të orës) te mikrokontrolluesi, kështu që është e lehtë të ndryshosh mënyrën se si interpretohet vlera. Për shembull, ju mund t'i jepni një ndjenjë përshpejtimi (si miu) kur përdoruesi po e rrotullohet shpejt.

Hapi 9: Ekrani me 7 segmente

Ekran me 7 segmente
Ekran me 7 segmente

Nuk ka shumë për të thënë këtu. Këto gjëra gjenden kudo. LED -të kontrollohen nga një çip i quajtur TM1637, i cili komunikon me mikrokontrolluesin përmes një protokolli të thjeshtë serik. Unë përdor një bibliotekë ekzistuese që më lejon të tregoj se çfarë numri dua të tregoj, dhe bën pjesën tjetër.

Pjesa e pasme ka katër kunja: VCC, toka dhe dy tela për protokollin serik. Unë bashkova një kokë me 4 kunja, e cila lidhet me një lidhës përkatës Dupont të lidhur me mikrokontrolluesin.

Hapi 10: Bordi kryesor i kontrolluesit

Bordi Kryesor i Kontrollit
Bordi Kryesor i Kontrollit
Bordi Kryesor i Kontrollit
Bordi Kryesor i Kontrollit
Bordi Kryesor i Kontrollit
Bordi Kryesor i Kontrollit

Bordi kryesor i kontrolluesit strehon vetë mikrokontrolluesin dhe të gjithë lidhësit me kontrollet (butonat, ekrani, LED). Mikrokontrolluesi është një ESP32, i cili siguron shumë fuqi llogaritëse dhe memorie, dhe ekspozon shumë kunja. Instalimet elektrike janë mjaft standarde, por unë do të vë në dukje disa pjesë interesante.

SH NOTNIM: Ju mund të dëshironi të shikoni kodin (https://github.com/samguyer/AlgorithmMachine) para se të filloni të lidhni bordin kryesor, në mënyrë që konfigurimi i pinit tuaj të përputhet me timen.

Unë bashkova një prizë fuçi në dërrasë për energji dhe lidha dy tela bakri të fortë me fuqinë dhe binarët e tokës të bordit. Arsyeja është se shiriti LED mund të tërheqë shumë energji nëse shkëlqimi është i lartë, dhe unë nuk dua ta tërheq të gjithë atë fuqi përmes lidhësit USB në mikrokontrolluesin.

Për të thjeshtuar instalimet elektrike të butonit, unë bashkova një rrip të kokës së këndit të drejtë nga burri në femër në të gjithë anën e mikrokontrolluesit (ana e sipërme e tabelës siç tregohet). Lidhësit Dupont nga parzmoreja e butonit futen direkt në këtë kokë.

E RORTNDSISHME: fuqia për butonat (tela e kuqe) duhet të lidhet me linjën e energjisë 3.3V në mikrokontrolluesin. ESP32 është një çip 3.3V, kështu që vetëm burimet 3.3V duhet t'i bashkëngjiten kunjave të të dhënave.

Mikrokontrolluesi tërheq fuqinë (ose shtyn fuqinë) në binarët (ana e poshtme e tabelës siç tregohet) përmes kunjit 5V USB dhe tokëzimit. Të gjitha telat e tjerë të kuq/të zi janë VCC dhe të tokëzuar.

Dy telat blu janë linjat e të dhënave për shiritat LED (WS2812s). Çifti i verdhë/jeshil janë linjat e të dhënave për koduesin rrotullues, dhe çifti i verdhë janë lidhjet serike me ekranin me 7 segmente.

Hapi 11: Asambleja

Kuvendi
Kuvendi
Kuvendi
Kuvendi
Kuvendi
Kuvendi
Kuvendi
Kuvendi

Kjo seri fotografish tregon montimin dhe instalimet elektrike përfundimtare. Unë gjithashtu bashkangjita bordin kryesor të kontrolluesit në pjesën e pasme në krye.

Para se ta ndizja atë, bëra disa kontrolle për të shmangur ndonjë surprizë të keqe. Në veçanti, për t'u siguruar që nuk kisha asnjë lidhje të energjisë/tokëzimit mbrapsht, dhe as qarqe të shkurtra. Vendosni multimetrin tuaj për të provuar vazhdimësinë - do të bjerë kur të ketë një rrugë elektrike midis dy prizave. Bashkangjitni një prizë në vijën e zakonshme VCC në butonat. Pastaj ngjitni plumbin tjetër në secilën kunj të parzmore një nga një. Multimetri duhet të bjerë vetëm kur shtypni butonin. Nëse merrni ndonjë bip tjetër do të thotë që keni një përmbysje ose një shkurtim. Ndiqeni dhe rregullojeni para se të ndizni energjinë!

Hapi 12: Kodi

Së pari, hapni ID -në tuaj Arduino dhe sigurohuni që keni të instaluar bibliotekën FastLED.

Shkarkoni kodin e Algoritmit të Makinës nga GitHub:

github.com/samguyer/AlgorithmMachine.git

Ju ose mund ta klononi direkt në dosjen tuaj Arduino, ose ta kopjoni me dorë.

Para se ta ngarkoni, sigurohuni që cilësimet e pin të përputhen me konfigurimin tuaj të harduerit. I kam vendosur të gjitha cilësimet e kunjave në krye të skedarit.

Ngarko dhe shijo!

Hapi 13: Si të përdorni

Makina e Algoritmit është e thjeshtë për t’u përdorur dhe pothuajse çdo kombinim i butonave është në rregull!

Së pari, përdorni butonat e të dhënave për të inicializuar vlerat në grup. Ekzistojnë tre zgjedhje: (1) randomize, (2) shtoni një vlerë të rastësishme dhe (3) ndryshoni grupin. Vini re se vlerat janë të vazhdueshme, kështu që ju mund të bëni gjëra si renditja e tyre së pari, pastaj shtoni pak zhurmë, pastaj drejtoni një algoritëm tjetër të klasifikimit ose kërkimit.

Zgjidhni një algoritëm kërkimi ose renditje nga opsionet e tjera të butonave. Aktualisht, nuk ka reagime kur bëni këtë zgjedhje (diçka për punën e ardhshme). Pastaj shtypni butonin "luaj".

Doreza kontrollon shpejtësinë. Ju gjithashtu mund të godisni "luaj" për të ndaluar dhe çaluar algoritmin.

Do të ndalet automatikisht kur të përfundojë. Ju gjithashtu mund të godisni një buton tjetër algoritmi në çdo kohë. Makina do të ndalojë algoritmin aktual dhe do të inicializojë atë të ri, por do t'i mbajë të dhënat saktësisht ashtu siç e la algoritmi i mëparshëm.

Konkursi STEM
Konkursi STEM
Konkursi STEM
Konkursi STEM

Çmimi i Madh në Konkursin STEM

Recommended: