Мазмуну:

DIP Tune Selector 1 Pin колдонуп: 4 кадам
DIP Tune Selector 1 Pin колдонуп: 4 кадам

Video: DIP Tune Selector 1 Pin колдонуп: 4 кадам

Video: DIP Tune Selector 1 Pin колдонуп: 4 кадам
Video: The Sims 4 Vs. Dreams PS4 | Building My House 2024, Июль
Anonim
DIP Tune Selector 1 Pin колдонуп
DIP Tune Selector 1 Pin колдонуп

Бир аз мурун мен "музыкалык кутуча" долбоорунун үстүндө иштедим, ал 10го жакын ар кандай обондордун бирин тандаш керек болчу. Белгилүү бир обонду тандоо үчүн табигый тандоо 4 пин которгуч болчу, анткени 4 коммутатор 2 камсыз кылат4= 16 ар кандай орнотуулар. Бирок, бул ыкма үчүн катаал күчтү ишке ашыруу үчүн 4 түзмөк казыгы керек, ар бир которгучка бирден. Мен иштеп чыгуу үчүн ATtiny85ти колдонууну пландап жатканым үчүн, 4 казыктын жоголушу бир аз ашыкча болду. Бактыга жараша, мен бир нече которуштурууну киргизүү үчүн 1 аналогдук пинди колдонуунун тапкыч ыкмасын сүрөттөгөн макалага кирдим.

Көп которгуч; 1-киргизүү техникасы Voltage Divider схемасын колдонуп, 16 мүмкүн болгон коммутатордун айкалыштарынын ар бири үчүн уникалдуу бүтүн санды камсыз кылат. Бул 16 бүтүн сандын идентификаторлорунун жыйындысы андан кийин колдонмонун программасында бир аракетти жөндөө менен байланыштыруу үчүн колдонулат.

Бул нускоочу музыкалык кутучага обонду тандоону ишке ашыруу үчүн көп которуштуруу ыкмасын колдонот. Тандалган обон Arduino тон функциясын колдонуп, пьезо -зумер аркылуу ойнотулат.

1 -кадам: Керектүү жабдык

Керектүү жабдык
Керектүү жабдык

БУУну ишке ашыруу платформасы катары колдонуу керектүү аппараттык компоненттердин санын азайтат. Көп которгучтуу киргизүү ыкмасын ишке ашыруу үчүн 4 зымдуу чукул которгуч, чыңалуу бөлүштүргүч үчүн колдонулган 5 резистор жана туташуу үчүн туташуу зымы талап кылынат. Музыка кутусун тандай турган селекторду ишке ашыруу үчүн конфигурацияга пьезо -зумкер кошулат. Ыктыярдуу түрдө, колдонулган чумкуткучтун түрүнө жараша, 2x4 8 пин розетканы колдонуу пайдалуу, анткени стандарттык чукул которгучтар казандарга перформатка ширетүү үчүн жасалган окшойт, анткени нанга такага туташпайт. Розетка которгучту туташтырууда турукташтырат жана которгучту оңой көтөрүп кетүүдөн сактайт.

Аты Мүмкүн булак Кантип колдонулган
4-пин чумкуткуч Тандоо
2x4 пин розеткасы (Милдеттүү эмес) Amazon Көпчүлүк свитчиктердеги посттор коммутаторду панелде жакшы кармабайт. Розетка байланышты бекем кылууга жардам берет. Альтернатива - бул чындап эле кадимки IC казыктары менен нан үчүн колдонулган чумкуткучту табуу.

резисторлор:

  • 10K x2
  • 20K
  • 40K
  • 80K
Чыңалуу бөлүштүргүчтү ишке ашыруу
пассивдүү пьезо сигнал Amazon Ардуино тон функциясы аркылуу тиркеме аркылуу күүнү ойнотуңуз

2-кадам: Multi-switch методунун түшүндүрмөсү

Көп которуштуруу методунун түшүндүрмөсү
Көп которуштуруу методунун түшүндүрмөсү

Бул бөлүмдө көп которуштуруу методунун негизги түшүнүктөрү талкууланат жана 16 мүмкүн болгон чумкуткучту конфигурациялоонун уникалдуу идентификаторлорун өз алдынча эсептөө үчүн керектүү теңдемелер иштелип чыгат. Бул идентификаторлор, андан кийин которуштуруу конфигурациясын аракет менен байланыштыруу үчүн колдонмо программасында колдонулушу мүмкүн. Мисалы, сиз жөндөөнү каалашыңыз мүмкүн - 1 күйгүзүү, 2 өчүрүү, 3 өчүрүү, 4 өчүрүү (1, 0, 0, 0) - Amazing Grace жана (0, 1, 0, 0) ойнотуу үчүн Арстан бүгүн кечинде уктайт. Кыска жана так болушу үчүн конфигурация идентификаторлору документтин калган бөлүгүндө салыштыргычтар деп аталат.

Сүрөт
Сүрөт

Көп которуштуруу ыкмасы үчүн негизги түшүнүк-бул кирүү чыңалуусуна туташкан 2 сериялуу резистордон турган Voltage Divider схемасы. Чыгуучу чыңалуу коргошун резисторлордун ортосунда туташкан, Р1 жана Р2, жогоруда көрсөтүлгөндөй. Бөлүүчү чыгуучу чыңалуу R чыңалуусунун катышына көбөйтүлгөн кирүү чыңалуусу катары эсептелет2 R суммасына1 жана Р2 (теңдеме 1). Бул катыш дайыма 1ден азыраак, андыктан чыгуучу чыңалуу дайыма кирүү чыңалуусунан кичине болот.

Дизайн диаграммасында көрсөтүлгөндөй, көп которгуч R менен чыңалуу бөлүштүргүч катары конфигурацияланган2 туруктуу жана Р1 4 чумалуу каршылыгы үчүн курама/эквиваленттүү каршылыкка барабар. Р наркы1 чөгүү өчүргүчтөрү күйгүзүлгөнүнө жараша болот, демек, курама каршылыкка салым кошот. Чөгүү каршылыгынын резисторлору параллелдүү болгондуктан, эквиваленттүү каршылыкты эсептөө теңдемеси компоненттүү резисторлордун өз ара эсептешүүсүндө айтылат. Биздин конфигурация үчүн жана бардык которгучтар күйгүзүлгөн учурда теңдеме болуп калат

1/R1 = 1/80000 + 1/40000 + 1/20000 + 1/10000

берүү Р1 = 5333,33 вольт. Көпчүлүк орнотуулардын жок дегенде биринин өчүргүчтөрү бар экенин эске алуу үчүн, которгучтун абалы мультипликатор катары колдонулат:

1/R1 = с1*1/80000 + с2*1/40000 + с3*1/20000 + с4*1/10000 (2)

мында мамлекеттик мультипликатор, смен, которгуч күйгүзүлгөндө 1ге барабар, ал эми өчүрүлгөндө 0го барабар. R1 азыр теңдемеде керектүү болгон каршылык коэффициентин эсептөө үчүн колдонулушу мүмкүн. Бардык өчүргүчтөр кайра мисал болгон учурда

RATIO = R2/(Р1+R2) = 10000/(5333.33+10000) =.6522

Болжолдонгон компаратордун маанисин эсептөөнүн акыркы кадамы, analogRead функциясынын эффектин тууроо үчүн RATIO 1023ке көбөйтүү болуп саналат. Бардык өчүргүчтөр турган иштин идентификатору ошондо болот

салыштыруучу15 = 1023*.6522 = 667

Бардык теңдемелер азыр 16 мүмкүн болгон которуу орнотуулары үчүн идентификаторлорду эсептөө үчүн бар. Кыскача айтканда:

  1. R1 2 теңдемеси менен эсептелет
  2. R1 жана Р2 байланышкан каршылык RATIO эсептөө үчүн колдонулат
  3. RATIO салыштырмалуу маанини алуу үчүн 1023 менен көбөйтүлөт
  4. ыктыярдуу түрдө, болжолдонгон чыгаруу чыңалуусу RATIO*Vin катары да эсептелиши мүмкүн

Салыштыргычтар топтому чыңалуу бөлүүчү үчүн колдонулган резистордун маанилерине гана көз каранды жана конфигурация үчүн уникалдуу кол тамга болуп саналат. Бөлүүчү чыгыш чыңалуусу чуркоодон чуркап (жана окуу үчүн окуу) өзгөрүп тургандыктан, бул контекстте уникалдуу, идентификаторлордун эки топтому бири-бирине дал келбесе дагы, алар салыштырмалуу компоненттердин салыштырмалуу айырмачылыктары чакан чейинки көрсөтүлгөн интервал. Интервалдын өлчөмү параметрин күтүлүүчү термелүүлөрдү эсепке алгыдай чоң, бирок ар кандай которгуч орнотуулары бири -бирине төп келбей турганчалык кичине тандоо керек. Адатта 7 интервалдын жарым кеңдиги үчүн жакшы иштейт.

Белгилүү бир конфигурация үчүн компараторлордун топтомун бир нече ыкмалар менен алууга болот - демо программаны иштетүү жана ар бир жөндөө үчүн баалуулуктарды жазуу; эсептөө үчүн кийинки бөлүмдөгү таблицаны колдонуңуз; бар топтомду көчүрүү. Жогоруда айтылгандай, бардык комплекттер бир аз башкача болот, бирок иштеши керек. Мен эгерде резисторлордун кайсынысы олуттуу өзгөрсө же андан көп резистор кошулса, мен кийинки бөлүмдөн көп которгучту орнотуу үчүн автордун идентификаторлор топтомун колдонууну сунуштайм.

Төмөнкү демо программа учурдагы чумкуу которгучтун параметрлерин аныктоо үчүн компараторлордун колдонулушун көрсөтөт. Ар бир программа циклинде analogRead учурдагы конфигурациянын идентификаторун алуу үчүн аткарылат. Бул идентификатор салыштырма тизме боюнча дал келгенге чейин же тизме түгөнгөнгө чейин салыштырылат. Эгерде дал келүү табылса, анда текшерүү үчүн чыгарылган билдирүү берилет; табылбаса эскертүү берилет. 3 секунддук кечигүү циклге киргизилет, андыктан сериялык чыгаруу терезеси билдирүүлөргө толуп калбашы үчүн жана чумкутуу конфигурациясын баштапкы абалга келтирүүгө бир аз убакыт бериши керек.

//-------------------------------------------------------------------------------------

// Демо программасы, чыңалуу бөлүштүргүчтүн чыгышын окуп, аны // учурдагы чөгүү которгучунун конфигурациясын аныктоо үчүн колдонуу мүмкүнчүлүгүнүн ар бир параметрин // салыштыруу маанилеринин массивинен карап көрүңүз. Издөө массивиндеги баалуулуктарды // же конфигурация үчүн мурунку иштөөдөн же эсептөө аркылуу алууга болот // негизги теңдемелердин негизинде. // ------------------------------------------------ -------------------------------------- int компаратору [16] = {0, 111, 203, 276, 339, 393, 434, 478, 510, 542, 567, 590, 614, 632, 651, 667}; // иштетүүчү өзгөрмөлөрдү аныктоо int dipPin = A0; // чыңалуу бөлүүчү киргизүү үчүн аналогдук пин int dipIn = 0; // analogRead тарабынан которулган бөлүүчү чыңалуусун кармап турат int count = 0; // цикл эсептегич int epsilon = 7; // салыштыруу аралыгы жарым туурасы бол dipFound = false; // эгерде учурдагы чыңалуу бөлүштүргүчтүн табуусу табылганда боштукту орнотуу табылган болсо () {pinMode (dipPin, INPUT); // чыңалуу бөлүштүргүчтү INPUT Serial.begin (9600) катары конфигурациялоо; // сериялык байланышты иштетүү} void loop () {delay (3000); // чыгууну өтө ылдам жылдыруудан сактаңыз // Издөө параметрлерин баштаңыз count = 0; dipFound = false; // Окуу жана документтин учурдагы чыгуу чыңалуусу dipIn = analogRead (dipPin); Serial.print ("бөлүүчү чыгаруу"); Serial.print (dipIn); // Учурдагы маанини салыштыруу тизмесин издөө ((count <16) && (! DipFound)) {if (abs (dipIn - comparator [count]) <= epsilon) {// dipFound = true; Serial.print ("кирүүдө табылган"); Serial.print (эсептөө); Serial.println ("маани" + Сап (салыштыруучу [саноо])); тыныгуу; } count ++; } if (! dipFound) {// мааниси таблицада жок; болбошу керек Serial.println ("OOPS! Табылган жок; Ghost Bustersке жакшыраак чал"); }}

3 -кадам: Comparator Spreadsheet

Сүрөт
Сүрөт

16 компаратордун мааниси боюнча эсептөөлөр жогоруда көрсөтүлгөн таблицада берилген. Коштоочу Excel файлы ушул бөлүмдүн ылдый жагында жүктөө үчүн жеткиликтүү.

Электрондук жадыбал мамычалары A-D түшүрүү каршылыгынын маанилерин жана 16 мүмкүн болгон которуу орнотууларын жазышат. Сураныч, фритинг дизайн диаграммасында көрсөтүлгөн аппараттык DIP которгуч чындыгында электрондук жадыбалда көрсөтүлгөн оңдон солго номерленүүнүн ордуна солдон оңго чейин номерленгенине көңүл буруңуз. Мен муну бир аз түшүнүксүз деп таптым, бирок альтернатива "1" конфигурациясын (0, 0, 0, 1) тизменин биринчи жагына койбойт. Э мамыча Voltage Divider эквиваленттүү каршылыгын R эсептөө үчүн мурунку бөлүмдүн 2 формуласын колдонот1 жөндөө үчүн. F мамычасы бул жыйынтыкты байланышкан каршылык RATIO эсептөө үчүн колдонот, жана, акырында, G мамычасы болжолдуу компаратордун маанисин алуу үчүн analogRead максималдуу маанисине (1023) көбөйтөт. Акыркы 2 тилкеде демо программанын чыныгы баалуулуктары жана болжолдонгон жана чыныгы баалуулуктардын ортосундагы айырмачылыктар бар.

Мурунку бөлүмдө салыштырмалуу баалуулуктардын топтомун алуу үчүн үч ыкма айтылган, эгерде резистордун мааниси олуттуу өзгөрсө же көбүрөөк өчүргүчтөр кошулса, бул жадыбалды кеңейтүү. Көрүнүп тургандай, резистордун маанисиндеги кичинекей айырмачылыктар акыркы жыйынтыктарга олуттуу таасир этпейт окшойт (бул жакшы, анткени резистордун спецификациясы толеранттуулукту берет, 5%дейли, жана резистор сейрек анын чыныгы айтылган маанисине барабар).

4 -кадам: обон ойнотуу

Бир обон ойноо
Бир обон ойноо

Көп которуштуруу техникасы тиркемеде кантип колдонулушу мүмкүн экенин көрсөтүү үчүн, "Методикалык түшүндүрмө" бөлүмүнүн салыштыруу демо программасы музыкалык кутуча программасы үчүн обондорду тандоо процессин ишке ашыруу үчүн өзгөртүлгөн. Жаңыртылган колдонмонун конфигурациясы жогоруда көрсөтүлгөн. Аппараттык жабдууларга бир гана кошумча - бул тандалган обонду ойнотуу үчүн пассивдүү пьезо сигнал. Программалык камсыздоонун негизги өзгөрүүсү - бул обонду жана Arduino обонун колдонуу менен, обонду ойнотуу үчүн күн тартибин кошуу.

Жеткиликтүү обондордун үзүндүлөрү Tunes.h аталышындагы файлда камтылган жана керектүү колдоо структураларынын аныктамасы менен бирге. Ар бир обон нотанын жыштыгын жана узактыгын камтыган нотага тиешелүү структуралардын массиви катары аныкталат. Эскертүү жыштыктары өзүнчө аталыш файлында камтылган, Pitches.h. Программа жана аталыш файлдары бул бөлүмдүн аягында жүктөө үчүн жеткиликтүү. Бардык үч файл бир каталогго жайгаштырылышы керек.

Тандоо жана идентификация төмөнкүдөй жүрөт:

  1. "Колдонуучу" керектүү обон менен байланышкан конфигурацияга чумкуткучтарды коёт
  2. Ар бир программа циклинин цикли учурдагы чөгүү которгучунун аныктагычы analogRead аркылуу алынат
  3. 2 -кадамдын конфигурация идентификатору жеткиликтүү обондор тизмесиндеги ар бир салыштыргычка салыштырылат
  4. Эгерде дал келүү табылса, playTune тартиби күү ноталарынын тизмесине кирүү үчүн керектүү маалымат менен чакырылат

    Arduino тон функциясын колдонуу менен ар бир нота зумер аркылуу ойнотулат

  5. Эгерде дал келүү табылбаса, эч кандай чара көрүлбөйт
  6. 1-5 кайталаъыз

Жеткиликтүү обондор үчүн DIP которгучтун орнотуулары төмөнкү таблицада көрсөтүлгөн, анда 1 которгуч күйгүзүлгөн, 0 өчүрүлгөн. Эске салсак, чумкуткучту багыттоо ыкмасы 1ди эң солго которот (80K каршылыгы менен байланышкан).

АТЫ Которуштуруу 1 Switch 2 3 -которуштуруу Которуштуруу 4
Danny Boy 1 0 0 0
Мамалак 0 1 0 0
Арстан бүгүн кечинде уктайт 1 1 0 0
Кыйынчылыкты эч ким билбейт 0 0 1 0
Amazing Grace 0 0 0 1
Бош жер 1 0 0 1
MockingBird Hill 1 0 1 1

Пьезо сигналынын үнүнүн сапаты, албетте, сонун эмес, бирок ал жок дегенде таанылат. Негизи обондор өлчөнсө, алар ноталардын так жыштыгына абдан жакын. Программада колдонулган бир кызыктуу ыкма PROGMEM директивасын колдонуу менен күүлөнгөн маалыматтарды флэш/программанын эс тутумунда демейки маалымат эс бөлүмүнүн ордуна сактоо болуп саналат. Берилиштер бөлүмү программаны иштетүүчү өзгөрмөлөрдү камтыйт жана ATtiny микроконтроллерлеринин кээ бирлери үчүн 512 байттын тегерегинде.

Сунушталууда: