Orodha ya maudhui:

Teua Kisaguzi Cha Kutumia Kitufe 1: Hatua 4
Teua Kisaguzi Cha Kutumia Kitufe 1: Hatua 4

Video: Teua Kisaguzi Cha Kutumia Kitufe 1: Hatua 4

Video: Teua Kisaguzi Cha Kutumia Kitufe 1: Hatua 4
Video: 🌹 Красивая! Удобная! Практичная! Летняя женская кофточка спицами. Часть 1. 🌺 Размер 48-50 2024, Julai
Anonim
Chagua Kitambulisho cha DIP Kutumia 1 Pin
Chagua Kitambulisho cha DIP Kutumia 1 Pin

Muda mfupi nyuma nilifanya kazi kwenye mradi wa "sanduku la muziki" ambao ulihitaji kuchagua kati ya vijisehemu 10 vya tune tofauti. Chaguo asili la kuokota tune maalum ilikuwa ubadilishaji wa pini 4 kwani swichi 4 hutoa 24= 16 mipangilio tofauti. Walakini, utekelezaji wa nguvu ya brute kwa njia hii inahitaji pini 4 za kifaa, moja kwa kila swichi. Kwa kuwa nilikuwa nikipanga kutumia ATtiny85 kwa maendeleo, upotezaji wa pini 4 ulikuwa kidogo sana. Kwa bahati nzuri, niliingia kwenye nakala ambayo inaelezea njia nzuri ya kutumia pini 1 ya analog kushughulikia pembejeo nyingi za kubadili.

Mbadiliko anuwai; Mbinu ya kuingiza 1 hutumia mzunguko wa Mgawanyiko wa Voltage kutoa nambari ya kipekee ya nambari kwa kila moja ya mchanganyiko wa mipangilio 16 ya kubadili. Seti hii ya vitambulisho kamili 16 hutumiwa katika programu ya maombi kuhusisha kitendo na mpangilio.

Hii inaajiriwa kutumia njia ya kubadili anuwai kutekeleza uteuzi wa tune kwa programu ya sanduku la muziki. Nyimbo inayochaguliwa kisha huchezwa kupitia buzzer ya piezo kwa kutumia kazi ya toni ya Arduino.

Hatua ya 1: Vifaa vinavyohitajika

Vifaa vinavyohitajika
Vifaa vinavyohitajika

Matumizi ya UNO wakati jukwaa la utekelezaji linapunguza idadi ya vifaa vinavyohitajika vya vifaa. Utekelezaji wa njia ya kuingiza ubadilishaji anuwai inahitaji swichi ya kuzamisha pini 4 tu, vizuia 5 vinavyotumika kwa mgawanyiko wa voltage, na waya wa kushikamana kwa unganisho. Buzzer ya piezo imeongezwa kwenye usanidi wa utekelezaji wa kiteuzi cha sanduku la muziki. Kwa hiari, kulingana na aina ya swichi ya kuzamisha iliyotumiwa, ni muhimu kutumia tundu la pini 2x4 8 kuunganisha swichi ya kuzamisha kwenye ubao wa mkate kwani pini za kawaida za kuzamisha zinaonekana kutengenezewa kwa ubao wa kutopachika moja kwa moja kwenye ubao wa mkate. Tundu huimarisha uunganisho wa swichi ya kuzamisha na hufanya swichi isiinuliwe kwa urahisi wakati wa kuweka swichi za kugeuza.

Jina Chanzo kinachowezekana Jinsi Imetumika
4-pini kubadili kuzamisha Teua uteuzi
Tundu la pini 2x4 (Hiari) Amazon Machapisho kwenye swichi nyingi za kuzamisha hayashikilii swichi vizuri kwenye ubao wa mkate. Tundu husaidia kufanya unganisho kuwa thabiti zaidi. Njia mbadala ni kupata swichi ya kuzamisha ambayo imetengenezwa kweli kwa matumizi ya mkate na pini za kawaida za IC.

vipinga:

  • 10K x2
  • 20K
  • 40K
  • 80K
Tekeleza mgawanyiko wa voltage
buzzer ya piezo isiyo na maana Amazon Cheza wimbo kama unaendeshwa na programu tumizi kupitia kazi ya toni ya Arduino

Hatua ya 2: Ufafanuzi wa Njia Mbalimbali

Mbinu nyingi za kubadili Ufafanuzi
Mbinu nyingi za kubadili Ufafanuzi

Sehemu hii inazungumzia dhana za msingi za njia ya kubadili anuwai na inaendeleza hesabu zinazohitajika kwa hesabu ya kusimama pekee ya vitambulisho vya kipekee kwa kila moja ya mipangilio 16 ya mipangilio ya ubadilishaji wa kuzamisha. Vitambulisho hivi vinaweza kutumiwa katika programu ya programu kuhusisha usanidi wa ubadilishaji na kitendo. Kwa mfano, unaweza kutaka kuweka - kuwasha 1 kuwasha, kuzima 2, kuzima 3, kuzima 4 (1, 0, 0, 0) - kucheza Neema ya Kushangaza na (0, 1, 0, 0) kucheza Simba Amelala Leo Usiku. Kwa ufupi na ufupi vitambulisho vya usanidi hurejewa kama kulinganisha katika hati iliyobaki.

Picha
Picha

Dhana ya kimsingi ya njia ya kubadili anuwai ni Mzunguko wa Voltage Divider ambayo ina 2 katika vipinga mfululizo vilivyounganishwa na voltage ya pembejeo. Uongozi wa voltage ya pato umeunganishwa kati ya vipinga, R1 na R2, kama inavyoonyeshwa hapo juu. Voltage ya pato la mgawanyiko imehesabiwa kama voltage ya pembejeo iliyozidishwa na uwiano wa kipinga R2 kwa jumla ya R1 na R2 (equation 1). Uwiano huu daima ni chini ya 1 kwa hivyo voltage ya pato daima ni ndogo kuliko voltage ya pembejeo.

Kama inavyoonyeshwa kwenye mchoro wa muundo hapo juu swichi nyingi imewekwa kama mgawanyiko wa voltage na R2 fasta na R1 sawa na upinzani wa mchanganyiko / sawa kwa vipinga 4 vya kubadili kuzamisha. Thamani ya R1 inategemea swichi za kuzamisha zinawashwa na, kwa hivyo, kuchangia upinzani wa mchanganyiko. Kwa kuwa vipingao vya swichi za kuzamisha ziko sawa, hesabu sawa ya hesabu ya upinzani imesemwa kulingana na urejeshi wa vifaa vya kupinga. Kwa usanidi wetu na kesi ambayo swichi zote zimewashwa, equation inakuwa

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

kutoa R1 = Volti 5333.33. Ili kuzingatia ukweli kwamba mipangilio mingi imezima angalau swichi moja, hali ya ubadilishaji hutumiwa kama kiongezaji:

1 / R1 = s1* 1/80000 + s2* 1/40000 + s3* 1/20000 + s4*1/10000 (2)

ambapo kuzidisha hali, si, ni sawa na 1 ikiwa swichi imewashwa na sawa na 0 ikiwa swichi imezimwa. R1 sasa inaweza kutumika kuhesabu uwiano wa upinzani unaohitajika katika equation 1. Kutumia kesi ambapo swichi zote ziko kama mfano tena

UWIANO = R2/ (R1+ R2) = 10000/(5333.33+10000) =.6522

Hatua ya mwisho ya hesabu ya thamani ya ulinganishaji uliotabiriwa ni kuzidisha RATIO ifikapo mwaka 1023 ili kuiga athari ya kazi ya AnalogSoma. Kitambulisho cha kesi ambayo swichi zote zinawashwa basi

kulinganisha15 = 1023*.6522 = 667

Usawa wote sasa uko mahali pa kuhesabu vitambulisho vya mipangilio 16 inayowezekana ya ubadilishaji. Kufupisha:

  1. R1 imehesabiwa kwa kutumia equation 2
  2. R1 na R2 hutumiwa kuhesabu RATIO ya upinzani inayohusiana
  3. Uwiano unazidishwa na 1023 ili kupata thamani ya kulinganisha
  4. kwa hiari, voltage ya pato iliyotabiriwa pia inaweza kuhesabiwa kama RATIO * Vin

Seti ya kulinganisha inategemea tu maadili ya kupinga yanayotumiwa kwa mgawanyiko wa voltage na ni saini ya kipekee ya usanidi. Kwa sababu voltages za pato la mgawanyiko zitabadilika kutoka kukimbia kukimbia (na kusoma kusoma), kipekee katika muktadha huu inamaanisha kuwa wakati seti mbili za vitambulisho zinaweza kuwa sio sawa sawa ni karibu sana kwamba tofauti za kulinganisha kipengee huanguka ndani ya pre- ndogo muda maalum. Kigezo cha saizi ya muda lazima ichaguliwe kubwa ya kutosha kuhesabu kushuka kwa thamani inayotarajiwa lakini ndogo kiasi kwamba mipangilio tofauti ya ubadilishaji haingiliani. Kawaida 7 hufanya kazi vizuri kwa muda wa nusu-upana.

Seti ya kulinganisha kwa usanidi fulani inaweza kupatikana kwa njia kadhaa - endesha programu ya onyesho na rekodi maadili kwa kila mpangilio; tumia lahajedwali katika sehemu inayofuata kuhesabu; nakili seti iliyopo. Kama ilivyoonyeshwa hapo juu seti zote zinaweza kuwa tofauti kidogo lakini zinapaswa kufanya kazi. Ninashauri kutumia seti ya vitambulisho vya mwandishi wa njia kwa usanidi wa kubadili anuwai na lahajedwali kutoka sehemu inayofuata ikiwa vizuizi vimebadilishwa kwa kiasi kikubwa au vipinga zaidi vimeongezwa.

Programu ifuatayo ya onyesho inaonyesha matumizi ya kulinganisha kutambua mpangilio wa swichi ya kuzamisha ya sasa. Katika kila mzunguko wa programu AnalogRead inafanywa ili kupata kitambulisho cha usanidi wa sasa. Kitambulisho hiki kinalinganishwa kwenye orodha ya kulinganisha hadi mechi ipatikane au orodha imechoka. Ikiwa mechi inapatikana ujumbe wa pato hutolewa kwa uthibitisho; ikiwa haipatikani onyo hutolewa. Ucheleweshaji wa sekunde 3 umeingizwa kwenye kitanzi ili dirisha la pato la serial lisizidiwa na ujumbe na kutoa muda wa kuweka upya usanidi wa swichi ya kuzamisha.

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

// Programu ya Demo kusoma kipato cha mgawanyiko wa voltage na kuitumia kutambua usanidi wa swichi ya // ya kuzamisha kwa sasa kwa kuangalia thamani ya pato juu katika safu ya maadili ya kulinganisha kwa kila mpangilio unaowezekana. Thamani katika safu ya kutafuta zinaweza // kupatikana kutoka kwa mbio ya awali ya usanidi au kupitia hesabu // kulingana na hesabu za msingi. // ------------------------------------------------ -------------------------------------- kulinganisha int [16] = {0, 111, 203, 276, 339, 393, 434, 478, 510, 542, 567, 590, 614, 632, 651, 667}; // Fafanua vigezo vya usindikaji int dipPin = A0; // pini ya analogi kwa pembejeo ya mgawanyiko wa voltage int dipIn = 0; // inashikilia pato la mgawanyiko linalotafsiriwa na analogSoma int count = 0; // kitanzi counter int epsilon = 7; // kulinganisha muda wa nusu-upana bool dipFound = uongo; // kweli ikiwa pato la sasa la mgawanyiko wa voltage linapatikana katika kutazama usanidi batili wa meza () {pinMode (dipPin, INPUT); // sanidi pini ya mgawanyiko wa voltage kama Pembejeo ya Serial. kuanza (9600); // kuwezesha mawasiliano ya serial} kitanzi batili () {kuchelewesha (3000); // weka pato kutoka kwa kutembeza haraka sana // Anzisha vigezo vya utaftaji hesabu = 0; dipFound = uongo; // Soma na uandike hati ya sasa ya pato dipIn = analogRead (dipPin); Serial.print ("pato la mgawanyiko"); Serial.print (dipIn); // Orodha ya kulinganisha ya utaftaji wa thamani ya sasa wakati ((hesabu <16) && (! DipFound)) {if (abs (dipIn - comparator [count]) <= epsilon) {// imeipata dipFound = true; Serial.print ("kupatikana wakati wa kuingia"); Printa ya serial (hesabu); Serial.println ("thamani" + Kamba (kulinganisha [hesabu])); kuvunja; } hesabu ++; } ikiwa (! dipFound) {// thamani sio kwenye jedwali; haipaswi kutokea Serial.println ("OOPS! Haikupatikana; bora piga Ghost Busters"); }}

Hatua ya 3: Lahajedwali la kulinganisha

Picha
Picha

Mahesabu ya maadili 16 ya kulinganisha hutolewa katika lahajedwali lililoonyeshwa hapo juu. Faili iliyo bora zaidi inapatikana kwa kupakuliwa chini ya sehemu hii.

Safu wima za lahajedwali A-D inarekodi maadili ya kipinishi cha swichi ya kuzamisha na mipangilio 16 ya ubadilishaji inayowezekana. Tafadhali kumbuka kuwa swichi ya DIP ya vifaa iliyoonyeshwa kwenye mchoro wa muundo wa fritzing kweli imehesabiwa kutoka kushoto kwenda kulia badala ya nambari ya kulia kwenda kushoto iliyoonyeshwa kwenye lahajedwali. Nimeona hii inachanganya lakini mbadala hauweke usanidi wa "1" (0, 0, 0, 1) mwanzoni mwa orodha. Safu wima E hutumia fomula ya 2 ya sehemu iliyotangulia kuhesabu upinzani sawa wa Mgawanyiko wa Voltage R1 kwa mpangilio. Safu wima F hutumia matokeo haya kuhesabu RATIO ya upinzani inayohusiana, na, mwishowe, Safu wima G huzidisha RATIO na hesabu ya AnalogSoma max (1023) kupata thamani ya ulinganishi iliyotabiriwa. Safu wima 2 za mwisho zina maadili halisi kutoka kwa programu ya demo pamoja na tofauti kati ya maadili yaliyotabiriwa na halisi.

Sehemu iliyotangulia ilitaja njia tatu za kupata seti ya nambari za kulinganisha pamoja na ugani wa lahajedwali hili ikiwa maadili ya kontena yanabadilishwa sana au swichi zaidi zinaongezwa. Inaonekana kwamba tofauti ndogo katika maadili ya kinzani haziathiri sana matokeo ya mwisho (ambayo ni nzuri kwani vipimo vya kontena vinatoa uvumilivu, sema 5%, na kinzani mara chache ni sawa na thamani yake halisi).

Hatua ya 4: Cheza Tune

Cheza Tune
Cheza Tune

Ili kuonyesha jinsi mbinu ya kubadili anuwai inaweza kutumika katika programu, programu ya onyesho la kulinganisha kutoka sehemu ya "Ufafanuzi wa Njia" imebadilishwa kutekeleza usindikaji wa uteuzi wa tune kwa programu ya sanduku la muziki. Usanidi wa programu iliyosasishwa umeonyeshwa hapo juu. Kuongezea tu kwa vifaa ni buzzer ya piezo ya kupita ili kucheza tune iliyochaguliwa. Mabadiliko ya kimsingi kwa programu hiyo ni kuongeza utaratibu wa kucheza tune, mara baada ya kutambuliwa, kwa kutumia buzzer na utaratibu wa toni ya Arduino.

Vijisehemu vya tune zilizopo viko kwenye faili ya kichwa, Tunes.h, pamoja na ufafanuzi wa miundo muhimu ya msaada. Kila tune hufafanuliwa kama safu ya miundo inayohusiana na maandishi iliyo na masafa ya muda na muda. Masafa ya maandishi yanapatikana katika faili tofauti ya kichwa, Pitches.h. Programu na faili za kichwa zinapatikana kwa kupakuliwa mwishoni mwa sehemu hii. Faili zote tatu zinapaswa kuwekwa kwenye saraka sawa.

Uteuzi na kitambulisho kinaendelea kama ifuatavyo:

  1. "Mtumiaji" huweka swichi za kuzamisha katika usanidi unaohusishwa na tune inayotaka
  2. kila mzunguko wa kitanzi cha programu kitambulisho cha mpangilio wa ubadilishaji wa kuzamisha unapatikana kupitia AnalogSoma
  3. Kitambulisho cha usanidi wa hatua ya 2 kinalinganishwa dhidi ya kila mmoja wa kulinganisha katika orodha ya tune inayopatikana
  4. Ikiwa mechi inapatikana utaratibu wa kuchezaTune unaitwa na habari inayohitajika kupata orodha ya maandishi ya tune

    Kutumia kazi ya toni ya Arduino kila noti inachezwa kupitia buzzer

  5. Ikiwa hakuna mechi inayopatikana, hakuna hatua inayochukuliwa
  6. kurudia 1-5

Mipangilio ya ubadilishaji wa DIP kwa tunes zilizopo zinaonyeshwa kwenye jedwali hapa chini ambapo 1 inamaanisha swichi imewashwa, 0 zima. Kumbuka kwamba njia ambayo swichi ya kuzamisha inaelekeza mahali hubadilisha 1 katika nafasi ya kushoto zaidi (ile inayohusishwa na kontena la 80K).

JINA Badilisha 1 Badilisha 2 Badilisha 3 Badilisha 4
Danny Boy 1 0 0 0
Dubu Mdogo 0 1 0 0
Simba Amelala Leo Usiku 1 1 0 0
Hakuna Mtu Anajua Shida 0 0 1 0
Neema ya ajabu 0 0 0 1
Nafasi tupu 1 0 0 1
Kudhihaki Ndege Hill 1 0 1 1

Ubora wa sauti kutoka kwa buzzer ya piezo hakika sio nzuri lakini ni angalau kutambulika. Kwa kweli ikiwa tani zinapimwa, ziko karibu sana na noti mzunguko halisi. Mbinu moja ya kupendeza inayotumiwa katika programu ni kuhifadhi data ya tune katika sehemu ya kumbukumbu ya flash / program badala ya sehemu ya kumbukumbu ya data chaguomsingi kwa kutumia agizo la PROGMEM. Sehemu ya data inashikilia anuwai ya usindikaji wa programu na ni ndogo sana, karibu kaiti 512 kwa baadhi ya watawala wadhibiti wa ATTiny.

Ilipendekeza: