Агуулгын хүснэгт:

C-код дахь микроконтроллер даавууны ая үүсгэгч: 8 алхам (зурагтай)
C-код дахь микроконтроллер даавууны ая үүсгэгч: 8 алхам (зурагтай)

Видео: C-код дахь микроконтроллер даавууны ая үүсгэгч: 8 алхам (зурагтай)

Видео: C-код дахь микроконтроллер даавууны ая үүсгэгч: 8 алхам (зурагтай)
Видео: Порты ввода-вывода | Первая программа | Микроконтроллеры с нуля #4 2024, Долдугаар сарын
Anonim
Микроконтроллер даавууны ая үүсгэгч нь C кодтой
Микроконтроллер даавууны ая үүсгэгч нь C кодтой

Өнгөрсөн оны 10 -р сарын сүүлээр зааварчилгаа өгөх carmitsu хэрэглэгч миний үдийн хоолны хайрцагны синтезийг хараад надад зурвас илгээсэн. Түүний захиасаас: Би бага сургуульд хөгжим заадаг. Бид бичигч хөгжим их тоглодог. өөрөөр хэлбэл хүүхдүүд жаахан лимбэ тоглодог …… Надад хэд хэдэн тусгай хэрэгцээт хүүхдүүд байдаг бөгөөд тэдгээр дээр тэмдэглэлийн нэр бүхий дугуйлан бүхий эдгээр хар өнгийн самбарыг ашиглаж болно. Эдгээр оюутнууд тэмдэглэлийн нэр бүхий дугуйлангууд дээр дарж, бусад оюутнууд дуу тоглож байна ….. Тусгай хэрэгцээтэй хүүхдүүдийн ихэнх нь үүнийг маш сайн, хөгжимтэй цаг хугацаанд нь хийж чаддаг. Миний хайж байгаа зүйл бол маш энгийн дууны үүсгүүр бүтээх явдал бөгөөд ингэснээр эдгээр хүүхдүүд оюутнуудын бичигч дээр тоглодогтой ижил талбайд тоглох боломжтой болно. Би хэдхэн талбай л байх болно. Дугуй тойргийнхоо ёроолд ямар нэгэн жижиг товчлуур хавсаргаж, тэднийг дарахад жижиг чанга яригчаас чанга чанга сонсогдохоор чанга дуу гарна гэж би бодлоо. Багш мэргэжилтэй, сургуульд дуртай ээжтэй бол би яаж эсэргүүцэх билээ. Үнэнийг хэлэхэд би чадахгүй байсан. Энэ бол бараг л төслийн түүх, өөрийн гараар хэрхэн яаж барих тухай заавар юм.

Алхам 1: Эхлэл эсвэл яагаад би аналог дээрээ үлдэж чадаагүй юм

Эхлэл эсвэл яагаад би аналог дээр үлдэж чадаагүй юм
Эхлэл эсвэл яагаад би аналог дээр үлдэж чадаагүй юм

Сайн зүйл дараагийн хуудаснаас эхэлнэ. Хэрэв та миний хийсэн хэсгүүдийг хэрхэн ашиглаж дууссаныг мэдэхийг хүсч байвал уншина уу. Бодит таймер: Төсөл өгсний дараа би ойрын үеийн op-amps Forest Mims III номноос пьезо ая үүсгэгчийг бодсон. Энэ бол зүгээр л пьезо, 741 IC, хос идэвхгүй бүрэлдэхүүн хэсэг юм. Том асуудал байхгүй биз дээ? За, энэ нь 2 асуудалтай, 1) унтраалгыг дарах үед давирхайг өөрчлөх боломжтой 2) тааруулах нь бараг боломжгүй юм. Эхнийх нь зарим нэг хасах технологийг ашиглан даван туулж магадгүй юм, гэхдээ би өөр тоолуур нэмж оруулахгүйгээр яаж хийхээ мэдэхгүй байсан. Энэ нь пьезо ашиглахтай холбоотой асуудал байж магадгүй юм. Хоёрдахь асуудал нь та тодорхой талбайд цохилт өгөхийг оролдож эхэлмэгц асуудалгүй болсон. 555 яах вэ? Мэдээллийн хүснэгтэд резистор ба конденсатор дээр суурилсан цаг хугацааны функцийг харуулав. Бодит ертөнцийн хэсгүүдийн бодит утгыг бичиж эхлэх хүртэл энэ нь үнэхээр гайхалтай юм, тэгвэл 440 Гц давтамжтай ажиллах нь бага зэрэг хэцүү болж эхэлдэг. Тохируулахын тулд та гоёл чимэглэлийн сав ашиглаж болно, гэхдээ цаг хугацаа өнгөрөх тусам тэд хөдлөх хандлагатай байдаг. Багажны өртөг, тоо хэмжээг огцом нэмэгдүүлэхийн тулд цуглуулсан багажийг байнга тааруулж, эхнэр маань энэ төслийн 555-ийг алж, товчлуурыг дарахад талбайн хэмжээг өөрчилсөн. намайг төрөхөөс өмнө op-amps. Цөөхөн хэсэг, тодорхой тэмдэглэл бүхий үнэхээр энгийн бүтээл хийхэд хичнээн хэцүү байж болох вэ? Миний бодож байснаас ч хэцүү. Төслийн ихэнх загвар нь энэ төслийн хувьд маш нарийн төвөгтэй байдаг. Synth дизайнерууд долгионы хэлбэр/аялгууг төгс гаргахад бэлэн байна. Энэ нь сургууль эсвэл багш нарын төсөвт хангалттай хямд төсөр төсөлтэй шууд зөрчилддөг. Гар бүтээх нь хангалттай хялбар бөгөөд энэ нь хэдхэн резистор ба хүч эсвэл диод ба хүч юм. Энэ бол хэлхээний дизайны үлдсэн хэсэг бөгөөд захиалгат компьютерийн өртөг нь электроникийн эхний түвшинд хэн нэгний гараас гарч эхэлдэг. Төслийн дахин тодорхойлолт: Тиймээс би үнэхээр явахаасаа өмнө төслийг дахин тодорхойлсон болно. Надад чанга яригчийн зүүг товчлуур дарж солих боломжтой зүйл хэрэгтэй байсан. Би ПХБ -ийн дизайн хийх, худалдаж авахыг хүсээгүй. Энэ нь аль болох цөөн тооны бүрэлдэхүүн хэсгүүдийг ашиглах ёстой бөгөөд эхлэгчдэд зориулсан иж бүрдэл болгон угсрах ёстой байв. Энэ нь миний нүүр рүү бүхэл бүтэн хугацаанд ширтэж байв. Өө !! Микроконтроллер! Микроконтроллер: Тиймээс орчин үеийн төхөөрөмжүүдийн нүцгэн яс Arduino иж бүрдэл болон Evil Mad Scientist энгийн зорилтот самбарыг худалдаж аваад хэдэн сарын турш ширээн дээр минь ашиглаагүй байхад нь суулгасны дараа надад төгс танилцуулах төсөл гарч ирэв. Би хоёуланг нь хоёуланг нь нэгтгэх цаг, кодыг сурах муруй, зардал, шаардлагатай нэмэлт хэсгүүдийг харж, хүссэн зүйлээ хийж, зорилтот самбар дээр суулгаж эхлэв. Зардал нь маш тэнцүү байсан, 15 доллар, Arduino -ийн 20 долларын FTDI кабель, 12 доллар, 22 долларын USBtinyISP програмист. Би зогсож чадах жижиг коллежийн C ++ -г аль хэдийн мэдэж байсан бөгөөд микроконтроллеруудын хувьд С нь тийм ч муу зүйл болохгүй гэж би бодож байсан, гэхдээ иж бүрдэлээ зөв цуглуулахын тулд гэрэл асаахаас өөр ямар ч туршлага надад байгаагүй. Хоёуланг нь холбож болно. Энэ нь нэлээд шидэлт байсан тул би энэ хоёрын цөөн хэсэг болох зорилтот самбарыг сонгохоор шийдсэн.

Алхам 2: Танд хэрэгтэй зүйл Rev 1

Танд хэрэгтэй зүйл Rev1
Танд хэрэгтэй зүйл Rev1

Хэсгийн өртөгUSBtinyISP AVR програмист иж бүрдэл (USB SpokePOV Dongle) v2.0 $ 22.00 $ $ 2.75 https://evilmadscience.com/tinykitlist/74-atmegaxx8Speaker (8-ohm Mini) $ 2.79 5) $ 3.49 (4 багц) https://www.radioshack.com/product/index.jsp?productId=2062539"AAA "Зай эзэмшигч $ 1.79https://www.radioshack.com/product/index.jsp? ProductId = 2102735SPST Submini Slide Switch (цахилгаан унтраалгын хувьд заавал биш) $ 2.69 (2 багц) https://www.radioshack.com/product/index.jsp?productId=2062490LED ба резистор (хэрэв та цахилгаан гэрэл авахыг хүсвэл заавал биш) $ үнэгүй байх ёстой. Хэрэв тэд эргэн тойронд хэвтэж байвал утас $ мөн эргэн тойронд хэвтэж байх ёстой Мөнгөн гагнуур (хэрэв энэ нь хүүхдүүдийн ойролцоо явж байгаа бол та хар тугалга хэрэглэхгүй байх магадлалтай, эцэг эхчүүд иймэрхүү зүйлд их сонин ханддаг;)) Архи согтууруулах ундаа (дахин хийх шилжих урсгал) Хэрэв та зарим газрууд мөнгө хэмнэхийг хүсч байвал RadioShack -аас эд анги авах шаардлагагүй болно. Тэд ойрхон, урьдчилан таамаглах боломжтой учраас би хийсэн.

Алхам 3: Ассемблейн Rev 1

Ассемблер Илчлэлт 1
Ассемблер Илчлэлт 1
Ассемблер Илчлэлт 1
Ассемблер Илчлэлт 1

Зураг дээрх шиг эд ангиудыг нийлүүл. Гагнуурын урсгалаас ангижрахын тулд архи, флюс сойз хэрэглэхээ мартуузай. D1 ба R1 нь таны хүссэн зүйл байж болно, энэ бол зүгээр л цахилгаан гэрэл юм. C1 нь хүчийг арай тогтвортой байлгахад туслах зорилготой юм. Би 10uF ашигласан. Энэхүү схем нь дараагийн хувилбаруудын хувьд адилхан бөгөөд даавууны унтраалгын товчлууруудыг сольж болно. Сүүлийн хувилбарт би PC4 ба PC5 -ийн унтраалга эсвэл 27 ба 28 -р зүүг нэмсэн.

Алхам 4: Танд хэрэгтэй зүйл Rev 2

Танд хэрэгтэй зүйл Rev 2
Танд хэрэгтэй зүйл Rev 2

Радио хаалт хийх товчлуурыг гараар хийсэн даавуугаар сольж байна. Танд хэрэгтэй: Хэрэв та тэмдэглэл бүрийг ижил өнгөтэй болгохыг хүсч байвал олон өнгийн даавуу эсвэл нэг өнгө хэрэгтэй болно. Таны хамгийн ойрын даавууны дэлгүүрийн ширмэл хэсэг бол үүнийг хямд үнээр авах хамгийн тохиромжтой газар юм. Ширмэл даавууны ороомог нь 1.50 доллар бөгөөд та нэг ширхэг унтраалга авах боломжтой. Дамжуулагч даавуунаас би FLELTRON даавууг LessEMF -ээс санал болгож байна. Энэ утас нь даавуунд бэхлэх зориулалттай 12 "x54" хэмжээтэй Eyeelets -ийн үнэ 20 доллар байна. Та тэдгээрийг ихэнх даавууны дэлгүүрүүдээс хямд үнээр авах боломжтой. JoAnn -ийн хэрэгсэл ба 25 доллараар худалдаж авахад танд алх хэрэгтэй болно. Утас, би 22AWG ашигласан бөгөөд хэрэв танд байгаа бол жижиг хэмжээтэй байхыг зөвлөж байна. Өнгөт, дамжуулагч даавууг хооронд нь наалдуулахын тулд хайлуулах хэрэгтэй. Дэлгүүрээс асуувал хашаанаас нь худалдаж авах боломжтой байх. Энэ нь сайн ажиллах болов уу, гэхдээ би чамайг Баттингээс асуухыг санал болгож байна, гэхдээ би эхлээд үнэхээр сул эд хэрэглэж, дараа нь илүү нягт сүлжмэл зүйл рүү шилжсэн. Дулаан гуурсан хоолойг бүхэлд нь зохицуулах боломжтой болгосон. Тэд бие биенээ дайрч өнгөрөх тусам утсыг багасгаж, илүү сайн үлдэх болно.

Алхам 5: Чуулган 2

Чуулган 2
Чуулган 2
Чуулган 2
Чуулган 2
Чуулган 2
Чуулган 2

Олон өнгийн даавууг бие биенийхээ дээр тавиад дөрвөлжин хайчилж ав, энэ нь төгс байх албагүй. Нэхмэл эдлэлийг гаргаж авахын тулд даавууг индүүдээд дахин давхаргад хийж, ирмэгүүд нь хоорондоо таарч байгаа эсэхийг шалгаарай. Зүүн ба баруун талыг тэгшхэн үлдээж, дээд ба доод хэсгийг нь хайчилж ав. Оёдлын дараа та унтраалгыг эргүүлэх гэж байгаа тул бөөрөнхий талыг нь хэтэрхий дугуй хэлбэртэй болгож, хавтгай тал дээр хангалттай өндөр үлдээгээрэй. Эхний болон сүүлчийн унтраалгын хавтгай талыг дугуйруулж, оёдлын машин руугаа ороод хоёр дугуйг нь хамтад нь тавь, ингэснээр сайн тал нь бие биентэйгээ нүүр тулж, хавтгай хэсгүүдэд оёдол хийнэ. оёж, дамжуулагч даавуунаас дөрвөлжин хайчилж, нэг талыг нь хайлуулна. Утасыг уртаар нь хайчилж, нэг үзүүрийг нь хуул. нэг зовхины эргэн тойронд утсыг гагнах. (гагнуур нь нүхэнд наалдахгүй байх магадлалтай) Даавуу, утсыг бэхлэхийн тулд даавууг нэг буланд нь жижиг зүсэж, цоолтуураар нь цохино. холбогчоос арын дэвсгэрийг авч, өнгөт даавууны арын хэсэгт дамжуулагч даавууг хайлуулна. Бүх унтраалгыг давт. Үүнийг хөнгөвчлөхийн тулд та нэг утсыг дараагийн шилжүүлэгчийн утсаар дамжуулах үед утсыг хамтад нь халааж болно. Шилжүүлэгчийн уртыг нэг ширхэг даавуугаар хийж, уртаар нь дамжуулагч даавууны тууз хайчилж ав. Өнгөт унтраалгаас ялгаатай нь энэ бол нэг урт хэсэг юм. Энэ нь холболт хийхийн тулд товчлуурууд нь хүрэх болно. Жижиг ангарыг хайчилж, өнгөний унтраалганы орой шиг утсаар зүүгээр холбоно уу. Доод талын даавууны ар талд холбож, дээд ба доод хэсгийг цахилгаан дамжуулагч даавуугаар дээш харуулан оёж, хашааны саваа ашиглан оёж дууссаны дараа эргүүлээрэй. Цоолтуурын хэд хэдэн жижиг нүхийг хайчилж ав. дугуйлан, дараа нь савхыг арилгаж, зүснэ. Тэдгээрийг хэлбэрт оруулахын тулд хайчилж, унтраалга руу оруулна уу. Энэ бол дамжуулагч даавууг салгаж өгдөг зүйл юм. Шилжүүлэгчийг араас нь биш харин эсрэгээр нь эргүүлж байхад цохиурыг оруулах нь илүү хялбар байж магадгүй юм. Миний хэрэглэж байсан зүйлс маш муухай урагдаж, өөр өөр цохиур авах шаардлагатай болсон. Эцэст нь утсыг зорилтот самбар дээр холбож өгвөл бүх зүйл бэлэн боллоо. Урт доод туузыг нунтаглана.

Алхам 6: Танд хэрэгтэй зүйл Rev 3

Танд хэрэгтэй зүйл Rev 3
Танд хэрэгтэй зүйл Rev 3

Rev 3 -д би унтраалгыг утаснаас хамааралгүй болгосон. Энэ нь маш их цаг хэмнэсэн. Дууссан үр дүнгийн төрх надад илүү их таалагдаж байгаа тул танд хэрэгтэй байгаа шинэ хэсгүүд энд байна: Snaps, JoAnn -ээс авсан. Тэд 7 долларын үнэтэй биш суулгах хэрэгслээр ирсэн бөгөөд дунд нь хавчаарыг суулгахын тулд би багажаа салгаж авах шаардлагатай болсон тул би бахө хэрэгслүүдийн нэгийг санал болгох болно. Оёдол хийх нь илүү сайн сонголт байх болно, гэхдээ наалдуулах нь илүү их цаг хугацаа шаарддаг боловч Spark Fun нь таны оёдлын машинд орох боломжтой. Би машиндаа удаан явах ёстой байсан бол утас тасрах болно. Таны миль өөр байж болно

Алхам 7: Чуулган 3

Ассемблер Илчлэлт 3
Ассемблер Илчлэлт 3
Ассемблер Илчлэлт 3
Ассемблер Илчлэлт 3
Ассемблер Илчлэлт 3
Ассемблер Илчлэлт 3
Ассемблер Илчлэлт 3
Ассемблер Илчлэлт 3

Энэхүү засвар нь баригдах хүртэлх хугацааны хувьд өмнөх хувилбараас хамаагүй дээр байсан. Дээрээс нь зөөврийн унтраалгатай байх нь миний эрүүл ухааныг нэг бус удаа аварсан. Энэ бол ширмэл даавууны дөрөвний нэгийг талыг нь нугалав. Дээд талд нь цавчих давхаргыг хийж оёх, эргүүлэх нүх үлдээнэ. Тухайн зүйлийг нүхээр нь түлхэхэд үндсэндээ дэр маягийн зүйл байна. Би хөнжил хийсэн тул ажиллахад илүү хялбар болсон. Энгийн утас ашиглаад самраарай. Би үүн дээр очир алмааз хийсэн, гэхдээ магадгүй дараагийн удаа лууг эсвэл өөр ямар нэг гайхалтай зүйл оруулах болно. Надад энэ загвар таалагдаж байна, учир нь та эдгээрийн ихэнхийг урьдчилан хийж, хүссэн зүйлээ ашиглаж болно. Эхлэхийн тулд картон, цаас, даавууны хаягдал хэсгийг аваад лийрийн хэлбэрийг хайчилж ав. Үүнийг шилжүүлэгч бүрийн дээд ба доод хэсгийг огтлох гарын авлага болгон ашиглаарай. Би ёроол тус бүрт нэг өнгө, орой дээр өөр өөр өнгө хайчилдаг, гэхдээ та бүтээлч байж, хүссэн зүйлээ хийж чадна. Гарын авлагыг унтраалгын дотор амархан багтах хэлбэрийн хэлбэртэй хайчилж аваарай. "Лийр" -ийн ирмэг дээр ороож болохын тулд "саваа" -г уртасгаарай. Хайлуулах ба дамжуулагч даавууны хэлбэрийг хайчилж, дамжуулагч даавууны нэг талыг хайлуулна. Хайлуулах материалаас арын дэвсгэрийг аваад даавууны ёроолд байх болно. Нэмэлт хэсгийг дээд хэсэгт нь боож өгнө. Оёдлын машин руугаа ороод дээд ба доод даавууны хооронд нүх гарга. Цахилгаан дамжуулагч даавууны гадна талд оёж, унтраалгын "мод" хэсгийг алгас. Дээд дамжуулагч даавууг доод хэсэгт нь оёж оёх боломжтой гэдгийг олж мэдэв. Цахилгаан дамжуулагч даавуугаар оёхгүй байх нь дээр. Хөшүүргийг хавсаргах ба шилжүүлэгч дуусна. Бүх доод/GND холболтод эрэгтэй хавчаар, бүх оройд эмэгтэй бэхэлгээг ашиглах нь надад илүү хялбар болсон. Энэ нь бүх унтраалгыг хооронд нь сольж болдог. Би хаягдлаа авч, том ширхэгүүдийг хайлуулж, дамжуулагч даавууны том хэсгүүдэд хийж, жийргэвч болгон ашигладаг жижиг тэгш өнцөгтүүдийг хайчилж авав. Шилжүүлэгчээ тавиад, дэвсгэрийг нь сууринд холбож, шугам оёж, бэхлэх хангалттай зайтай болго. Миний хэрэглэж байсан оёдлын машины хөл нь маш ойрхон байх нь тийм ч таатай санагдаагүй тул үүнийг санаж өөртөө зай гаргаж өг. Миний оёдлын машинд нэвтэрдэг дамжуулагч утас байсан тул би дэвсгэрээс дэвсгэр рүү арагш нь оёсон. Би удаан явах ёстой байсан, эс тэгвээс утас тасрах болно, гэхдээ энэ нь гар оёдол хийхээс хамаагүй хурдан байсан. Мөн ороомог ба зүү дээрх дамжуулагч утаснуудын тусламжтайгаар би үнэхээр сайн хатуу холболттой болсон. Энэ зүйл галзуу юм шиг үрэгддэг, гэхдээ гар урлалын цавуу эсвэл хайлаас үүнийг сайн арилгадаг. Мөрүүдийг бие биенээсээ хол байлгахыг хичээгээрэй, тэгвэл танд ямар ч асуудал гарах ёсгүй. Эцсийн угсралт: Бүх унтраалгыг асааж, самбарыг холбож, кодыг ачаална уу. Би утсыг самбараас дэвсгэр рүү аваачаад дараа нь утсыг суурин дээр гараар оёсон. Дараагийн хувилбарын хувьд би хавтанг сууринд бэхлэх хуванцар хайрцагт бэхлэх бөгөөд ингэснээр сул зогсож буй хуруунууд нь салахгүй байх болно.

Алхам 8: Код

Код
Код

Хэрэв та өмнө нь чип програмчлаагүй байсан бол энэ нь маш хэцүү ажил юм. Багаж хэрэгсэл нь гөлгөр байх нь тус болохгүй бөгөөд ихэнхдээ та нэг үйлдлийг хэд хэдэн удаа хийх хэрэгтэй болдог. Юу болж байгааг ойлгохын тулд олж мэдсэн хамгийн сайн хоёр нөөц бол USBtinyISP, https://www.ladyada.net/make/usbtinyisp/ хуудас, дуу чимээ тоглоомыг програмчлах ослын курс http:/ /blog.makezine.com/archive/2008/05/noise_toy_crashcourse_in.html Эдгээр нь таныг эхлүүлэх боломжтой байх ёстой.

Олон хүмүүс энэхүү кодчилолд Arduino -т дуртай байдаг бөгөөд үүнийг ашиглахад ямар ч буруу зүйл байдаггүй, гэхдээ энэ нь ердийн програмд маш их ачаалал өгдөг гэж би боддог. Түүнчлэн, би C -г мэддэг байсан бөгөөд Arduino -г мэдэхгүй байсан. Магадгүй цаг байвал нэг л өдөр.:) Код: {{{#include // Зүү ашиглан SPK -ийг асаана уу /// Typedefs ////////// typedef unsigned char u8; int main (void) {u8 btnState0; u8 btnState1; u8 btnState2; u8 btnState3; u8 btnState4; u8 btnState5; u8 btnState6; DDRB = (1 << DDB6); // SPORT -ийг PORTD = (1 << PD0) гаралтанд тохируулах | (1 << PD1) | (1 << PD2) | (1 << PD3) | (1 << PD4); // Өндөр товчлуурыг тохируулах PORTC = (1 << PC4) | (1 << PC6); TCCR2B = (1 << CS21); // Таймерыг тохируулах үед (1) {btnState0 = ~ PINC & (1 << PC5); btnState1 = ~ PINC & (1 << PC4); btnState2 = ~ PIND & (1 << PD0); btnState3 = ~ PIND & (1 << PD1); btnState4 = ~ PIND & (1 << PD2); btnState5 = ~ PIND & (1 << PD3); btnState6 = ~ PIND & (1 << PD4); if (btnState0) {if (TCNT2> = 190) {PORTB ^= (1 << PD6); // SPK зүү эргүүлэх TCNT2 = 0; }} if (btnState1) {if (TCNT2> = 179) {PORTB ^= (1 << PD6); // SPK зүү эргүүлэх TCNT2 = 0; }} if (btnState2) {if (TCNT2> = 159) {PORTB ^= (1 << PD6); // SPK зүү эргүүлэх TCNT2 = 0; }} if (btnState3) {if (TCNT2> = 142) {PORTB ^= (1 << PD6); // SPK зүү эргүүлэх TCNT2 = 0; }} if (btnState4) {if (TCNT2> = 126) {PORTB ^= (1 << PD6); // SPK зүү эргүүлэх TCNT2 = 0; }} if (btnState5) {if (TCNT2> = 119) {PORTB ^= (1 << PD6); // SPK зүү эргүүлэх TCNT2 = 0; }} if (btnState6) {if (TCNT2> = 106) {PORTB ^= (1 << PD6); // SPK зүү эргүүлэх TCNT2 = 0; }}}}}}} Талбайнууд хаанаас гардаг вэ? Бага зэрэг математик хэрэгтэй байсан. Атмега 168 дээрх цаг хэмжигч нь 1 МГц давтамжтай ажилладаг. Энэ нь аудиог ашиглахад хэтэрхий хурдан байгаа тул бид урьдчилсан тооцоолуурыг ашиглах ёстой /8. Дараа нь бид 1 мөчлөг хийхийн тулд гаралтын зүүг өндөр, дараа нь доош нь эргүүлэх хэрэгтэй тул зөв давтамж гаргахын тулд хариултыг 2 -т хуваах хэрэгтэй. Томъёо нь иймэрхүү харагдаж байна: Pitch кодыг оруулах = (1000000/8)/(Зорилтот давтамж*2) A (440) хувьд энэ нь бидний хувьд 125000/880 = 142.045 эсвэл 142 байх болно, учир нь утга нь бүхэл тоо байх ёстой.. Тэмдэглэлийн зорилтот давтамжийг онлайнаар хаанаас ч олох боломжтой бөгөөд ерөнхийдөө бүгд ижил байдаг. Ifs -ийг ашиглахын оронд кейсийн мэдэгдэл нэмж, PWM -ийг ашиглан чанга яригчийн дуу чимээ, давтамжийг илүү сайн хянахыг хүсч байна, гэхдээ одоогоор энэ нь ажиллаж байна.

Зөвлөмж болгож буй: