Мазмуну:
- 1 -кадам: Музыкалык эсепти санарип ноталарга айландыруу: баалуулуктарды кечиктирүү
- 2 -кадам: Музыкалык эсепти санарип ноталарга айландыруу: Hertz баалуулуктары
- 3 -кадам: Райондук дизайн
- 4-кадам: Кодду жүктөө: Кантип
- 5 -кадам: Кодду жүктөө: Мунун баары эмнени билдирет?
- 6 -кадам: Бүттү !
Video: Ардуино менен ырды санариптештирүү: 6 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:42
Мен сүйүктүү эки предметимди бириктирген долбоор түзгүм келди: илим жана музыка. Мен бул эки доменди айкалыштыруунун бардык жолдорун ойлодум, жана Герцте нотанын бийиктигин көрсөтүп жатканда Arduino Fur Elise пьесасын тартуу кызыктуу болот деп ойлогом. Эми, курулушту баштайлы!
Сизге бир Arduino Uno же Mega, көптөгөн секирүүчү кабелдер, Piezo ызылчасы, нан плитасы, 16*2 ЖК экраны, бардык тазалагычтары бар, жана 10k потенциометр керек болот (сиз аларды потметр деп да угушуңуз мүмкүн)). Курулушту баштоодон мурун бул материалдардын бардыгын чогултканыбыз жакшы.
1 -кадам: Музыкалык эсепти санарип ноталарга айландыруу: баалуулуктарды кечиктирүү
Эсепти санариптик эквивалентине санарип түрдө көчүрүү үчүн эки кадам бар. Биринчиден, биз нота миллисекунд менен созулган убакытты жазышыбыз керек. Бул тапшырманы аткаруу үчүн интернеттен табылган диаграмманы колдондум. Нотанын жарым нотасы, чейрек нотасы, сегизинчи нотасы ж.б болгонуна негизделип, мен нота узундугун миллисекундка котордум. Сиз бул сандарды менин кодумдан delay () катары көрө аласыз; функциясы жана кашаанын ичиндеги сан бул кадамда биз аныктаган миллисекундтардагы кечигүү мааниси болот.
2 -кадам: Музыкалык эсепти санарип ноталарга айландыруу: Hertz баалуулуктары
Бул кадамды баштоодон мурун, мен кээ бир техникалык терминдерди аныктап алайын. Нотанын "мааниси" "чайыр", "баалуулук" жана "нота" деген сөздөр менен алмаштырылышы мүмкүн. Эми, ырдын ар бир нотасын партитурадан окуу керек. Сиз андан кийин интернеттен оңой таба турган Hertz столуна музыка аркылуу ар бир нотаны Герцке которушуңуз керек болот. Эстен чыгарбоо керек болгон нерсе, ортоңку C столдо C4 катары жазылган, ал эми октаванын бийиктиги C5 жана башкалар. Бул ноталардын баары Герцке жазылып алынган соң, сиз маанилерди функциянын тонусуна жайгаштырасыз (x, y, z); бул жерде X - пин номери же const int, өзгөрмөлөрдү аныктоо жолу, мен кийинчерээк түшүндүрөм. Y сиз транскрипциялаган Hertz мааниси болот, ал эми Z нотанын миллисекундтарда жүздүн жакындыгына тегеректелген узактыгы болот. Кечигүү (); баалуулуктар нотанын узактыгы болот. Эми, музыканы ойной турган схеманы иштеп чыгалы.
3 -кадам: Райондук дизайн
Эми биз бардык ноталарды компьютер түшүнө турган санариптик баалуулуктарга котордук, бул схеманы курууга убакыт келди. Нан тактасын алып, ЖК экранды биринчи пин (GND) менен катар 14кө коюңуз. Максат - бардыгын тизип коюу, зымдардын тыгылышын азайтуу. Ардуинону нан тактасынын жанына койгула, жана 5в пинди нандын оң темир жолуна, жер казыгын терс темир жолго туташтыргыла. Эми биз Arduino менен компоненттердин ортосундагы секиргичтерди туташтырууга даярбыз.
Эми, ЖКдагы казыктар жана аларды зым менен жабуу жөнүндө сүйлөшөлү.
GND жерди билдирет, бул түз агымдагы терс зым. Нан тактасынын терс темир жолуна GND зымы.
VCC Жалпы Коллектордогу Чыңалуу дегенди билдирет жана бул жерде сиз 5 вольттук энергия булагыңызды (оң электр темир жолун) туташтырасыз.
VO Контрастты билдирет, муну потенциометрдин ортоңку пинине туташтырыңыз. Потенциометрдин сол пинин оң электр темир жолуна, ал эми оң казыкты жерге электр темир жолуна туташтырыңыз.
RS "Register Select" дегенди билдирет жана муну Arduino дисплейге маалыматтарды кайда сактоо керектигин айтуу үчүн колдонот. Бул пинти Arduinoдогу 12 -пинге туташтырыңыз.
RW "Окуу/Жазуу" дегенди билдирет, бул Arduino экраны сиз көрсөтө турган нерсени көрсөтүп жаткандыгын текшерүү үчүн колдонулат. Бул пинди нан тактасындагы терс темир жолго туташтырыңыз.
E - иштетүү дегенди билдирет, ал ЖКга кайсы пикселдерди иштетүү (күйгүзүү) же өчүрүү (өчүрүү) керектигин айтат. Бул пинти Arduino пин 11ге туташтырыңыз.
D4, D5, D6 жана D7 - бул дисплей казандары, алар көрсөтүлгөн тамгаларды жана тамгаларды көзөмөлдөйт. Аларды 5, 4, 3 жана 2 Arduino казыктарына туташтырыңыз.
Pin A, кээде LED деп белгиленет, арткы жарык үчүн LED аноду. Муну оң электр темир жолуна зым менен же 220 омдук резистор менен туташтырыңыз. Резистор ЖКны аябагандай, узак убакытка колдонуу үчүн жакшы, бирок эгерде түзмөк күнү -түнү колдонулбаса, анда резистордун кереги жок.
Pin K, кээде (чаташтыруучу) LED деп да белгиленет, бул LED жерге төөнөгүч. Муну жер үстүндөгү темир жолго туташтырыңыз.
4-кадам: Кодду жүктөө: Кантип
Ардуинону компьютериңиздин USB портуна туташтырыңыз. Arduino IDE программистин жардамы менен төмөнкү кодду жүктөңүз.
#кошуу
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
жараксыз орнотуу () {
// ЖКнын мамычаларынын жана катарларынын санын орнотуу: lcd.begin (16, 2); // ЖКга билдирүү басып чыгаруу. lcd.print ("Hertz Pitch:!"); кечигүү (1000); void loop () {// e4 кечиктирүүнү ойнотуу (600); // 0.6 секунддук тыныгуу обону (10, 329.63, 300); // e -зонду 10 -пиндеги, 3 сек. lcd.print (" 329.63 "); //" 329.63 "ЖКда билдирүүнү көрсөтүү
кечигүү (350); //.35 секундга кечиктирүү
lcd.clear (); // LCDди тазалоо жана кийинки билдирүү үчүн баштапкы абалга келтирүү // d4# тонун ойнотуу (10, 311.13, 300); lcd.print ("311.13"); кечигүү (350); lcd.clear (); // e4 обонун ойнотуу (10, 329.63, 300); lcd.print ("329.63"); кечигүү (350); lcd.clear (); // play d4# tone (10, 311.13, 300); lcd.print ("311.13"); кечигүү (350); lcd.clear (); // e4 обонун ойнотуу (10, 329.63, 300); lcd.print ("329.63"); кечигүү (350); lcd.clear (); // b3 обонун ойноо (10, 246.94, 300); lcd.print ("246.94"); кечигүү (400); lcd.clear (); // d4 обонун ойнотуу (10, 293.66, 300); lcd.print ("293.66"); кечигүү (400); lcd.clear (); // c4 обонун ойнотуу (10, 261.63, 300); lcd.print ("261.63"); кечигүү (400); lcd.clear (); // ойноо a3 тон (10, 220, 900); lcd.print ("220.0"); кечигүү (1000); lcd.clear (); // line60 // helpsave // avrdude.failure.eeprom // play d3 tone (10, 146.83, 300); lcd.print ("146.63"); кечигүү (350); lcd.clear (); // ойноо f3 тону (10, 174.61, 300); lcd.print ("174.61"); кечигүү (400); lcd.clear (); // a3 обонун ойноо (10, 220, 300); lcd.print ("220"); кечигүү (400); lcd.clear (); // b3 обонун ойнотуу (10, 246.94, 900); lcd.print ("246.94"); кечигүү (1000); lcd.clear ();
// e3 ойноо
тон (10, 164.81, 300); lcd.print ("164.81"); кечигүү (400); lcd.clear (); // ойноо g3# тон (10, 207.65, 300); lcd.print ("207.65"); кечигүү (400); lcd.clear (); // b3 обонун ойнотуу (10, 246.94, 300); lcd.print ("246.94"); кечигүү (400); lcd.clear (); // c4 обонун ойнотуу (10, 261.63, 900); lcd.print ("261.63"); кечигүү (1000); lcd.clear (); // e ton ойноо (10, 164.81, 300); lcd.print ("164.81"); кечигүү (400); lcd.clear (); // e4 обонун ойнотуу (10, 329.63, 300); lcd.print ("329.63"); кечигүү (400); lcd.clear (); // play d4# tone (10, 311.13, 300); lcd.print ("311.13"); кечигүү (400); lcd.clear (); // e4 обонун ойнотуу (10, 329.63, 300); lcd.print ("329.63"); кечигүү (400); lcd.clear (); // play d4# tone (10, 311.13, 300); lcd.print ("311.13"); кечигүү (400); lcd.clear (); // e4 обонун ойнотуу (10, 329.63, 300); lcd.print ("329.63"); кечигүү (400); lcd.clear (); // b3 обонун ойнотуу (10, 246.94, 300); lcd.print ("246.94"); кечигүү (400); lcd.clear (); // d4 обонун ойноо (10, 293.66, 300); lcd.print ("293.66"); кечигүү (400); lcd.clear (); // c4 обонун ойнотуу (10, 261.63, 300); lcd.print ("261.63"); кечигүү (400); lcd.clear (); // ойноо a3 тон (10, 220, 900); lcd.print ("220.0"); кечигүү (1000); lcd.clear (); // d3 обонун ойнотуу (10, 146.83, 300); lcd.print ("146.83"); кечигүү (400); lcd.clear (); // ойноо f3 тону (10, 174.61, 300); // eeprom 20--6 ооба, жарк 65–0 noyes lcd.print ("174.61"); кечигүү (400); lcd.clear (); // ойноо a3 тон (10, 220, 300); lcd.print ("220.0"); кечигүү (400); lcd.clear (); // b3 обонун ойнотуу (10, 246.94, 900); lcd.print ("246.94"); кечигүү (1000); lcd.clear (); // ойноо f3 тону (10, 174.61, 300); lcd.print ("174.61"); кечигүү (400); lcd.clear (); // c4 обонун ойнотуу (10, 261.63, 300); lcd.print ("261.63"); кечигүү (400); lcd.clear (); // b3 обонун ойноо (10, 246.94, 300); lcd.print ("246.94"); кечигүү (400); lcd.clear (); // ойноо a3 тон (10, 220, 900); lcd.print ("220.0"); кечигүү (1000); lcd.clear (); // b3 обонун ойноо (10, 246.94, 300); lcd.print ("246.94"); кечигүү (400); lcd.clear (); // c4 обонун ойнотуу (10, 261.63, 300); lcd.print ("261.63"); кечигүү (400); lcd.clear (); // d4 обонун ойноо (10, 293.66, 300); lcd.print ("293.66"); кечигүү (400); lcd.clear (); // e4 обонун ойнотуу (10, 329.63, 900); lcd.print ("329.63"); кечигүү (1000); lcd.clear (); // g3 тонун ойнотуу (10, 196, 300); lcd.print ("196.0"); кечигүү (400); lcd.clear (); // ойноо f4 обону (10, 349.23, 300); lcd.print ("349.23"); кечигүү (400); lcd.clear (); // e4 обонун ойнотуу (10, 329.23, 300); lcd.print ("329.23"); кечигүү (400); lcd.clear (); // d4 обонун ойнотуу (10, 293.63, 900); lcd.print ("293.63"); кечигүү (1000); lcd.clear (); // e3 тонун ойнотуу (10, 164.81, 300); lcd.print ("164.81"); кечигүү (400); lcd.clear (); // e4 обонун ойнотуу (10, 329.63, 300); lcd.print ("329.63"); кечигүү (400); lcd.clear (); // d4 обонун ойноо (10, 293.63, 300); lcd.print ("293.63"); кечигүү (400); lcd.clear (); // c4 обонун ойнотуу (10, 261.63, 900); lcd.print ("261.63"); кечигүү (1000); lcd.clear (); // d3 обонун ойноо (10, 146.83, 300); lcd.print ("146.83"); кечигүү (400); lcd.clear (); // d4 обонун ойноо (10, 293.63, 300); lcd.print ("293.63"); кечигүү (400); lcd.clear (); // c4 обонун ойнотуу (10, 261.63, 300); lcd.print ("261.63"); кечигүү (400); lcd.clear (); // b3 обонун ойнотуу (10, 246.94, 900); lcd.print ("246.94"); кечигүү (1000); lcd.clear (); // e4 обонун ойнотуу (10, 329.63, 300); lcd.print ("329.63"); кечигүү (400); lcd.clear (); // play d4# tone (10, 311.13, 300); lcd.print ("311.13"); кечигүү (350); lcd.clear (); // e4 обонун ойнотуу (10, 329.63, 300); lcd.print ("329.63"); кечигүү (350); lcd.clear (); // play d4# tone (10, 311.13, 300); lcd.print ("311.13"); кечигүү (350); lcd.clear (); // e4 обонун ойнотуу (10, 329.63, 300); lcd.print ("329.63"); кечигүү (350); lcd.clear (); // b3 обонун ойноо (10, 246.94, 300); lcd.print ("246.94"); кечигүү (400); lcd.clear (); // d4 обонун ойноо (10, 293.66, 300); lcd.print ("293.66"); кечигүү (400); lcd.clear (); // c4 обонун ойнотуу (10, 261.63, 300); lcd.print ("261.63"); кечигүү (400); lcd.clear (); // ойноо a3 тон (10, 220, 900); lcd.print ("220.0"); кечигүү (1000); lcd.clear (); // d3 обонун ойноо (10, 146.83, 300); lcd.print ("146.83"); кечигүү (350); lcd.clear (); // ойноо f3 тону (10, 174.61, 300); lcd.print ("174.61"); кечигүү (400); lcd.clear (); // ойноо a3 тон (10, 220, 300); lcd.print ("220.0"); кечигүү (400); // b3 lcd.clear () ойнотуу; тон (10, 246.94, 900); lcd.print ("246.94"); кечигүү (1000); lcd.clear (); // e3 тонун ойнотуу (10, 164.81, 300); lcd.print ("164.81"); кечигүү (400); lcd.clear (); // ойноо g#3 обону (10, 207.65, 300); lcd.print ("207.65"); кечигүү (400); lcd.clear (); // b3 обонун ойноо (10, 246.94, 300); lcd.print ("246.94"); кечигүү (400); lcd.clear (); // c4 обонун ойнотуу (10, 261.63, 900); lcd.print ("261.63"); кечигүү (1000); кечигүү (300); lcd.clear (); // e3 тонун ойнотуу (10, 164.81, 300); lcd.print ("164.81"); кечигүү (400); lcd.clear (); // e4 обонун ойнотуу (10, 329.63, 300); lcd.print ("329.63"); кечигүү (400); lcd.clear (); // play d4# tone (10, 311.13, 300); lcd.print ("311.13"); кечигүү (400); lcd.clear (); // e4 обонун ойнотуу (10, 329.63, 300); lcd.print ("329.63"); кечигүү (400); lcd.clear (); // play d4# tone (10, 311.13, 300); lcd.print ("311.13"); кечигүү (400); lcd.clear (); // e4 обонун ойнотуу (10, 329.63, 300); lcd.print ("329.63"); кечигүү (400); lcd.clear (); // b3 обонун ойнотуу (10, 246.94, 300); lcd.print ("246.94"); кечигүү (400); lcd.clear (); // d4 обонун ойноо (10, 293.66, 300); lcd.print ("293.66"); кечигүү (400); lcd.clear (); // c4 обонун ойнотуу (10, 261.63, 300); lcd.print ("261.63"); кечигүү (400); lcd.clear (); // ойноо a3 тон (10, 220, 900); lcd.print ("220.0"); кечигүү (1000); lcd.clear (); // d3 обонун ойнотуу (10, 146.83, 300); lcd.print ("146.83"); кечигүү (400); lcd.clear (); // ойноо f3 тону (10, 174.61, 300); lcd.print ("174.61"); кечигүү (400); lcd.clear (); // a3 обонун ойноо (10, 220, 300); lcd.print ("220.0"); кечигүү (400); lcd.clear (); // b3 обонун ойнотуу (10, 246.94, 900); lcd.print ("246.94"); кечигүү (1000); lcd.clear (); // ойноо f3 тону (10, 174.61, 300); lcd.print ("174.61"); кечигүү (400); lcd.clear (); // c4 обонун ойнотуу (10, 261.63, 300); lcd.print ("261.63"); кечигүү (400); lcd.clear (); // b3 обонун ойнотуу (10, 246.94, 300); lcd.print ("246.94"); кечигүү (400); lcd.clear (); // ойноо a3 тон (10, 220, 900); lcd.print ("220.0"); кечигүү (1000); lcd.clear (); }
5 -кадам: Кодду жүктөө: Мунун баары эмнени билдирет?
Келгиле, кодду түшүнүү үчүн англис тилиндеги кээ бир функцияларды аныктайлы.
тон (x, y, z); = y Герцтин үнү менен, x миллисекунд үчүн x пинзиндеги сигналга ойноо.
lcd.print ("XYZ"); = LCD экранга XYZ белгилери бар билдирүүнү басып чыгаруу. (мисалы, Hertz чайырын көрсөтүү)
кечигүү (x); = x миллисекунд үчүн тыным.
const int X = Y = Y өзгөрмөлүү X өзгөрмөсүн орнотуп, же X же Y түзмөгүнө тапшырмаларды берүү үчүн колдонуңуз.
lcd.clear (); = ЖК экранды тазалап, жаңы дисплей үчүн баштапкы абалга келтирүү
pinMode (X, OUTPUT); = чыгуу режими үчүн пин X орнотуу
Бул функциялардын бардыгын түшүнгөндөн кийин, сиз ырды которууда чогулткан маалыматтарыңыз менен өзгөрмөлөрдү оңой алмаштыра аласыз, анан өзүңүздүн ырыңызды коддой аласыз!
6 -кадам: Бүттү !
Сизде Fur Elise ойногон жана Герцте нота баалуулуктарын көрсөтүүчү Arduino бар, же сиз тандаган ырдын обонун ойногон жана көрсөткүңүз келген текстти көрсөтүүчү Arduino жасадыңыз. Бул үйрөткүчкө барганыңыз үчүн рахмат жана мен сизге Arduinoдогу бул долбоорду үмүттөнөм.
Сунушталууда:
DSLR менен слайддарды жана кинотасмаларды кантип санариптештирүү керек: 12 кадам (сүрөттөр менен)
DSLR менен слайддарды жана кинотасмаларды кантип санариптештирүү: DSLR же макро опциясы бар каалаган камера менен слайддарды жана негативдерди санариптештирүү үчүн ар тараптуу жана туруктуу орнотуу. Бул көрсөтмө 35мм негативдерди кантип санариптештирүү (2011 -жылдын июлунда жүктөлгөн) жаңыртуусу, аны кеңейтүү үчүн бир нече жакшыртуулар менен
Hi-fi системаңызды санариптештирүү: 6 кадам (сүрөттөр менен)
Hi-fi тутумуңузду санариптештирүү: Бул Нускамада мен аналогдук hi-fi системамды кантип санариптештиргенимди жана веб-радиону ишке ашырганымды, NASде сакталган музыкалык коллекцияга кирүүнү ж.б. көрсөткүм келет. Ишке ашыруу негизинен а Raspberry Pi, Hifiberry HAT жана тийүү
Ырды Sonic Piдеги барактык музыканы колдонуу менен кантип коддоо керек: 5 кадам
Ырды Sonic Piдеги музыкалык баракчаны колдонуу менен кантип коддоо керек: Бул көрсөтмө Sonic Piдеги ырды коддоодо колдонулуучу кээ бир негизги кадамдарды жана коддорду сүрөттөп берет! Даяр болгон бөлүгүңүзгө даам кошууга аракет кыла турган дагы миллиондогон коддор бар, андыктан y айланасында да ойногонуңузду текшериңиз
Эң арзан Ардуино -- Эң кичинекей Ардуино -- Arduino Pro Mini -- Программалоо -- Arduino Neno: 6 кадам (сүрөттөр менен)
Эң арзан Ардуино || Эң кичинекей Ардуино || Arduino Pro Mini || Программалоо || Ардуино Нено: …………………………. Дагы видеолор үчүн YouTube каналыма ЖАЗЫЛЫҢЫЗ ……. .Бул долбоор эң кичинекей жана эң арзан ардуинону кантип интерфейстөө жөнүндө. Эң кичине жана эң арзан ардуино - arduino pro mini. Бул arduino окшош
Ар кандай ырды Mp3ке айлантыңыз: 7 кадам
Ар кандай ырды Mp3ке айлантыңыз: мен Лас Вегаска кредит берем, ал мага кантип көрсөткөн. Мен муну мага окшоп дудук болгондорго жарыялап жатам* жаңыртуу* trebuchet03 жардамы менен m4p файлдарын өткөрө албайсыз, бирок сиз mp4 файлдары менен башкы веб -баракчасы менен эмне үчүн муну кылмак элек? жакшы менин mp3 ойноткучум