Obsah:

Algoritmový stroj: 13 krokov (s obrázkami)
Algoritmový stroj: 13 krokov (s obrázkami)

Video: Algoritmový stroj: 13 krokov (s obrázkami)

Video: Algoritmový stroj: 13 krokov (s obrázkami)
Video: Этот стиль подходит только им🤍style, julia s 2024, Júl
Anonim
Image
Image
LED lišta: 3D tlač masky
LED lišta: 3D tlač masky

Informatiku učím na vysokej škole 15 rokov a napriek tomu, že moje znalosti sú skôr z oblasti programovania, stále trávim dosť času pokrývaním štandardných algoritmov na vyhľadávanie a triedenie. Z hľadiska výučby je ústredným problémom výpočtová náročnosť: koľko času každý algoritmus vyžaduje pri danom vstupe konkrétnej veľkosti? Existuje však veľa nuancií. Majú napríklad algoritmy rôzne doby spustenia v závislosti od konkrétnych vstupných hodnôt (na rozdiel od veľkosti)? V ktorých prípadoch by ste vybrali jeden algoritmus triedenia pred druhým? Napriek tomu, že tieto problémy diskutujeme abstraktne, vždy ma znepokojilo, že neexistuje jednoduchý spôsob, ako zistiť, ako rôzne algoritmy fungujú za rôznych podmienok.

Ciele

Mojím hlavným cieľom tohto projektu bolo vytvoriť interaktívnu obrazovku pre študentov na vizualizáciu a skúmanie algoritmov. Obmedzil som sa na algoritmy, ktoré pracujú na poliach hodnôt (celé čísla), takže môžem použiť adresovateľný RGB LED pásik na vizualizáciu obsahu poľa. Pole má 100 prvkov a každé celé číslo je mapované na farbu v dúhovom poradí, takže je okamžite zrejmé, kedy je pole zoradené, čiastočne zoradené alebo randomizované. Okrem hodnôt som však chcel aj spôsob vizualizácie kontrolných aspektov algoritmu - napríklad, ktoré prvky poľa sa v súčasnosti porovnávajú alebo vymieňajú.

Konkrétne ciele sú:

- Poskytujte rôzne algoritmy vyhľadávania a triedenia

- Vizualizujte hodnoty v poli spôsobom, ktorý zvýrazňuje priebeh algoritmu

- Vizualizovať ovládanie algoritmu; najmä zvažované prvky.

- Umožnite používateľom vybrať si vzory vstupných údajov, a nie vždy generovať náhodné hodnoty

- Umožnite používateľom ovládať rýchlosť a pozastaviť algoritmus

-Umožnite používateľom vynútiť si správanie v najlepšom prípade, najhoršom prípade a priemernom prípade (špecifické pre algoritmus)

- Ukážte počet krokov, ako algoritmus pokračuje

Vizualizácia

Z hľadiska fyzického dizajnu je najzaujímavejšou časťou tohto projektu vizualizácia poľa. Bojoval som s tým, ako zobraziť údaje a ovládanie, a ako zostaviť samotné zobrazovacie zariadenie. Mojim cieľom bolo zobraziť hodnoty údajov ako farebné kruhy a kontrolné body ako farebné šípky, ktoré ukazujú na hodnoty údajov. Po nejakom experimentovaní som sa rozhodol pre návrh s dvoma paralelnými pásmi 100 RGB LED (WS2812) s kruhovou maskou nad každou dátovou LED a trojuholníkovou maskou nad každou kontrolnou LED. Vytvoril som 3D model masky s 10 pármi kruhov a trojuholníkov a potom som vytlačil 10 z týchto modulov 3D, čo predstavuje 100 kruhov a 100 trojuholníkov. Veľkosť a rozstup mojej masky je určený pre pásy so 100 diódami LED na meter. Súbory 3D modelu sú uvedené ďalej v tomto popise.

Elektronika a skriňa

Zvyšok zariadenia je jednoduchý, z pohľadu elektroniky. Okrem dvoch pásikov LED je k dispozícii množstvo okamžitých tlačidiel, otočný snímač (na ovládanie rýchlosti) a 7-segmentový displej (na zobrazenie krokov). S toľkými tlačidlami a ovládacími prvkami som sa rozhodol použiť mikrokontrolér ESP32, pretože odhaľuje veľa pinov a pretože je dosť výkonný. Prejdem si stratégiu zapojenia, ale je celkom základná. Ak chcete používať menej pinov, pravdepodobne by ste mohli urobiť niečo múdre s posuvnými registrami.

Kryt pre toto zariadenie môžete postaviť v mnohých rôznych formách. Pôvodne som si to predstavoval ako veľkú obdĺžnikovú dosku s pásom LED v hornej časti a mriežkou tlačidiel v strede. Forma, s ktorou som skončil, je inšpirovaná akýmsi pohľadom na technológiu vesmírneho veku zo 60. rokov minulého storočia. Môžete ho postaviť aj s LED pásmi vo zvislej orientácii. Alebo urobte časť LED oveľa väčšiu - vyplňte celú stenu - samostatným ovládacím panelom.

Softvér

Kód pre toto zariadenie je voľne dostupný na GitHub a ja som urobil maximum pre to, aby som zdokumentoval, ako funguje a ako ho nakonfigurovať. Jediná externá knižnica, ktorú potrebujete, je FastLED na pohon pások WS2812.

Zásoby

Elektronika

1 vývojová doska ESP32 (napr.

2 pásy LED WS2812 alebo podobné, hustota 100 LED na meter (napr.

1 Tlačidlo „štart“v trojuholníku (napr.

12 Okamžité tlačidlá (napr. Https://amzn.com/B01N4D4750) - rôzne tvary, ak chcete

1 balík (20) vopred zapojených tlačidlových konektorov (napr.

1 balík konektorov JST (napr.

1 rotačný snímač (napr.

1 gombík pre rotačný snímač (napr.

1 balík konektorov Dupont (napr. Https://amzn.com/B014YTPFT8) - oplatí sa zaobstarať si aj krimpovací nástroj.

1 Hlavný konektor (pre napájanie) (napr.

1 7-segmentový numerický displej TM1637 (napr.

Spájkovacie a elektroinštalačné zariadenia

Súbory 3D modelu

3D model pre pár 10-svetelných modulov nájdete na Thingiverse:

www.thingiverse.com/thing:4178181

Tento model budete musieť vytlačiť päťkrát, aby ste získali spolu 10 modulov.

Softvér

github.com/samguyer/AlgorithmMachine

Ohrada

Skrutky a skrutky do dreva, plexiskla, nehrdzavejúcej ocele

Difúzny materiál. Mám najradšej plnofarebnú difúziu Lee Filters #216, ale existujú aj ďalšie možnosti. Aj obyčajný biely papier odvádza dobrú prácu.

Krok 1: Algoritmy 101

Mnoho ľudí si myslí, že informatika je v podstate štúdiom programovania. Skutočnou podstatou a dušou tejto oblasti sú však algoritmy: štúdium systematických postupov pri riešení problémov a ich nákladov (spravidla ako dlho trvajú). Semenné postavy v tejto oblasti, ako Alan Turing, Alonzo Church a Edsger Dijkstra, o týchto myšlienkach premýšľali skôr, ako počítače, ako ich poznáme, vôbec existovali.

Kľúčovou vlastnosťou algoritmu na riešenie konkrétneho problému je, že je podrobný a presný, takže ho niekto mohol použiť na nájdenie riešenia bez toho, aby vôbec chápal, ako funguje; postupujte podľa mechanických pokynov a dostanete správnu odpoveď. Môžete vidieť, ako to pomáha pri programovaní počítačov, pretože potrebujú túto úroveň podrobností. Počítač nemôže vyplniť chýbajúce údaje alebo urobiť úsudok tak, ako to dokáže človek.

Ako dlho to trvá?

Keď máme podrobný postup, prirodzenou otázkou je, ako dlho bude trvať, kým dostaneme odpoveď? Bežné časové jednotky nemôžeme použiť, pretože to závisí od toho, kto prácu robí (porovnajte, ako rýchlo by človek dokázal niečo vypočítať v porovnaní so superpočítačom). Navyše to závisí od toho, koľko údajov máme. Je zrejmé, že vyhľadávanie v zozname miliónov telefónnych čísel trvá dlhšie ako v stovke.

Na opis nákladov na algoritmus najskôr vyberieme operáciu v postupe, ktorá predstavuje jeden „krok“- zvyčajne ide o niečo jednoduché, ako je porovnanie alebo pridanie dvoch čísel, na vykonanie ktorého je potrebný pevný čas. Potom prídeme so vzorcom, ktorý popisuje, koľko krokov algoritmus vykoná pri určitom počte dátových položiek. Z historických dôvodov takmer vždy označujeme počet dátových položiek s veľkým N.

Napríklad prezeranie zoznamu N telefónnych čísel trvá N krokov. Prehliadnutie zoznamu dvakrát trvá 2N krokov. Oba sa nazývajú lineárne časové algoritmy - celkový počet krokov je niekoľkonásobkom vstupnej veľkosti. Ostatné algoritmy sú kvadratické (N na druhú) alebo kubické (N na kocky) alebo logaritmické (log N) alebo ich kombinácia. Niektoré z najťažších výpočtových problémov vyžadujú exponenciálne časové algoritmy (2^N).

Ok, a čo?

Keď je počet dátových položiek N malý, nezáleží na tom. Napríklad pre N = 10 je 10N názov ako N na druhú. Ale čo N = 1000? alebo N = 10 000 000? Milión štvorcový je dosť veľké číslo. Aj na veľmi rýchlom počítači môže kvadratický algoritmus trvať dlho, ak je vstup dostatočne veľký. Exponenciálne algoritmy sú oveľa problematickejšie: pre N = 50 by exponenciálnemu algoritmu trvalo dva týždne, kým by sa dokončil aj na počítači, kde je každý krok iba jedna nanosekunda (1 miliardtina sekundy). Au!

Na druhom konci stupnice sú logaritmické časové algoritmy, ktoré sú veľmi rýchle. Čas záznamu je opakom exponenciálneho času: vzhľadom na vstupnú veľkosť N je počet krokov exponent T vo vzorci 2^T = N. Ak je napríklad naša vstupná veľkosť jedna miliarda, potom algoritmus denníka času vyžaduje iba 30 kroky, pretože 2^30 = 1 000 000 000 000 000. To je aké sladké?! ??!

Mohlo by vás zaujímať, koho zaujímajú vstupné veľkosti v miliónoch alebo miliardách? Zamyslite sa nad tým: koľko používateľov je na Facebooku? Koľko webových stránok je indexovaných spoločnosťou Google? Koľko párov báz je v ľudskom genóme? Koľko meraní slúži na simuláciu počasia?

Krok 2: Algoritmy

Algoritmový stroj v súčasnosti implementuje nasledujúce algoritmy. Dva z nich sú vyhľadávacie algoritmy (v zozname nájdite konkrétnu hodnotu), ostatné sú radiace algoritmy (usporiadajte hodnoty).

Lineárne vyhľadávanie

Prehľadávajte zoznam hodnôt jednu po druhej od začiatku. Vyžaduje lineárny čas.

Binárne vyhľadávanie

Zoznam vyhľadávajte opakovaným delením na polovicu. Vyžaduje čas prihlásenia, ale zoznam musí byť zoradený, aby fungoval.

Bublinkové triedenie

Zoraďte zoznam a opakovane vymieňajte susedné prvky, ktoré nie sú v poriadku. Vyžaduje kvadratický čas.

Vkladacie triedenie

Zoradiť zoznam umiestnením každého prvku na jeho správne miesto v zozname už zoradených hodnôt. Vyžaduje kvadratický čas.

Rýchle triedenie

Zoraďte zoznam tak, že ho opakovane rozdelíte na polovicu a presuniete všetky hodnoty menšie ako medián do prvej polovice a všetky hodnoty väčšie ako medián do druhej polovice. V praxi nemôžeme efektívne nájsť medián, preto vyberáme hodnotu náhodne. Výsledkom je, že tento algoritmus môže byť v najhoršom prípade kvadratický, ale spravidla vyžaduje čas N * logN.

Zlúčiť triedenie

Zoznam zoraďte tak, že ho rozdelíte na polovicu, zoradíte obe polovice oddelene (pomocou zlúčeného triedenia) a potom ich spojíte dohromady vložením hodnôt. Vždy vyžaduje N * čas prihlásenia.

Halda

Zoraďte zoznam zostavením dátovej štruktúry nazývanej halda, ktorá vám umožní nájsť najmenšiu hodnotu v čase denníka. Vždy vyžaduje N * čas prihlásenia.

Bitonické triedenie

Podobne ako pri zlúčení a rýchlom triedení rozdeľte zoznam na polovicu, polovičky zoraďte a skombinujte. Tento algoritmus vyžaduje čas N * logN * logN, ale má výhodu v tom, že je ľahké ho paralelizovať.

Krok 3: Panel LED: 3D tlač masky

LED lišta: 3D tlač masky
LED lišta: 3D tlač masky
LED lišta: 3D tlač masky
LED lišta: 3D tlač masky

Prvým krokom pri stavbe LED baru je 3D tlač masky, ktorá dáva svetlám tvar. Každý modul pokrýva desať prvkov poľa, 10 hodnôt (kruhy) a 10 indikátorov (trojuholníky), takže budete potrebovať celkom 10 modulov. Súbor STL, ktorý tu poskytujem, obsahuje dve inštancie modulu, takže budete musieť vykonať päť tlačových cyklov. Nemám najlepšiu 3D tlačiareň, takže som na nich musel vykonať ručné čistenie pomocou súboru a brúsneho papiera. Najdôležitejšie je, aby boli kruhové a trojuholníkové otvory čisté.

Na fotografiách uvidíte moje testovacie nastavenie: Oba pásy LED som prilepil páskou a zavesil na dosku s mikrokontrolérom. Tento krok nie je potrebný, ale chcel som vidieť, ako to bude vyzerať, než som začal montovať kryt. Zarovnal som moduly masky na dva pásy LED a spustil som jednoduchý náčrt s náhodnými farbami. S pruhom difúzneho materiálu tvary a farby skutočne vyniknú.

Krok 4: Alternatívy panela LED

Alternatívy LED panelov
Alternatívy LED panelov
Alternatívy panelov LED
Alternatívy panelov LED
Alternatívy LED panelov
Alternatívy LED panelov

Keď som prvýkrát začal s týmto projektom, experimentoval som s inými spôsobmi výroby masky LED. Ak nemáte 3D tlačiareň, môžete zvážiť jednu z týchto možností. Budem úprimný: vyrobiť tieto diely je obrovská bolesť.

Na kruhy som kúpil mosadznú rúrku 13/32, ktorá má priemer takmer presne 1 cm. Nakrájal som ho na sto 1 cm segmentov a potom som ich nastriekol na bielo.

Na trojuholníky som použil ťažkú hliníkovú fóliu narezanú z jednorazového pekáča. Z dreva som vyrobil trojuholníkovú formu, potom som okolo formy omotal krátke pásy fólie a zalepil ich páskou. Opäť budete potrebovať sto týchto vecí, takže to chce nejaký čas a trpezlivosť.

Krok 5: Kryt lišty LED

Kryt LED diódy
Kryt LED diódy
Kryt LED diódy
Kryt LED diódy
Kryt LED diódy
Kryt LED diódy

Moja ohrada je pomerne jednoduchá: dva pásy dreva na boky a dva pásy plexiskla na vrch a spodok. Všetky diely sú zhruba 102 cm dlhé (1 meter pre LED diódy, plus niečo navyše pre zapojenie). Boky by mali byť o niečo vyššie ako 1 cm, aby sa vytvoril priestor pre LED pásy. Po prerezaní pásov som medzi ne vložil kusy 3D tlačenej masky, aby som zmeral šírku plexiskla. Odrežte dva kusy plexiskla na šírku a dĺžku tyče. Nakoniec odrežte prúžok difúzneho materiálu, aby sa zmestil na masku.

Na difúziu sa mi veľmi páči Lee Filters #216 (plná biela difúzia). Je to tenká plastová fólia, ktorá poskytuje rovnomernú difúziu bez straty veľa svetla. Ale sú to drahé veci. Niekedy môžete online nájsť na predaj menšie listy, ale celý kotúč vás vyjde zhruba na 125 dolárov. Niektoré ďalšie možnosti sú biely papier alebo akýkoľvek iný druh saténu alebo matného plastu. Populárnou voľbou sú tenké plastové rezacie podložky.

Pred zostavením lišty LED sa uistite, že máte k LED pásikom spájkované príslušné konektory. Mnoho pásov je dodávaných s vopred spájkovanými vodičmi, takže ich môžete použiť iba.

Montáž som zahájil naskrutkovaním horného kusu plexiskla na drevené boky (viď foto). Potom som ho prevrátil a vložil doň difúzny pás, potom nasledovalo 10 kúskov masky. Keď som bol s rozstupom spokojný, pripol som ich na miesto niekoľkými bodkami horúceho lepidla.

Potom položte dva pásy LED vedľa seba na vrch masiek. Dbajte na to, aby LED diódy smerovali nadol a aby každá LED dióda bola v súlade s príslušným otvorom v maske. Pridajte horúce lepidlo alebo pásku, aby LED pásy držali na svojom mieste. Nakoniec priskrutkujte zadný diel plexiskla.

Spustite testovací vzor. Dobrá práca! Zvládli ste to najťažšie!

Krok 6: Ovládací panel

Ovládací panel
Ovládací panel
Ovládací panel
Ovládací panel
Ovládací panel
Ovládací panel
Ovládací panel
Ovládací panel

Ovládací panel je časťou, ktorá poskytuje najväčšiu kreatívnu slobodu. Jednoducho musí obsahovať všetky ovládacie prvky a elektroniku spolu s lištou LED. Najjednoduchším dizajnom sú obdĺžnikové dosky: vyvŕtajte otvory pre tlačidlá a ovládače a pripevnite lištu LED. Rád kombinujem drevo, plexisklo a iné materiály, aby som získal akýsi steampunk / retro-moderný vzhľad. V tomto prípade som odrezal kus odolného plexiskla, aby držal tlačidlá výberu hlavného algoritmu, a drevenú tyč, do ktorej sa zmestí zvyšok elektroniky. Vyvŕtal som otvory, aby zodpovedali veľkosti arkádových gombíkov. Elektroinštalácia sa ukazuje na zadnej strane, ale páči sa mi to!

Vyvrtal som tiež priestor pre 7-segmentový displej, rotačný snímač a niektoré káble na zadnej strane. V hornej časti som vyrezal dado, aby držal lištu LED.

Krok 7: Postroj na gombíky

Gombíkový postroj
Gombíkový postroj
Gombíkový postroj
Gombíkový postroj
Gombíkový postroj
Gombíkový postroj

Zapojenie mnohých tlačidiel môže byť skutočná bolesť. Našťastie ľudia, ktorí vyrábajú arkádové stroje, prišli s niektorými štandardnými konektormi, ktoré môžete použiť. Každý kábel konektora tlačidla má dva vodiče, jeden pre VCC a jeden pre uzemnenie. Na jednom konci sú rydlové konektory, ktoré zodpovedajú káblom na zadnej strane tlačidla - uzemnite uzemnenie k „normálne otvorenému“vodiču a VCC k „spoločnému“káblu. V tejto konfigurácii, keď používateľ stlačí tlačidlo, obvod sa dokončí a mikrokontrolér bude čítať HIGH na zodpovedajúcom vstupnom pine.

Druhý koniec kábla má konektor JST (malá biela vec). Na týchto konektoroch je pekné, že idú do zásuvky iba jedným spôsobom, takže neexistuje spôsob, ako omylom obrátiť VCC a uzemnenie.

Čo som urobil, je vybudovať malý zväzok pre tieto konektory. Na kus protoboardu spájkujem sériu zásuviek JST a potom zavediem vodiče späť do konektorov Dupont, ktoré zapojím do mikrokontroléra. Červený vodič je linkou VCC a pripája sa ku všetkým zásuvkám JST. Modré vodiče sú samostatné pre každé tlačidlo.

Krok 8: Rotačný kodér

Rotačný kodér
Rotačný kodér

Rotačný kodér umožňuje užívateľovi ovládať rýchlosť algoritmu. Používam modul, ktorý je dodávaný ako oddeľovacia doska, ktorá obsahuje výsuvné odpory pre dve dátové linky (žlté vodiče). Toto je tiež tlačidlo, ale túto funkciu nepoužívam. Ďalšie dva vodiče sú VCC a uzemnené. Tiež som dostal pekný tučný gombík.

Čo sa mi páči na rotačnom kodéri, na rozdiel od potenciometra, je to, že mikrokontroléru iba signalizuje otáčanie (v smere hodinových ručičiek oproti proti smeru hodinových ručičiek), takže je ľahké zmeniť spôsob interpretácie hodnoty. Môžete mu napríklad dať pocit zrýchlenia (ako myš), keď ho používateľ rýchlo roztočí.

Krok 9: 7-segmentový displej

7-segmentový displej
7-segmentový displej

Tu nie je veľa čo hovoriť. Tieto veci sú všade. LED diódy sú ovládané čipom TM1637, ktorý komunikuje s mikrokontrolérom prostredníctvom jednoduchého sériového protokolu. Používam existujúcu knižnicu, ktorá mi umožňuje povedať, aké číslo chcem zobraziť, a to ostatné urobí on.

Zadná strana má štyri piny: VCC, uzemnenie a dva vodiče pre sériový protokol. Spájkoval som 4-kolíkový konektor, ktorý sa pripája k zodpovedajúcemu konektoru Dupont zapojenému do mikrokontroléra.

Krok 10: Hlavná doska ovládača

Hlavný radič
Hlavný radič
Hlavný radič
Hlavný radič
Hlavný radič
Hlavný radič

Na hlavnej doske ovládača je umiestnený samotný mikrokontrolér a všetky konektory k ovládacím prvkom (tlačidlá, displej, diódy LED). Mikrokontrolér je ESP32, ktorý poskytuje veľa výpočtového výkonu a pamäte a ponúka množstvo pinov. Zapojenie je celkom štandardné, ale poukážem na niekoľko zaujímavých kúskov.

POZNÁMKA: Skôr než začnete zapojovať hlavnú dosku, mali by ste sa pozrieť na kód (https://github.com/samguyer/AlgorithmMachine), aby sa vaša konfigurácia pinov zhodovala s mojou.

Na dosku som spájkoval napájací kábel a na napájaciu a uzemňovaciu koľajnicu dosky som pripojil dva mohutné medené drôty. Dôvodom je, že lišta LED môže čerpať veľa energie, ak je jas nastavený na vysokú úroveň, a nechcem celú túto energiu ťahať cez konektor USB na mikrokontroléri.

Na zjednodušenie zapojenia tlačidiel som spájkoval prúžok pravouhlého konektora medzi mužmi a ženami po celej strane mikrokontroléra (horná strana dosky, ako je znázornené). Konektory Dupont z káblového zväzku sa pripájajú priamo do tejto hlavičky.

DÔLEŽITÉ: napájanie tlačidiel (červený vodič) musí byť pripojené k elektrickému vedeniu 3,3 V na mikrokontroléri. ESP32 je čip 3,3 V, takže k dátovým kolíkom by mali byť vždy pripojené iba zdroje 3,3 V.

Mikrokontrolér odoberá energiu (alebo tlačí energiu) na koľajnice (spodná strana dosky, ako je to znázornené) cez 5V USB kolík a uzemnenie. Všetky ostatné červené/čierne vodiče sú VCC a uzemnené.

Dva modré vodiče sú dátové linky pre pásy LED (WS2812s). Žltý/zelený pár sú dátové linky pre rotačný snímač a žltý pár je sériové pripojenie k 7-segmentovému displeju.

Krok 11: Zostavenie

zhromaždenie
zhromaždenie
zhromaždenie
zhromaždenie
zhromaždenie
zhromaždenie
zhromaždenie
zhromaždenie

Táto séria fotografií ukazuje konečnú montáž a zapojenie. Hlavnú dosku ovládača som tiež navrchu pripevnil k zadnej časti.

Pred zapnutím som vykonal niekoľko kontrol, aby som predišiel nepríjemným prekvapeniam. Najmä aby som sa uistil, že nemám dozadu žiadne napájacie/uzemňovacie konektory a žiadne skraty. Nastavte multimetr na test kontinuity - pípne, ak je medzi dvoma vodičmi elektrická cesta. Pripojte jeden zvod k spoločnému riadku VCC k tlačidlám. Potom jeden po druhom pripevnite druhý vodič na každý kolík postroja. Multimeter by mal pípať iba vtedy, keď stlačíte tlačidlo. Ak zaznie ďalšie pípnutie, znamená to, že máte reverz alebo skrat. Pred zapnutím napájania ho vystopujte a opravte!

Krok 12: Kód

Najprv otvorte svoje Arduino IDE a uistite sa, že máte nainštalovanú knižnicu FastLED.

Stiahnite si strojový kód algoritmu z GitHub:

github.com/samguyer/AlgorithmMachine.git

Môžete ho buď klonovať priamo do priečinka Arduino, alebo ho skopírovať ručne.

Pred odoslaním sa uistite, že nastavenia pinov zodpovedajú vašej hardvérovej konfigurácii. V hornej časti súboru som umiestnil všetky nastavenia špendlíkov.

Nahrajte a užívajte si!

Krok 13: Ako používať

Algoritmový stroj sa ľahko používa a takmer každá kombinácia tlačidiel je v poriadku!

Najprv pomocou dátových tlačidiel inicializujte hodnoty v poli. Existujú tri možnosti: (1) randomizovať, (2) pridať jednu náhodnú hodnotu a (3) obrátiť pole. Hodnoty sú trvalé, takže môžete robiť napríklad veci, ako ich zoradiť, potom pridať trochu šumu a potom spustiť iný algoritmus triedenia alebo vyhľadávania.

Vyberte algoritmus vyhľadávania alebo triedenia z ďalších možností tlačidiel. V súčasnosti neexistuje žiadna spätná väzba, keď sa tak rozhodnete (niečo pre budúcu prácu). Potom kliknite na tlačidlo „prehrať“.

Gombík ovláda rýchlosť. Algoritmus môžete pozastaviť alebo zrušiť aj stlačením „Prehrať“.

Po dokončení sa automaticky zastaví. Kedykoľvek môžete tiež stlačiť tlačidlo iného algoritmu. Zariadenie zastaví aktuálny algoritmus a inicializuje nový, ale zachová údaje presne tak, ako ich opustil predchádzajúci algoritmus.

STEM Contest
STEM Contest
STEM Contest
STEM Contest

Veľká cena v súťaži STEM

Odporúča: