Sisällysluettelo:

Algoritmikone: 13 vaihetta (kuvilla)
Algoritmikone: 13 vaihetta (kuvilla)

Video: Algoritmikone: 13 vaihetta (kuvilla)

Video: Algoritmikone: 13 vaihetta (kuvilla)
Video: Как придать Объём волосам Пошагово дома | 4 способа Укладки волос! Как научиться укладывать волосы! 2024, Heinäkuu
Anonim
Image
Image
LED -palkki: 3D -tulostus
LED -palkki: 3D -tulostus

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

LED -palkki: 3D -tulostus
LED -palkki: 3D -tulostus
LED -palkki: 3D -tulostus
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

LED -palkin vaihtoehdot
LED -palkin vaihtoehdot
LED -palkin vaihtoehdot
LED -palkin vaihtoehdot
LED -palkin vaihtoehdot
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

LED -kotelo
LED -kotelo
LED -kotelo
LED -kotelo
LED -kotelo
LED -kotelo

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
Ohjauspaneeli
Ohjauspaneeli
Ohjauspaneeli
Ohjauspaneeli
Ohjauspaneeli
Ohjauspaneeli
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

Painikevaljaat
Painikevaljaat
Painikevaljaat
Painikevaljaat
Painikevaljaat
Painikevaljaat

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ä kooderi
Pyörivä kooderi

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ö

7-segmenttinen näyttö
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ääohjauskortti
Pääohjauskortti
Pääohjauskortti
Pääohjauskortti
Pääohjauskortti
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

Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano
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.

STEM -kilpailu
STEM -kilpailu
STEM -kilpailu
STEM -kilpailu

Pääpalkinto STEM -kilpailussa

Suositeltava: