Tartalomjegyzék:

Az algoritmusgép: 13 lépés (képekkel)
Az algoritmusgép: 13 lépés (képekkel)

Videó: Az algoritmusgép: 13 lépés (képekkel)

Videó: Az algoritmusgép: 13 lépés (képekkel)
Videó: Таблица умножения больше не нужна / Умножение любых чисел без калькулятора @arinablog 2024, Július
Anonim
Image
Image
LED sáv: 3D nyomtatás a maszkra
LED sáv: 3D nyomtatás a maszkra

15 éve tanítok informatikát főiskolai szinten, és bár szakértelmem inkább a programozási oldalon áll, még mindig elég sok időt töltök a szabványos keresési és rendezési algoritmusok lefedésével. Oktatási szempontból a központi kérdés a számítás bonyolultsága: mennyi időt igényel az egyes algoritmusok, adott méretű bemenet mellett? De számos árnyalat van. Például az algoritmusok eltérő futási idővel rendelkeznek a konkrét bemeneti értékektől függően (a mérettel szemben)? Milyen esetekben választaná az egyik rendezési algoritmust a másik helyett? Bár ezeket a kérdéseket elvontan tárgyaljuk, mindig zavarba ejtett, hogy nem volt egyszerű módja annak, hogy megnézzük, hogyan működnek a különböző algoritmusok különböző körülmények között.

Célok

A projekt átfogó célja az volt, hogy interaktív kijelzőt készítsek a diákok számára az algoritmusok vizualizálására és felfedezésére. Az algoritmusokra korlátozódtam, amelyek érték tömbökön (egész számokon) dolgoznak, így címzett RGB LED szalagot használhatok a tömb tartalmának megjelenítéséhez. A tömb 100 elemből áll, és minden egész szám szivárványos sorrendben van leképezve, így azonnal nyilvánvaló, amikor a tömb rendezett, részben rendezett vagy véletlenszerű. Az értékek mellett azonban módot szerettem volna megjeleníteni az algoritmus vezérlő vonatkozásait - például, hogy a tömb mely elemeit hasonlítják össze vagy cserélik ki.

A konkrét célok a következők:

- Különféle keresési és rendezési algoritmusok biztosítása

- Vizualizálja a tömb értékeit oly módon, hogy kiemelje az algoritmus előrehaladását

- Az algoritmusvezérlés vizualizálása; különösen a figyelembe vett elemeket.

- Engedélyezze a felhasználóknak a bemeneti adatminták kiválasztását ahelyett, hogy mindig véletlen értékeket generálnának

- Engedélyezze a felhasználóknak a sebesség szabályozását és az algoritmus szüneteltetését

-Engedélyezze a felhasználóknak a legjobb, legrosszabb és átlagos esetek viselkedését (algoritmus-specifikus)

- Mutassa meg a lépések számát az algoritmus előrehaladtával

Megjelenítés

Fizikai tervezés szempontjából a projekt legérdekesebb része a tömb megjelenítése. Küzdöttem az adatok és a vezérlés megjelenítésének, valamint a megjelenítő eszköz felépítésének módján. Célom az volt, hogy az adatértékeket színes körként, a kontrollpontokat pedig színes nyilakként mutassam, amelyek az adatértékekre mutatnak. Némi kísérletezés után úgy döntöttem, hogy két párhuzamos, 100 RGB LED -es (WS2812) csík van, kör alakú maszkkal minden adat LED felett, és háromszög alakú maszkkal minden vezérlő LED felett. Elkészítettem a maszk 3D -s modelljét 10 pár körrel és háromszöggel, majd 3D -ben kinyomtattam ebből a modulból 10 darabot, összesen 100 kört és 100 háromszöget. A maszk méretét és távolságát 100 méterenként LED -es csíkokhoz tervezték. A 3D modellfájlok a leírás későbbi részében találhatók.

Elektronika és ház

A készülék többi része egyszerű, elektronikai szempontból. A két LED-csíkon kívül egy csomó pillanatnyi gomb, egy forgó kódoló (a sebességszabályozáshoz) és egy 7 szegmenses kijelző (a lépések megjelenítéséhez). Annyi gombbal és vezérlővel úgy döntöttem, hogy ESP32 mikrovezérlőt használok, mert sok tű látható és elég erős. Megnézem a bekötési stratégiát, de ez elég alap. Valószínűleg tudna valami okosat csinálni a műszakregiszterek segítségével, ha kevesebb tűt szeretne használni.

Ennek a készüléknek a burkolatát sokféleképpen készítheti el. Kezdetben úgy képzeltem el, mint egy nagy téglalap alakú táblát, amelynek tetején a LED csík, a közepén pedig egy gombrács. A formát, amellyel végül végeztem, egyfajta 1960-as évek űrkorszak-technológiai nézetei ihlették. A LED szalagokkal függőleges helyzetben is felépítheti. Vagy tegye a LED -részt sokkal nagyobbra - töltse ki az egész falat - külön kezelőpanellel.

Szoftver

Ennek az eszköznek a kódja szabadon elérhető a GitHubon, és mindent megtettem, hogy dokumentáljam, hogyan működik, és hogyan kell beállítani. Az egyetlen külső könyvtár, amire szüksége van, a FastLED a WS2812 szalagok meghajtásához.

Kellékek

Elektronika

1 ESP32 fejlesztőlap (pl.

2 WS2812 vagy hasonló LED szalag, sűrűség 100 LED méterenként (pl.

1 Háromszög „start” gomb (pl.

12 pillanatnyi gomb (pl. Https://amzn.com/B01N4D4750) - különböző formák, ha szeretné

1 csomag (20) előre huzalozott gombcsatlakozó (pl.

1 csomag JST csatlakozó (pl.

1 forgó kódoló (pl.

1 Forgatógomb forgatható kódolóhoz (pl.

1 Pack Dupont csatlakozók (pl. Https://amzn.com/B014YTPFT8) - érdemes beszerezni a préselő szerszámot is.

1 hordó jack (áramellátáshoz) (pl.

1 TM1637 7 szegmenses numerikus kijelző (pl.

Forrasztó és huzalozó felszerelés

3D modell fájlok

A Thingiverse-n megtalálhatja a 10 modellből álló páros 3D modelljét:

www.thingiverse.com/thing:4178181

Ezt a modellt ötször kell kinyomtatnia, összesen 10 modulhoz.

Szoftver

github.com/samguyer/AlgorithmMachine

Burkolat

Fa, plexi, rozsdamentes acél csavarok és csavarok

Diffúziós anyag. A kedvencem a Lee Filters #216 teljes fehér diffúzió, de vannak más lehetőségek is. Még a sima fehér papír is jó munkát végez.

1. lépés: Algoritmusok 101

Sokan azt gondolják, hogy az informatika lényegében a programozás tanulmányozása. De ennek a területnek a valódi szíve és lelke az algoritmusok: a problémák megoldására szolgáló módszeres eljárások és azok költségeinek tanulmányozása (jellemzően mennyi ideig tart). A területen olyan fontos személyiségek, mint Alan Turing, Alonzo Church és Edsger Dijkstra gondolkodtak ezeken az ötleteken, mielőtt a számítógépek léteztek volna.

Az adott probléma megoldására szolgáló algoritmus legfontosabb jellemzője, hogy részletes és pontos, így valaki arra használhatja a megoldást, hogy egyáltalán ne értse, hogyan működik; csak kövesse a lépéseket mechanikusan, és megkapja a helyes választ. Láthatja, hogyan segít ez a számítógépek programozásában, mivel szükségük van ilyen részletességre. A számítógép nem tudja kitölteni a hiányzó részleteket, vagy megítélni, ahogyan azt egy személy megteheti.

Mennyi időbe telik?

Miután részletes eljárást kaptunk, természetes kérdés, hogy mennyi idő alatt kapjuk meg a választ? Nem használhatjuk a szokásos időegységeket, mivel ez attól függ, hogy ki végzi a munkát (hasonlítsa össze, hogy az ember milyen gyorsan tud valamit kiszámítani, szemben a szuperszámítógéppel). Ezen kívül attól is függ, hogy mennyi adatunk van. Nyilvánvaló, hogy több időbe telik egy millió telefonszámot tartalmazó listán keresni, mint egy százas listán.

Az algoritmus költségeinek leírásához először válasszunk ki egy műveletet az eljárás során, amely egy "lépést" jelent - általában valami egyszerű dolgot, például két szám összehasonlítását vagy összeadását, amely meghatározott ideig tart. Ezután előállunk egy képlettel, amely leírja, hogy az algoritmus hány lépést tesz meg bizonyos adatelemek esetén. Történelmi okokból szinte mindig nagy számmal jelöltük az adatelemek számát.

Például az N telefonszámok listájának végigtekintése N lépést tesz. A lista kétszeri átnézése 2N lépést tartalmaz. Mindkettőt lineáris időalgoritmusnak nevezik - a lépések teljes száma a bemeneti méret néhányszorosa. Más algoritmusok másodfokú (N négyzetes idő) vagy köbös (N kockás) vagy logaritmikus (log N), vagy ezek kombinációja. A legnehezebb számítási problémák némelyike exponenciális időalgoritmusokat igényel (2^N).

Oké, akkor mi van?

Ha az N adatelemek száma kicsi, akkor nem számít. Például N = 10 esetén 10N az a név, mint N négyzet. De mi van N = 1000 -el? vagy N = 1000000? Egy millió négyzet elég nagy szám. Még egy nagyon gyors számítógépen is sokáig tarthat egy másodfokú algoritmus, ha a bemenet elég nagy. Az exponenciális algoritmusok sokkal bonyolultabbak: N = 50 esetén az exponenciális algoritmus két hétig tart, még akkor is, ha olyan számítógépen fejeződik be, ahol minden lépés csak egy nanoszekundum (1 milliárd másodperc). Jaj!

A skála másik végén logaritmikus időalgoritmusok vannak, amelyek nagyon gyorsak. A naplózási idő az exponenciális idő ellentéte: adott N bemeneti méret esetén a lépések száma a T kitevő a 2 képletben^T = N. Például, ha a bemeneti méretünk egymilliárd, akkor a naplózási algoritmus csak 30 -at igényel lépés, hiszen 2^30 = 1, 000, 000, 000. Milyen édes ez?! ??!

Lehet, hogy vajon kit érdekelnek a milliós vagy milliárdos bemeneti méretek? Gondolj csak bele: hány felhasználó van a Facebookon? Hány weboldalt indexel a Google? Hány bázispár található az emberi genomban? Hány mérés megy egy időjárási szimulációba?

2. lépés: Az algoritmusok

Az Algoritmusgép jelenleg a következő algoritmusokat valósítja meg. Közülük kettő keresési algoritmus (talál egy adott értéket a listában), a többi rendezési algoritmus (rendezze az értékeket).

Lineáris keresés

Keresse meg az értékek listáját egyenként az elejétől kezdve. Lineáris időt igényel.

Bináris keresés

Keresse meg a listát úgy, hogy többször felére osztja. Naplózási időt igényel, de a listát rendezni kell, hogy működjön.

Buborék rendezés

Rendezzen egy listát többször egymás után cserélő szomszédos elemekkel, amelyek nem sorrendben vannak. Másodfokú időt igényel.

Beszúrás rendezése

Rendezzen egy listát úgy, hogy az egyes elemeket a megfelelő helyre helyezi a már rendezett értékek listájában. Másodfokú időt igényel.

Quicksort

Rendezze a listát úgy, hogy többször felére osztja a listát, és minden értéket áthelyez a mediánnál az első felére, és minden értéket nagyobb, mint a medián a második felére. A gyakorlatban nem tudjuk hatékonyan megtalálni a mediánt, ezért véletlenszerűen választunk ki egy értéket. Ennek eredményeként ez az algoritmus a legrosszabb esetben másodfokú lehet, de általában N * logN időt igényel.

Egyesítés rendezése

Rendezze a listát úgy, hogy felére osztja, a két felét külön rendezi (az egyesítés rendezésével), majd egyesíti őket az értékek összeillesztésével. Mindig N * logN időt igényel.

Halom rendezés

Rendezze a listát egy halom nevű adatstruktúra felépítésével, amely lehetővé teszi a legkisebb érték megtalálását a naplóidőben. Mindig N * logN időt igényel.

Bitonikus fajta

Hasonlóan az egyesítés rendezéséhez és a rövidortáshoz, ossza fel a listát fele, rendezze a feleket, és egyesítse újra őket. Ez az algoritmus N * logN * logN időt igényel, de előnye, hogy könnyen párhuzamosítható.

3. lépés: LED -sáv: 3D nyomtatás a maszkra

LED sáv: 3D nyomtatás a maszkra
LED sáv: 3D nyomtatás a maszkra
LED sáv: 3D nyomtatás a maszkra
LED sáv: 3D nyomtatás a maszkra

A LED -sáv felépítésének első lépése a lámpák alakját adó maszk 3D -s nyomtatása. Minden modul lefedi a tömb tíz elemét, 10 értéket (kör) és 10 mutatót (háromszöget), tehát összesen 10 modulra lesz szüksége. Az itt megadott STL fájl két példányt tartalmaz a modulból, így öt nyomtatási ciklust kell végrehajtania. Nincs a legjobb 3D nyomtatóm, ezért kézi tisztítást kellett végeznem rajtuk fájl és csiszolópapír segítségével. A legfontosabb, hogy a kör alakú és háromszög alakú lyukak tiszták legyenek.

A fényképeken a tesztbeállításomat láthatja: leragasztottam a két LED -csíkot, és egy mikrokontrollerrel ellátott kenyértáblához kapcsoltam. Ez a lépés nem szükséges, de látni akartam, hogyan fog kinézni, mielőtt elkezdem összeszerelni a házat. Felsorakoztattam a maszk modulokat a két LED szalagon, és futottam egy egyszerű vázlatot véletlenszerű színekkel. A diffúziós anyagból készült csíkkal a formák és a színek valóban feltűnnek.

4. lépés: A LED -sáv alternatívái

LED -sáv alternatívák
LED -sáv alternatívák
LED -sáv alternatívák
LED -sáv alternatívák
LED -sáv alternatívák
LED -sáv alternatívák

Amikor először elkezdtem ezt a projektet, kísérleteztem a LED -maszk elkészítésének más módjaival. Ha nincs 3D nyomtatója, fontolja meg az alábbi lehetőségek egyikét. Őszinte leszek: óriási fájdalom elkészíteni ezeket a részeket.

A körökhöz vettem egy 13/32 sárgaréz csövet, ami majdnem pontosan 1 cm átmérőjű. Száz 1 cm -es szegmensre vágtam, majd fehérre szórtam.

A háromszögekhez egy egyszer használatos tepsiből vágott, nehéz alufóliát használtam. Fából készítettem egy háromszög alakú formát, majd rövid fóliacsíkokat tekertem a forma köré és ragasztottam. Ismét szükség lesz ezekre a dolgokra százra, ezért némi idő és türelem szükséges.

5. lépés: LED -sáv

LED rúdház
LED rúdház
LED rúdház
LED rúdház
LED rúdház
LED rúdház

A burkolatom meglehetősen egyszerű: két facsík az oldalakhoz és két plexi szalag a felső és alsó részhez. Minden alkatrész körülbelül 102 cm hosszú (1 méter a LED -ekhez, plusz egy kis extra a vezetékek elhelyezéséhez). Az oldalaknak kissé magasabbnak kell lenniük 1 cm -nél, hogy helyet biztosítsanak a LED -szalagoknak. A csíkok levágása után a 3D -s nyomtatott maszkdarabokat közéjük helyeztem, hogy megmérjem a plexi szélességét. Vágjon két darab plexit a rúd szélességében és hosszában. Végül vágjon le egy csíkot a diffúziós anyagból, hogy illeszkedjen a maszkhoz.

A diffúzióhoz nagyon szeretem a Lee Filters #216 -ot (teljes fehér diffúzió). Ez egy vékony műanyag lemez, amely egyenletes diffúziót biztosít anélkül, hogy sok fényt veszítene. De ez drága cucc. Néha találhat kisebb lapokat az interneten, de egy teljes tekercs körülbelül 125 dollárt fizet vissza. Néhány más lehetőség a fehér papír vagy bármilyen más szatén vagy matt műanyag. Népszerű választás a vékony műanyag vágószőnyegek.

A LED -sáv összeszerelése előtt győződjön meg arról, hogy a megfelelő csatlakozók a LED -csíkokhoz vannak forrasztva. Sok csíkhoz előre forrasztott vezetékek tartoznak, így csak használhatja őket.

Az összeszerelést azzal kezdtem, hogy a plexi felső darabját a fa oldalakra csavarom (lásd a fotót). Ezután megfordítottam, és behelyeztem a diffúziós csíkot, majd a 10 maszkdarabot. Miután elégedett voltam a távolsággal, néhány pont forró ragasztóval rögzítettem őket a helyükön.

Ezután tegye a két LED -csíkot egymás mellé a maszkok tetejére. Győződjön meg arról, hogy a LED -ek lefelé néznek, és győződjön meg arról, hogy mindegyik LED illeszkedik a maszk megfelelő lyukához. Adjon hozzá néhány forró ragasztót vagy szalagot, hogy a LED -csíkokat a helyén tartsa. Végül csavarja fel a plexi hátsó darabját.

Futtasson tesztmintát. Szép munka! Te csináltad a legnehezebb részt!

6. lépés: Vezérlőpult

Kezelőpanel
Kezelőpanel
Kezelőpanel
Kezelőpanel
Kezelőpanel
Kezelőpanel
Kezelőpanel
Kezelőpanel

A vezérlőpult az a rész, amely a legtöbb kreatív szabadságot biztosítja. Csak meg kell tartania az összes vezérlőt és elektronikát, valamint a LED -sávot. A legegyszerűbb kivitel egy téglalap alakú táblák: fúrjon lyukakat a gombokhoz és a kezelőszervekhez, és rögzítse a LED -sávot. Szeretek fát, plexit és más anyagokat kombinálni, hogy egyfajta steampunk / retro-modern megjelenést kapjunk. Ebben az esetben kivágtam egy darab nagy teherbírású plexit a fő algoritmusválasztó gombok tartásához, és egy fából készült rudat a többi elektronika tárolására. Furatokat fúrtam az arcade gombok méretének megfelelően. A huzalozás látszik a hátulján, de tetszik!

Fúrtam helyet a 7 szegmenses kijelzőnek, a forgó jeladónak és a hátsó huzalozásnak is. A tetején egy dadót vágtam, hogy tartsa a LED -sávot.

7. lépés: Gombheveder

Gombos heveder
Gombos heveder
Gombos heveder
Gombos heveder
Gombos heveder
Gombos heveder

A sok gomb bekötése valódi fájdalmat okozhat. Szerencsére az árkádgépeket gyártó emberek néhány szabványos csatlakozót találtak ki, amelyeket használhat. Minden gombcsatlakozó kábel két vezetékkel rendelkezik, az egyik a VCC és a másik a földeléshez. Az egyik végén ásócsatlakozók találhatók, amelyek illeszkednek a gombok hátoldalán lévő vezetékekhez - rögzítse a földet a "normálisan nyitott" vezetékhez, a VCC pedig a "közös" vezetékhez. Ebben a konfigurációban, amikor a felhasználó megnyomja a gombot, az áramkör befejeződik, és a mikrokontroller HIGH feliratot olvas a megfelelő bemeneti érintkezőn.

A kábel másik végén JST csatlakozó van (a kis fehér dolog). A szép ezekben a csatlakozókban az, hogy csak egy módon mennek be az aljzatba, így nincs mód a VCC és a föld véletlen megfordítására.

Én csináltam egy kis hevedert ezekhez a csatlakozókhoz. Egy sor JST aljzatot forrasztok egy darab protoboardra, majd a vezetékeket visszavezetem a Dupont csatlakozókhoz, amelyeket bedugok a mikrokontrollerbe. A piros vezeték a VCC vonal, és csatlakozik az összes JST aljzathoz. A kék vezetékek azok, amelyek minden gombhoz külön vannak.

8. lépés: Rotációs kódoló

Rotációs kódoló
Rotációs kódoló

A forgó kódoló segítségével a felhasználó szabályozhatja az algoritmus sebességét. Olyan modult használok, amely töréskártyaként érkezik, és felhúzó ellenállásokat tartalmaz a két adatvonalhoz (sárga vezetékek). Ez is egy gomb, de nem használom ezt a funkciót. A másik két vezeték VCC és földelt. Kaptam egy szép zsírgombot is.

A rotációs kódolóban a potenciométerrel ellentétben az tetszik, hogy csak a forgást (az óramutató járásával megegyező és az óramutató járásával ellentétes irányba) jelzi a mikrokontrollernek, így könnyen megváltoztatható az érték értelmezése. Például megadhatja a gyorsulás érzését (például egérként), amikor a felhasználó gyorsan forgatja.

9. lépés: 7 szegmenses kijelző

7 szegmenses kijelző
7 szegmenses kijelző

Itt nem sok mondanivaló van. Ezek a dolgok mindenhol jelen vannak. A LED -eket egy TM1637 nevű chip vezérli, amely egyszerű soros protokollon keresztül kommunikál a mikrokontrollerrel. Egy létező könyvtárat használok, amely lehetővé teszi, hogy megmondjam, milyen számot szeretnék megjeleníteni, a többi pedig elvégzi.

A hátlapon négy érintkező található: VCC, földelés és két vezeték a soros protokollhoz. Forrasztottam egy 4 tűs fejlécet, amely a megfelelő Dupont csatlakozóhoz csatlakozik a mikrokontrollerhez.

10. lépés: Fő vezérlőpanel

Fő vezérlőtábla
Fő vezérlőtábla
Fő vezérlőtábla
Fő vezérlőtábla
Fő vezérlőtábla
Fő vezérlőtábla

A fő vezérlőpanel magában foglalja a mikrokontrollert és a vezérlők összes csatlakozóját (gombok, kijelző, LED -ek). A mikrokontroller egy ESP32, amely nagy számítási teljesítményt és memóriát biztosít, és rengeteg tűt tár fel. A kábelezés meglehetősen szabványos, de mutatok néhány érdekességet.

MEGJEGYZÉS: Érdemes megnézni a kódot (https://github.com/samguyer/AlgorithmMachine), mielőtt elkezdi bekötni az alaplapot, hogy a pin konfigurációja megfeleljen az enyémnek.

Forrasztottam egy hordócsatlakozót a táblára az áramellátás érdekében, és két marha rézvezetéket csatlakoztattam a tábla táp- és földsíneihez. Ennek az az oka, hogy a LED -sáv nagy energiát tud felvenni, ha a fényerő magasra van állítva, és nem akarom ezt az energiát a mikrokontroller USB -csatlakozóján keresztül húzni.

A gombok bekötésének egyszerűsítése érdekében forrasztottam egy csíkot férfi-nő derékszögű fejlécből a mikrokontroller teljes oldalán (a tábla felső oldala az ábrán látható módon). A gombköteg Dupont csatlakozói közvetlenül ebbe a fejlécbe csatlakoznak.

FONTOS: a gombok áramellátását (a piros vezetéket) a mikrokontroller 3,3 V -os hálózati vezetékéhez kell csatlakoztatni. Az ESP32 egy 3,3 V -os chip, ezért csak 3,3 V -os forrásokat szabad az adatcsapokhoz csatlakoztatni.

A mikrokontroller az 5 V -os USB -n keresztül és a földelésen keresztül áramot (vagy áramot) visz a sínekhez (a tábla alsó oldala az ábrán látható módon). Az összes többi piros/fekete vezeték VCC és földelt.

A két kék vezeték a LED szalagok (WS2812s) adatvonalai. A sárga/zöld pár a forgó jeladó adatvonalai, a sárga pár pedig a 7 szegmenses kijelzőhöz való soros kapcsolat.

11. lépés: Összeszerelés

Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés

Ez a fotósorozat a végső összeszerelést és bekötést mutatja. A fő vezérlőkártyát a tetejéhez hátul is rögzítettem.

A bekapcsolás előtt elvégeztem néhány ellenőrzést, hogy elkerüljem a kellemetlen meglepetéseket. Különösen azért, hogy megbizonyosodjak arról, hogy nincsenek táp/földelő csatlakozóim visszafelé, és nincs -e rövidzárlat. Állítsa be a multimétert a folytonosság tesztelésére - sípol, ha elektromos út van a két vezeték között. Csatlakoztasson egy vezetéket a közös VCC vonalhoz a gombokhoz. Ezután egyenként csatlakoztassa a másik vezetéket a heveder minden csapjához. A multiméternek csak akkor kell sípolnia, ha megnyomja a gombot. Ha más hangjelzést kap, az azt jelenti, hogy fordított vagy rövidzárlat van. Az áram bekapcsolása előtt keresse meg és javítsa ki!

12. lépés: Kód

Először nyissa meg az Arduino IDE -t, és győződjön meg arról, hogy telepítve van a FastLED könyvtár.

Töltse le az algoritmusgép kódját a GitHub -ból:

github.com/samguyer/AlgorithmMachine.git

Vagy klónozhatja közvetlenül az Arduino mappába, vagy kézzel másolhatja.

Feltöltés előtt győződjön meg arról, hogy a tű beállításai megfelelnek a hardverkonfigurációnak. Az összes tűbeállítást a fájl tetejére helyeztem.

Töltse fel és élvezze!

13. lépés: Hogyan kell használni

Az algoritmusgép használata egyszerű, és a gombok szinte bármilyen kombinációja rendben van!

Először az adatgombokkal inicializálja a tömb értékeit. Három lehetőség közül választhat: (1) véletlenszerű, (2) egy véletlenszerű érték hozzáadása és (3) fordított tömb. Ne feledje, hogy az értékek állandóak, így először például rendezheti őket, majd hozzáadhat némi zajt, majd futtathat egy másik rendezési vagy keresési algoritmust.

Válasszon egy keresési vagy rendezési algoritmust a többi gomb közül. Jelenleg nincs visszajelzés, amikor ezt a választást választja (valami a jövőbeli munkához). Ezután nyomja meg a "lejátszás" gombot.

A gomb szabályozza a sebességet. Az algoritmus szüneteltetéséhez és szüneteltetéséhez nyomja meg a "play" gombot.

Ha elkészült, automatikusan leáll. Bármikor megnyomhat egy másik algoritmus gombot. A gép leállítja az aktuális algoritmust, és inicializálja az újat, de az adatokat pontosan úgy tartja meg, ahogy az előző algoritmus hagyta.

STEM verseny
STEM verseny
STEM verseny
STEM verseny

Fődíj a STEM versenyen

Ajánlott: