Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: Algoritmit 101
- Vaihe 2: Algoritmit
- Vaihe 3: LED -palkki: 3D -tulostus
- Vaihe 4: LED -palkin vaihtoehdot
- Vaihe 5: LED -palkkikotelo
- Vaihe 6: Ohjauspaneeli
- Vaihe 7: Napinvaljaat
- Vaihe 8: Kiertokooderi
- Vaihe 9: 7-segmenttinen näyttö
- Vaihe 10: Pääohjauskortti
- Vaihe 11: Kokoonpano
- Vaihe 12: Koodi
- Vaihe 13: Kuinka käyttää
Video: Algoritmikone: 13 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
Olen opettanut tietojenkäsittelytiedettä korkeakoulutasolla 15 vuoden ajan, ja vaikka asiantuntemukseni on enemmän ohjelmointipuolella, vietän silti melko paljon aikaa kattaessani tavallisia algoritmeja etsimiseen ja lajitteluun. Opetuksen kannalta keskeinen kysymys on laskennallinen monimutkaisuus: kuinka paljon aikaa kukin algoritmi vaatii tietyn kokoisen syötteen perusteella? Mutta on monia vivahteita. Onko algoritmeilla esimerkiksi eri suoritusajat tietyistä syöttöarvoista riippuen (toisin kuin koko)? Missä tapauksissa valitsisit yhden lajittelualgoritmin toisen sijaan? Vaikka keskustelemme näistä asioista abstraktisti, minua aina harmitti se, ettei ollut helppoa tapaa nähdä, miten erilaiset algoritmit toimivat eri olosuhteissa.
Tavoitteet
Tämän projektin päätavoitteena oli luoda interaktiivinen näyttö opiskelijoille visualisoimaan ja tutkimaan algoritmeja. Rajoitin algoritmeihin, jotka toimivat arvoryhmillä (kokonaisluvut), joten voin käyttää osoitettavissa olevaa RGB -LED -nauhaa visualisoidaksesi taulukon sisällön. Taulukossa on 100 elementtiä, ja jokainen kokonaisluku yhdistetään väriin sateenkaarijärjestyksessä, joten se on heti selvää, kun taulukko lajitellaan, osittain lajitellaan tai satunnaistetaan. Arvojen lisäksi halusin kuitenkin tapa visualisoida algoritmin ohjausnäkökohdat - esimerkiksi mitä matriisin elementtejä parhaillaan verrataan tai vaihdetaan.
Erityiset tavoitteet ovat:
- Tarjoa erilaisia haku- ja lajittelualgoritmeja
- Visualisoi taulukon arvot tavalla, joka korostaa algoritmin edistymistä
- Visualisoi algoritmin ohjaus; erityisesti tarkasteltavat tekijät.
- Anna käyttäjien valita tulodatamallit sen sijaan, että ne aina generoisivat satunnaisia arvoja
- Anna käyttäjien hallita nopeutta ja keskeyttää algoritmi
-Salli käyttäjien pakottaa paras, huonoin ja keskimääräinen tapaus (algoritmikohtainen)
- Näytä vaiheiden määrä algoritmin edetessä
Visualisointi
Fyysisen suunnittelun kannalta tämän projektin mielenkiintoisin osa on taulukon visualisointi. Taistelin tietojen näyttämisen ja ohjauksen näyttämisen sekä itse näyttölaitteen rakentamisen kanssa. Tavoitteeni oli näyttää data -arvot värillisinä ympyröinä ja ohjauspisteet värillisinä nuolina, jotka osoittavat data -arvoja. Kokeilun jälkeen päädyin muotoiluun, jossa oli kaksi rinnakkaista 100 RGB -LEDin (WS2812) nauhaa. Tein maskin 3D -mallin, jossa oli 10 paria ympyröitä ja kolmioita, ja sitten 3D -tulostin 10 näistä moduuleista, yhteensä 100 ympyrää ja 100 kolmioa. Maskin koko ja väli on suunniteltu nauhoille, joissa on 100 LEDiä metriä kohti. 3D -mallitiedostot esitetään myöhemmin tässä kuvauksessa.
Elektroniikka ja kotelo
Muu laite on elektroniikan kannalta suoraviivaista. Kahden LED-nauhan lisäksi on joukko hetkellisiä painikkeita, kiertokooderi (nopeuden säätöä varten) ja 7-segmenttinen näyttö (vaiheiden näyttämiseksi). Niin monilla painikkeilla ja säätimillä päätin käyttää ESP32 -mikrokontrolleria, koska se paljastaa paljon nastoja ja koska se on melko tehokas. Käyn läpi johdotusstrategian, mutta se on melko yksinkertainen. Voit todennäköisesti tehdä jotain älykästä vuororekistereillä, jos haluat käyttää vähemmän nastoja.
Voit rakentaa kotelon tälle laitteelle monessa eri muodossa. Kuvittelin sen aluksi suurena suorakulmaisena levynä, jossa LED -nauha ylhäällä ja painikeverkko keskellä. Lomake, johon päädyin, on saanut inspiraationsa eräänlaisesta 1960-luvun näkemyksestä avaruusajan tekniikasta. Voit myös rakentaa sen LED -nauhoilla pystysuunnassa. Tai tee LED -osasta paljon suurempi - täytä koko seinä - erillisellä ohjauspaneelilla.
Ohjelmisto
Tämän laitteen koodi on vapaasti saatavilla GitHubissa, ja olen yrittänyt parhaani mukaan dokumentoida, miten se toimii ja miten se määritetään. Ainoa ulkoinen kirjasto, jota tarvitset, on FastLED WS2812 -nauhojen ajamiseen.
Tarvikkeet
Elektroniikka
1 ESP32 -kehityskortti (esim.
2 WS2812 tai vastaava LED -nauha, tiheys 100 LEDiä metriä kohti (esim.
1 kolmion käynnistyspainike (esim.
12 hetkellistä painiketta (esim. Https://amzn.com/B01N4D4750) - eri muodot, jos haluat
1 pakkaus (20) esijohdotettuja painikeliittimiä (esim.
1 kpl JST -liittimiä (esim.
1 kiertokooderi (esim.
1 Pyörivän anturin nuppi (esim.
1 Pack Dupont -liittimet (esim. Https://amzn.com/B014YTPFT8) - kannattaa hankkia myös puristustyökalu.
1 piippuliitin (virtaa varten) (esim.
1 TM1637 7-segmenttinen numeerinen näyttö (esim.
Juotos- ja johdotusvälineet
3D -mallitiedostot
Löydät 3D-mallin 10-valomoduuliparille Thingiversesta:
www.thingiverse.com/thing:4178181
Sinun on tulostettava tämä malli viisi kertaa, yhteensä 10 moduulia.
Ohjelmisto
github.com/samguyer/AlgorithmMachine
Kotelo
Puu, pleksilasi, ruostumattomasta teräksestä valmistetut pultit ja ruuvit
Diffuusiomateriaali. Suosikkini on Lee -suodattimet #216 täysi valkoinen diffuusio, mutta on myös muita vaihtoehtoja. Jopa tavallinen valkoinen paperi tekee hyvää työtä.
Vaihe 1: Algoritmit 101
Monet ihmiset ajattelevat, että tietojenkäsittelytiede on lähinnä ohjelmoinnin opiskelu. Mutta tämän alan todellinen sydän ja sielu ovat algoritmit: tutkimus systemaattisista ongelmien ratkaisumenettelyistä ja niiden kustannuksista (tyypillisesti kuinka kauan ne kestävät). Alan tärkeimmät hahmot, kuten Alan Turing, Alonzo Church ja Edsger Dijkstra, miettivät näitä ideoita ennen tietokoneita sellaisina kuin me ne tunnemme.
Keskeinen piirre algoritmille tietyn ongelman ratkaisemiseksi on, että se on yksityiskohtainen ja tarkka, jotta joku voisi käyttää sitä ratkaisun ymmärtämiseen ymmärtämättä, miten se toimii ollenkaan; noudata vain mekaanisen vaiheen ohjeita ja saat oikean vastauksen. Näet, kuinka tämä auttaa tietokoneiden ohjelmoinnissa, koska ne tarvitsevat tätä yksityiskohtien tasoa. Tietokone ei voi täyttää puuttuvia tietoja tai tehdä arvioita, kuten henkilö voi.
Kauanko se kestää?
Kun meillä on yksityiskohtainen menettely, luonnollinen kysymys on, kuinka kauan vastauksen saaminen kestää? Emme voi käyttää tavallisia aikayksiköitä, koska se riippuu siitä, kuka tekee työn (vertaa kuinka nopeasti henkilö voisi laskea jotain verrattuna supertietokoneeseen). Lisäksi se riippuu siitä, kuinka paljon dataa meillä on. On selvää, että miljoonan puhelinnumeron etsiminen kestää kauemmin kuin sadan luettelon.
Algoritmin kustannusten kuvaamiseksi valitsemme ensin jonkin toimenpiteen toiminnasta, joka edustaa yhtä "vaihetta" - yleensä jotain yksinkertaista, kuten kahden numeron vertaaminen tai lisääminen, joka kestää tietyn ajan. Sitten keksimme kaavan, joka kuvaa kuinka monta vaihetta algoritmi ottaa tietyn määrän tietokohteita. Historiallisista syistä merkitsemme lähes aina niiden tietokohteiden lukumäärän, joilla on iso N -kirjain.
Esimerkiksi N -puhelinnumeroluettelon selaaminen vie N askelta. Luettelon selaaminen kahdesti vie 2N askelta. Molempia näistä kutsutaan lineaarisiksi aika -algoritmeiksi - vaiheiden kokonaismäärä on tulon koon monikertainen. Muita algoritmeja ovat neliö (N neliöaika) tai kuutiometri (N kuutio) tai logaritminen (log N) tai jokin näiden yhdistelmä. Jotkut vaikeimmista laskentaongelmista vaativat eksponentiaalisia aika -algoritmeja (2^N).
OK, niin mitä?
Kun tietokohteiden määrä N on pieni, sillä ei ole väliä. Esimerkiksi jos N = 10, 10N on nimi N neliönä. Mutta entä N = 1000? vai N = 1000000? Miljoona neliö on aika iso luku. Jopa erittäin nopealla tietokoneella toisen asteen algoritmi voi kestää kauan, jos syöttö on riittävän suuri. Eksponentiaaliset algoritmit ovat paljon hankalampia: jos N = 50, eksponentiaalisen algoritmin suorittaminen kestää kaksi viikkoa jopa tietokoneella, jossa jokainen vaihe on vain yksi nanosekunti (1 miljardi sekunnin sekunti). Oho!
Asteikon toisessa päässä on logaritmiset aika -algoritmit, jotka ovat erittäin nopeita. Lokiaika on eksponentiaalisen ajan vastakohta: annetulla syöttökokolla N vaiheiden lukumäärä on eksponentti T kaavassa 2^T = N. Esimerkiksi, jos syöttökoko on miljardi, lokiaika -algoritmi vaatii vain 30 askelta, koska 2^30 = 1, 000, 000, 000. Kuinka suloista se on?!?!
Saatat ihmetellä, ketä kiinnostaa miljoonien tai miljardien syöttökoot? Ajattele sitä: kuinka monta käyttäjää on Facebookissa? Kuinka monta verkkosivustoa Google indeksoi? Kuinka monta emäsparia on ihmisen genomissa? Kuinka monta mittausta menee sääsimulaatioon?
Vaihe 2: Algoritmit
Algoritmikone toteuttaa tällä hetkellä seuraavia algoritmeja. Kaksi niistä on hakualgoritmeja (löytää tietyn arvon luettelosta), loput lajittelualgoritmeja (laita arvot järjestykseen).
Lineaarinen haku
Etsi arvoluettelo yksitellen alusta alkaen. Vaatii lineaarisen ajan.
Binaarihaku
Hae luettelosta jakamalla se toistuvasti puoliksi. Vaatii lokiajan, mutta luettelo on lajiteltava, jotta se toimisi.
Kuplan lajittelu
Lajittele luettelo toistuvasti vaihtavien vierekkäisten elementtien välillä. Vaatii toisen asteen ajan.
Lisäyslajittelu
Lajittele luettelo sijoittamalla jokainen elementti oikeaan paikkaan jo lajiteltujen arvojen luetteloon. Vaatii toisen asteen ajan.
Pikavalinta
Lajittele luettelo jakamalla luettelo toistuvasti puoliksi ja siirtämällä kaikki mediaania pienemmät arvot ensimmäiselle puoliskolle ja kaikki mediaania suuremmat arvot toiselle puoliskolle. Käytännössä emme voi löytää mediaania tehokkaasti, joten valitsemme arvon sattumanvaraisesti. Tämän seurauksena tämä algoritmi voi pahimmassa tapauksessa olla toisen asteen, mutta vaatii yleensä N * logN -aikaa.
Yhdistä lajittelu
Lajittele luettelo jakamalla se puoliksi, lajittelemalla molemmat puolikkaat erikseen (käyttämällä yhdistämisjärjestystä) ja yhdistämällä ne sitten yhteen limittämällä arvot. Vaatii aina N * logN -ajan.
Kasan lajittelu
Lajittele luettelo rakentamalla kasaksi kutsuttua tietorakennetta, jonka avulla voit löytää pienimmän arvon lokiajassa. Vaatii aina N * logN -ajan.
Bitoninen lajittelu
Samanlainen kuin yhdistämis- ja pikavalinta, jaa luettelo puoliksi, lajittele puolikkaat ja yhdistä ne uudelleen. Tämä algoritmi vaatii N * logN * logN -aikaa, mutta sillä on se etu, että se on helppo rinnastaa.
Vaihe 3: LED -palkki: 3D -tulostus
Ensimmäinen askel LED -palkin rakentamisessa on 3D -tulostus naamarille, joka antaa valolle muodon. Jokainen moduuli kattaa kymmenen taulukon elementtiä, 10 arvoa (ympyrää) ja 10 indikaattoria (kolmio), joten tarvitset yhteensä 10 moduulia. Tässä tarjoamani STL -tiedosto sisältää kaksi moduulin esiintymää, joten sinun on suoritettava viisi tulostusjaksoa. Minulla ei ole parasta 3D -tulostinta, joten minun piti puhdistaa ne manuaalisesti käyttämällä tiedostoa ja hiekkapaperia. Tärkeintä on, että pyöreät ja kolmiomaiset reiät ovat puhtaita.
Valokuvissa näet testiasetukseni: teipasin kaksi LED -nauhaa alas ja liitin ne leipälautaan mikrokontrollerilla. Tämä vaihe ei ole välttämätön, mutta halusin nähdä, miltä se näyttää ennen kotelon kokoamista. Kohdistin maskimoduulit kahteen LED -nauhaan ja tein yksinkertaisen luonnoksen satunnaisilla väreillä. Hajotusmateriaaliliuskalla muodot ja värit todella ponnahtavat esiin.
Vaihe 4: LED -palkin vaihtoehdot
Kun aloitin tämän projektin, kokeilin muita tapoja tehdä LED -naamio. Jos sinulla ei ole 3D -tulostinta, voit harkita jotakin näistä vaihtoehdoista. Olen rehellinen: näiden osien tekeminen on valtava tuska.
Ympyröille ostin 13/32 messinkiputken, jonka halkaisija on lähes täsmälleen 1 cm. Leikkasin sen sataan 1 cm: n lohkoon ja maalasin ne sitten ruiskumaalauksella valkoisiksi.
Kolmioissa käytin kertakäyttöisestä leivinpannasta leikattua raskasta alumiinifoliota. Tein puusta kolmion muotoisen muodon, käärin sen jälkeen lomakkeen ympärille lyhyet foliokaistat ja teipasin ne. Tarvitset jälleen satoja näitä asioita, joten se vie jonkin aikaa ja kärsivällisyyttä.
Vaihe 5: LED -palkkikotelo
Koteloni on melko yksinkertainen: kaksi puuliuskaa sivuille ja kaksi pleksilasiliuskaa ylä- ja alareunaan. Kaikki osat ovat noin 102 cm pitkiä (1 metri LEDeille ja hieman ylimääräistä johdotusta varten). Sivujen tulisi olla hieman korkeampia kuin 1 cm, jotta LED -nauhoille jää tilaa. Nauhojen leikkaamisen jälkeen panin niiden välille 3D -tulostetut naamiokappaleet plexiglassin leveyden mittaamiseksi. Leikkaa kaksi pleksilasin palkin leveyttä ja pituutta. Leikkaa lopuksi nauha diffuusiomateriaalista maskin päälle.
Levittämistä varten pidän todella Lee -suodattimista #216 (täysi valkoinen diffuusio). Se on ohut muovilevy, joka antaa tasaisen levityksen menettämättä paljon valoa. Mutta se on kallista tavaraa. Joskus löydät pienempiä arkkeja myytäväksi verkossa, mutta koko rulla asettaa sinulle takaisin noin 125 dollaria. Jotkut muut vaihtoehdot ovat valkoista paperia tai muuta satiinia tai himmeää muovia. Suosittu valinta on ohuet muovileikkausmatot.
Ennen kuin asennat LED -palkin, varmista, että liitännät on juotettu LED -nauhoihin. Monissa nauhoissa on valmiiksi juotetut johdot, joten voit vain käyttää niitä.
Aloitin kokoonpanon ruuvaamalla plexiglassin yläosan puupuolille (katso kuva). Sitten käänsin sen ympäri ja asetin diffuusiokaistan sisään ja sen jälkeen 10 naamiokappaletta. Kun olin tyytyväinen etäisyyksiin, kiinnitin ne paikoilleen muutamalla pisteellä kuumaa liimaa.
Aseta seuraavaksi kaksi LED -nauhaa vierekkäin maskin päälle. Varmista, että LED -valot ovat alaspäin ja että jokainen LED -valo on samansuuntainen maskissa olevan reiän kanssa. Lisää kuumaa liimaa tai teippiä pitämään LED -nauhat paikallaan. Kierrä lopuksi plexiglassin takaosa kiinni.
Suorita testikuvio. Hyvää työtä! Olet tehnyt vaikeimman osan!
Vaihe 6: Ohjauspaneeli
Ohjauspaneeli on osa, joka tarjoaa eniten luovaa vapautta. Siinä on vain oltava kaikki ohjaimet ja elektroniikka sekä LED -palkki. Yksinkertaisin muotoilu on suorakulmaiset levyt: poraa reiät painikkeille ja säätimille ja kiinnitä LED -palkki. Tykkään yhdistää puuta, pleksilasia ja muita materiaaleja antaakseni eräänlaisen steampunk / retro-modernin ilmeen. Tässä tapauksessa leikkasin raskaan plexiglassin, jolla pidin algoritmin päävalintapainikkeet, ja puupalkin lopun elektroniikan pitämiseksi. Porasin reikiä arcade -painikkeiden koon mukaan. Johdotus näkyy takana, mutta pidän siitä!
Porasin myös tilaa 7-segmenttiselle näytölle, kiertokooderille ja joillekin takana oleville johdotuksille. Leikkasin dadon päälle pitämään LED -palkin.
Vaihe 7: Napinvaljaat
Monien painikkeiden kytkentä voi olla todellinen kipu. Onneksi arcade -koneita valmistavat ihmiset ovat keksineet joitain vakioliittimiä, joita voit käyttää. Jokaisessa painikeliitäntäkaapelissa on kaksi johtoa, yksi VCC: lle ja toinen maadoitukselle. Toisessa päässä on lapaliittimet, jotka sopivat painikkeen takana oleviin johtimiin - kiinnitä maa "normaalisti avoimeen" johtoon ja VCC "tavalliseen" johtoon. Tässä kokoonpanossa, kun käyttäjä painaa painiketta, piiri on valmis ja mikro -ohjain lukee HIGH vastaavalla tulonastalla.
Kaapelin toisessa päässä on JST -liitin (pieni valkoinen asia). Näissä liittimissä on mukavaa, että ne menevät astiaan vain yhdellä tavalla, joten VCC: tä ja maata ei voi vahingossa kääntää.
Tein pienen valjaan näille liittimille. Juotan sarjan JST -liitäntöjä protoboard -palalle ja sitten johdon takaisin Dupont -liittimiin, jotka kytken mikrokontrolleriin. Punainen johto on VCC -linja, ja se yhdistää kaikkiin JST -liitäntöihin. Siniset johdot ovat ne, jotka ovat erillisiä jokaiselle painikkeelle.
Vaihe 8: Kiertokooderi
Pyörivän kooderin avulla käyttäjä voi hallita algoritmin nopeutta. Käytän moduulia, joka toimitetaan katkaisukorttina, joka sisältää vetovastusvastukset kahdelle datalinjalle (keltaiset johdot). Tämäkin sattuu olemaan painike, mutta en käytä tätä ominaisuutta. Muut kaksi johtoa ovat VCC ja maadoitus. Sain myös mukavan rasvaisen nupin.
Pidän kiertokooderista, toisin kuin potentiometri, että se vain ilmoittaa pyörimisestä (myötäpäivään vs. vastapäivään) mikro-ohjaimelle, joten arvon tulkintaa on helppo muuttaa. Voit esimerkiksi antaa sille kiihtyvyyden tunteen (kuten hiiren), kun käyttäjä pyörittää sitä nopeasti.
Vaihe 9: 7-segmenttinen näyttö
Ei paljon sanottavaa täällä. Näitä asioita on kaikkialla. LED -valoja ohjaa siru nimeltä TM1637, joka kommunikoi mikro -ohjaimen kanssa yksinkertaisen sarjaprotokollan kautta. Käytän olemassa olevaa kirjastoa, jonka avulla voin kertoa, minkä numeron haluan näyttää, ja se tekee loput.
Takana on neljä nastaa: VCC, maadoitus ja kaksi johtoa sarjaprotokollaa varten. Juotin 4-nastaisen otsikon, joka liitetään vastaavaan Dupont-liittimeen, joka on kytketty mikrokontrolleriin.
Vaihe 10: Pääohjauskortti
Pääohjainkortilla on itse mikrokontrolleri ja kaikki ohjainten liittimet (painikkeet, näyttö, LEDit). Mikro -ohjain on ESP32, joka tarjoaa paljon laskentatehoa ja muistia ja paljastaa paljon nastoja. Johdotus on melko vakio, mutta huomautan muutamia mielenkiintoisia kohtia.
HUOMAUTUS: Saatat haluta katsoa koodia (https://github.com/samguyer/AlgorithmMachine) ennen kuin aloitat emolevyn kytkemisen, jotta pin -kokoonpano vastaa minun.
Juotin tynnyritangon levylle virran saamiseksi ja liitin kaksi lihavaa kuparilankaa levyn teho- ja maadoituskiskoihin. Syy on se, että LED -palkki voi kuluttaa paljon virtaa, jos kirkkaus on asetettu suureksi, enkä halua vetää kaikkea tätä tehoa mikro -ohjaimen USB -liittimen kautta.
Painikkeiden johdotuksen yksinkertaistamiseksi juotin naaraspuolisen naaraspuolisen suorakulmaisen otsikon nauhan mikrokontrollerin koko puolelle (levyn yläpuoli kuvan mukaisesti). Napinvaljaiden Dupont -liittimet kytketään suoraan tähän otsikkoon.
TÄRKEÄÄ: painikkeiden virta (punainen johto) on kytkettävä mikrokontrollerin 3,3 voltin virtajohtoon. ESP32 on 3,3 V: n siru, joten vain 3,3 V: n lähteitä tulee koskaan liittää datanappeihin.
Mikro -ohjain ottaa virran (tai työntää sen) kiskoille (levyn alapuoli kuvan mukaisesti) 5 V: n USB -nastan ja maadoituksen kautta. Kaikki muut punaiset/mustat johdot ovat VCC ja maadoitettuja.
Kaksi sinistä johtoa ovat LED -nauhojen (WS2812s) tietolinjat. Keltainen/vihreä pari ovat pyörivän anturin tietolinjat ja keltainen pari on sarjayhteys 7-segmenttiseen näyttöön.
Vaihe 11: Kokoonpano
Tämä valokuvasarja näyttää viimeisen kokoonpanon ja johdotuksen. Kiinnitin myös pääohjainkortin yläosaan.
Ennen virran kytkemistä tein muutaman tarkistuksen välttääkseni ikäviä yllätyksiä. Erityisesti varmistaakseni, että minulla ei ollut virta-/maaliitäntöjä taaksepäin eikä oikosulkuja. Aseta yleismittari testaamaan jatkuvuutta - se piippaa, kun kahden johtimen välillä on sähköinen tie. Kiinnitä yksi johdin yhteiseen VCC -linjaan painikkeisiin. Kiinnitä sitten toinen johto valjaiden jokaiseen nastaan yksi kerrallaan. Yleismittarin pitäisi piipata vain, kun painiketta painetaan. Jos kuulet muita piippauksia, se tarkoittaa, että sinulla on peruutus tai oikosulku. Seuraa sitä ja korjaa se ennen virran kytkemistä!
Vaihe 12: Koodi
Avaa ensin Arduino IDE ja varmista, että FastLED -kirjasto on asennettu.
Lataa algoritmikoneen koodi GitHubista:
github.com/samguyer/AlgorithmMachine.git
Voit joko kloonata sen suoraan Arduino -kansioon tai kopioida sen käsin.
Ennen kuin lataat sen, varmista, että nastan asetukset vastaavat laitteistokokoonpanoasi. Olen asettanut kaikki pin -asetukset tiedoston yläosaan.
Lataa ja nauti!
Vaihe 13: Kuinka käyttää
Algoritmikone on helppokäyttöinen ja melkein mikä tahansa näppäinyhdistelmä on ok!
Käytä ensin tietopainikkeita alustaaksesi taulukon arvot. Vaihtoehtoja on kolme: (1) satunnaista, (2) lisää yksi satunnaisarvo ja (3) käännä taulukko. Huomaa, että arvot ovat pysyviä, joten voit lajitella ne ensin, lisätä sitten kohinaa ja suorittaa sitten toisen lajittelu- tai hakualgoritmin.
Valitse haku- tai lajittelualgoritmi muista painikevaihtoehdoista. Tällä hetkellä ei ole palautetta, kun teet tämän valinnan (jotain tulevaa työtä varten). Paina sitten "play" -painiketta.
Nuppi säätää nopeutta. Voit myös keskeyttää ja peruuttaa algoritmin painamalla "play".
Se pysähtyy automaattisesti, kun se on tehty. Voit myös painaa toista algoritmipainiketta milloin tahansa. Kone pysäyttää nykyisen algoritmin ja alustaa uuden, mutta säilyttää tiedot täsmälleen samalla tavalla kuin edellinen algoritmi jätti ne.
Pääpalkinto STEM -kilpailussa
Suositeltava:
DIY 37 Leds Arduino -rulettipeli: 3 vaihetta (kuvilla)
DIY 37 Leds Arduino Roulette Peli: Ruletti on kasinopeli, joka on nimetty ranskalaisen sanan mukaan, joka tarkoittaa pientä pyörää
Covid -suojakypärä, osa 1: johdanto Tinkercad -piireihin!: 20 vaihetta (kuvilla)
Covid -suojakypärä, osa 1: johdanto Tinkercad -piireihin!: Hei, ystävä! Tässä kaksiosaisessa sarjassa opimme käyttämään Tinkercadin piirejä - hauskaa, tehokasta ja opettavaista työkalua piirien toiminnasta! Yksi parhaista tavoista oppia on tehdä. Joten suunnittelemme ensin oman projektimme: th
Weasleyn sijaintikello neljällä kädellä: 11 vaihetta (kuvilla)
Weasleyn sijaintikello neljällä kädellä: Joten Raspberry Pi: n kanssa, joka oli pyörinyt jonkin aikaa, halusin löytää mukavan projektin, jonka avulla voisin hyödyntää sitä parhaalla mahdollisella tavalla. Löysin ppeters0502 tämän upean Instructable Build Your Own Weasley Location Clockin ja ajattelin, että
Ammattimainen sääasema käyttäen ESP8266- ja ESP32 -DIY: 9 vaihetta (kuvilla)
Ammattimainen sääasema käyttämällä ESP8266- ja ESP32 -DIY: LineaMeteoStazione on täydellinen sääasema, joka voidaan liittää Sensirionin ammattitunnistimiin sekä joihinkin Davis -instrumenttikomponentteihin (sademittari, tuulimittari)
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite