Përmbajtje:
- Hapi 1: Përcaktimi i Adresave të Regjistrit
- Hapi 2: Vargjet dhe variablat globale
- Hapi 3: Funksioni "serial.filloj"
- Hapi 4: Funksioni "serial.disponueshëm"
- Hapi 5: Funksioni "serial.read"
- Hapi 6: Funksioni "serial.write"
- Hapi 7: Funksioni i konfigurimit
- Hapi 8: Funksionet Loop dhe ISR
- Hapi 9: Instalimet elektrike
- Hapi 10: Vendosini të gjitha së bashku
Video: Arduino Tone Generator Pa Bibliotekë ose Funksione Seriale (Me Ndërprerje): 10 Hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:27
Kjo nuk është diçka për të cilën zakonisht do të bëja një udhëzues, preferoj punën time metalike, por pasi jam student i inxhinierisë elektrike dhe duhet të marr një klasë për mikrokontrolluesit (Dizajni i Sistemeve të Embedded), mendova se do të bëja një udhëzues në një nga projektet e mia. Kur fillimisht bëra projektin dhe të tjerët për këtë klasë, zbulova se ka shumë pak ose aspak mësime që nuk përdorin funksionet e bibliotekës arduino ose funksionet serike, gjë që është një arsye tjetër që mendova se do të ishte një udhëzues i mirë.
Ky kod është krijuar për mikrokontrolluesin Atmega 2560, kështu që nëse doni ta zbatoni në një tabelë tjetër do t'ju duhet të ndryshoni regjistrat e adresave në kod bazuar në manualin e përdoruesit të kontrolluesve tuaj. Ideja themelore pas kodit është që sa herë që futni një çelës në tastierë në monitorin serik, arduino mega do të nxjerrë një frekuencë të caktuar bazuar në atë çelës që shtypni, me "q" ta rivendosni atë. Unë e bëra atë në mënyrë që "a" të nxjerrë frekuencën A të sheshtë dhe "A" do të nxjerrë frekuencën A të mprehtë, "b" të dalë B të sheshtë, "c" për C të sheshtë, "C" për C të mprehtë, etj. Kodi i plotë ngarkohet në fund, por çdo hap do ta zbërthejë kodin në copa, kështu që është më e lehtë të shpjegohet.
Hapi 1: Përcaktimi i Adresave të Regjistrit
Ky hap është i lehtë, nëse përdorni atmega 2560, ju vetëm duhet të përdorni adresat që kam përdorur, edhe pse nëse përdorni një tabelë me një çip të ndryshëm, do t'ju duhet të gjeni adresat për secilin nga këto regjistra në pajisjen tuaj manuali i përdorimit të patate të skuqura. Përkufizimet në krye janë vetëm konstante që do të përdoren për funksionet tona më vonë. Ne i specifikojmë adresat si të paqëndrueshme të panënshkruara sepse nuk duam që përpiluesi të ngatërrohet me to.
Hapi 2: Vargjet dhe variablat globale
Këtu duam të përcaktojmë grupin Frequency i cili do të përmbajë të gjitha frekuencat që secili çelës duhet të dalë. Këto vlera llogariten nga frekuencat aktuale të shënimeve, dhe sinqerisht harrova se si i mora, por ato janë vlerat e duhura pasi i testova në një oshiloskop për t'u siguruar. Ne po përcaktojmë gjithashtu grupin e shënimeve i cili përmban të gjithë çelësat për të shtypur për çdo ton, si dhe variablat që do të na duhen për funksionet tona të mëvonshme.
Hapi 3: Funksioni "serial.filloj"
Ne do të thërrasim funksionin tonë të personalizuar që përsërit funksionin "serial.begin" U0init (). Merr baudratin e dëshiruar si hyrje dhe fillon portën serike në atë baudrate.
Hapi 4: Funksioni "serial.disponueshëm"
Ne do të thërrasim funksionin që imiton "serial.available" U0kbhit (). Nuk merr hyrje, por përkundrazi zbulon nëse ka një ndryshim të bërë në tastierë duke përdorur bitin e statusit RDA dhe kthehet i vërtetë kur zbulohet një ndryshim.
Hapi 5: Funksioni "serial.read"
Ne do ta thërrasim funksionin që imiton funksionin "serial.read" U0getchar (), i cili nuk merr asnjë hyrje dhe dalje çfarëdo ndryshimi të bëhet në tastierë, i cili ruhet në regjistrin UDR0.
Hapi 6: Funksioni "serial.write"
Ne do të thërrasim funksionin që imiton "serial.write" U0putchar (), i cili merr të dhënat nga regjistri UDR0 ndërsa një ndryshim zbulohet dhe ruhet, dhe daljet që ndryshojnë përsëri në monitorin serik.
Hapi 7: Funksioni i konfigurimit
Ky është funksioni themelor i konfigurimit që do të përdorë imitimin tonë "serial.begin" për të inicializuar portin serik dhe do të inicializojë cilësimet tona të bitit për regjistrat e kohëmatësit dhe do të vendosë PB6 që të nxjerrë tonet tona.
Hapi 8: Funksionet Loop dhe ISR
Lak funksionon kështu: nëse zbulohet një ndryshim me funksionin tonë "serial.available", funksioni ynë "serial.read" ruan ato ndryshime dhe funksioni ynë "serial.write" e vendos atë ndryshim në monitorin serik. Për sa kohë që një ndryshore i është më e vogël se madhësia e grupit të frekuencës, ajo do të vendosë që dalja të jetë pozicioni i i në atë grup, duke nxjerrë frekuencën në atë pozicion. ISR funksionon si rivendosje, ku nëse pozicioni i grupit të frekuencës nuk është i barabartë me 0 (me fjalë të tjera nëse "q" nuk shtypet), ai do të nxjerrë frekuencën, por kur të shtypet "q" do të rivendoset. Ju lutemi vini re: ky kod përdor ndërprerje, por mund të bëhet me ndërprerje me aftësi të kufizuara. Unë do të postoj kodin pa ndërprerje nëse marr ndonjë kërkesë për të, thjesht mendoj se versioni i ndërprerjes është më argëtues.
Hapi 9: Instalimet elektrike
Lidhja për këtë kod është jashtëzakonisht e lehtë, thjesht vendosni një tel dalës nga PB6 në një dërrasë buke, lidhni një zile ose altoparlant në seri me të dhe lidheni atë përsëri në tokë. Shënim: nëse përdorni një altoparlant, vendosni një rezistencë të vogël para altoparlantit. Nëse thjesht doni të shihni daljen, por nuk e dëgjoni atë, thjesht lidhni PB6 me prizën e kuqe të një oshiloskopi dhe prizën e zezë në tokë.
Hapi 10: Vendosini të gjitha së bashku
I shtova kodin e plotë këtij hapi, pasi i kam shpjeguar të gjitha pjesët e tij në hapat e mëparshëm. Thjesht merr një hyrje të tastierës për frekuenca të ndryshme dhe e nxjerr atë frekuencë në PB6. Shpresoj se ju ka pëlqyer të lexoni një mënyrë tjetër për të koduar me IDE!
Gjithashtu, ju lutemi votoni për këtë në konkursin e Mikrokontrolluesit: D
Recommended:
Drita e pasme e biçikletave me shumë funksione e bazuar në CD4017: 15 hapa
Drita e prapme e biçikletave me shumë funksione e bazuar në CD4017: Ky qark është bërë duke aplikuar qark shumë të zakonshëm CD4017 LED të quajtur kështu ndjekës LED. Por mund të mbështesë metoda të ndryshme të ndezjes së LED-ve duke i lidhur kabllot e kontrollit në mënyra të ndryshme. Ndoshta mund të përdoret si dritë e pasme biçikletash ose tregues vizual
Përcaktoni konsumin mesatar aktual të pajisjes me ndërprerje të energjisë së ulët: 4 hapa
Përcaktoni konsumin mesatar aktual të pajisjes me ndërprerje të energjisë së ulët: HyrjePër kuriozitet doja të dija sa gjatë mund të zgjasin bateritë në sensorin tim të temperaturës në distancë. Duhen dy qeliza AA në seri, por është pak ndihmë për të vendosur një ammetër në linjë dhe për të parë ekranin sepse energjia konsumohet
Sensori i efektit të sallës Arduino me ndërprerje: 4 hapa
Sensori i efektit të sallës Arduino me ndërprerje: Përshëndetje të gjithëve, sot do t'ju tregoj se si mund të lidhni një sensor të efektit të sallës me një Arduino dhe ta përdorni atë me një ndërprerje. Mjetet dhe materialet e përdorura në video (Lidhjet e lidhura): Arduino Uno: http : //s.click.aliexpress.com/e/biNyW0zKSensorë të efektit të sallës: h
Transformoni laptopin e vjetër në një mjet mahnitës me shumë funksione: 8 hapa
Transformoni laptopin e vjetër në një mjet mahnitës me shumë funksione: Laptopi është gjithmonë i bashkangjitur me ne me një kujtesë. Ndoshta ju merrni një dhuratë kur shkoni në kolegj, ose fitoni një titull të caktuar. Koha, ju pëlqen apo jo, nuk mund të vazhdoni ta përdorni atë për punën tuaj. Por ju mund të përdorni laptopin e vjetër për shumë mënyra të ndryshme
Arduino - Ndërprerje periodike: 4 hapa
Arduino - Ndërprerje periodike: Ky udhëzues ka të bëjë me përdorimin e një ndërprerje periodike për kohën në programet Arduino. Ky është një hap për një programues fillestar Arduino i cili e di se Arduino mund të bëjë më shumë, por nuk e di se si ta bëjë këtë të ndodhë. Nëse ka një performancë pr