Obsah:
- Krok 1: Požadovaný hardvér
- Krok 2: Metóda viacnásobného prepínača Vysvetlenie
- Krok 3: Tabuľka porovnávača
- Krok 4: Zahrajte si melódiu
Video: Volič DIP ladenia pomocou 1 kolíka: 4 kroky
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
Pred časom som pracoval na projekte „music box“, ktorý si musel vybrať až z 10 rôznych úryvkov melódie. Prirodzenou voľbou na výber konkrétnej melódie bol 4 -kolíkový prepínač, pretože 4 prepínače poskytujú 24= 16 rôznych nastavení. Implementácia hrubej sily pre tento prístup však vyžaduje 4 kolíky zariadenia, jeden pre každý prepínač. Keďže som plánoval použiť ATtiny85 na vývoj, strata 4 pinov bola trochu príliš. Našťastie som narazil na článok, ktorý popisuje geniálnu metódu použitia 1 analógového kolíka na zvládnutie viacerých prepínacích vstupov.
Technika viacerých prepínačov; 1 vstup používa obvod rozdeľovača napätia na poskytnutie jedinečnej celočíselnej hodnoty pre každú zo 16 možných kombinácií nastavenia prepínača. Táto sada 16 celočíselných identifikátorov sa potom použije v aplikačnom programe na priradenie akcie k nastaveniu.
Tento pokyn využíva metódu viacerých prepínačov na implementáciu výberu melódií pre aplikáciu music box. Vybraná melódia sa potom prehrá pomocou piezoelektrického bzučiaka pomocou funkcie tónu Arduino.
Krok 1: Požadovaný hardvér
Použitie UNO ako implementačnej platformy minimalizuje počet požadovaných hardvérových komponentov. Implementácia metódy vstupu s viacerými spínačmi vyžaduje iba 4-kolíkový prepínač, 5 odporov použitých na delič napätia a prepojovací vodič na pripojenie. Do konfigurácie na implementáciu voliča melódií hudobného boxu je pridaný piezový bzučiak. Voliteľne, v závislosti od typu použitého dipového spínača, je užitočné použiť 8,4 -kolíkovú zásuvku 2x4 na pripojenie dipového spínača k doske, pretože štandardné kolíky dipových spínačov sú zrejme vyrobené na spájkovanie s perfboardom, ktorý sa nezapája priamo do breadboardu. Zásuvka stabilizuje pripojenia prepínačov DIP a zabraňuje ľahkému nadvihnutiu spínača pri nastavovaní prepínačov.
názov | Možný zdroj | Ako sa používa |
---|---|---|
4-kolíkový dip spínač | Vyladiť výber | |
2x4 kolíková zásuvka (voliteľné) | Amazon | Stĺpce na väčšine dip spínačov nedržia spínač v breadboarde veľmi dobre. Zásuvka pomáha zaistiť pevnejšie spojenie. Alternatívou je nájsť prepínač dipu, ktorý je skutočne vyrobený na použitie na doske, s pravidelnými pinmi IC. |
odpory:
|
Implementujte delič napätia | |
pasívny piezoelektrický bzučiak | Amazon | Hrajte melódiu poháňanú aplikáciou prostredníctvom funkcie tónu Arduino |
Krok 2: Metóda viacnásobného prepínača Vysvetlenie
Táto časť pojednáva o základných koncepciách metódy s viacerými prepínačmi a rozvíja rovnice potrebné pre samostatný výpočet jedinečných identifikátorov pre každú zo 16 možných konfigurácií nastavenia prepínača dip. Tieto identifikátory je potom možné použiť v aplikačnom programe na priradenie konfigurácie prepínača k akcii. Môžete napríklad chcieť - zapnúť 1, vypnúť 2, vypnúť 3, vypnúť 4 (1, 0, 0, 0) - hrať Amazing Grace a (0, 1, 0, 0) hrať Lev dnes večer spí. Aby boli stručné a stručné, konfiguračné identifikátory sa v zostávajúcej časti dokumentu označujú ako komparátory.
Základným konceptom metódy s viacerými spínačmi je obvod rozdeľovača napätia, ktorý pozostáva z 2 sériových odporov pripojených k vstupnému napätiu. Vodič výstupného napätia je zapojený medzi odpory R1 a R.2, ako je uvedené vyššie. Výstupné napätie deliča sa vypočíta ako vstupné napätie vynásobené pomerom rezistora R.2 na súčet R.1 a R.2 (rovnica 1). Tento pomer je vždy menší ako 1, takže výstupné napätie je vždy menšie ako vstupné napätie.
Ako je uvedené v konštrukčnom diagrame vyššie, multiprepínač je nakonfigurovaný ako delič napätia s R.2 pevné a R.1 sa rovná zloženému/ekvivalentnému odporu pre 4 odpory prepínača dip. Hodnota R.1 závisí od toho, ktoré prepínače dip sú zapnuté, a teda od príspevku k zloženému odporu. Pretože odpory dipového spínača sú paralelné, rovnica výpočtu ekvivalentného odporu je uvedená ako recipročné hodnoty zložkových rezistorov. Pre našu konfiguráciu a prípad, že sú všetky prepínače zapnuté, platí rovnica
1/R.1 = 1/80000 + 1/40000 + 1/20000 + 1/10000
dávať R.1 = 5333,33 voltov. Aby sa zohľadnil fakt, že väčšina nastavení má vypnutý aspoň jeden prepínač, stav prepínača sa používa ako multiplikátor:
1/R.1 = s1*1/80 000 + s2*1/40000 + s3*1/20000 + s4*1/10000 (2)
kde štátny multiplikátor, si, sa rovná 1, ak je spínač zapnutý, a rovná sa 0, ak je vypínač vypnutý. R.1 sa teraz dá použiť na výpočet odporu potrebného v rovnici 1. Príkladom je prípad, kde sú všetky spínače zapnuté
POMER = R2/(R.1+R.2) = 10000/(5333.33+10000) =.6522
Posledným krokom pri výpočte predpokladanej hodnoty komparátora je vynásobenie RATIO číslom 1023, aby sa emuloval účinok funkcie analogRead. Potom je identifikátor pre prípad, keď sú zapnuté všetky prepínače
porovnávač15 = 1023*.6522 = 667
Teraz sú k dispozícii všetky rovnice na výpočet identifikátorov pre 16 možných nastavení prepínača. Zhrnúť:
- R.1 sa vypočíta pomocou rovnice 2
- R.1 a R.2 sa používajú na výpočet POMERU odporu
- RATIO sa vynásobí 1023, aby sa získala hodnota porovnávača
- voliteľne možno predpovedané výstupné napätie vypočítať aj ako RATIO*Vin
Sada komparátorov závisí iba od hodnôt odporu použitého pre delič napätia a je jedinečným podpisom pre konfiguráciu. Pretože výstupné napätie deliča bude kolísať od behu k behu (a čítať k čítaniu), jedinečné v tomto kontexte znamená, že aj keď dve sady identifikátorov nemusia byť úplne rovnaké, sú dostatočne blízko na to, aby rozdiely v komparátorových komponentoch spadali do malého určený interval. Parameter veľkosti intervalu musí byť zvolený dostatočne veľký, aby zohľadňoval očakávané výkyvy, ale dostatočne malý, aby sa rôzne nastavenia prepínačov neprekrývali. 7 obvykle funguje dobre pre polovičnú šírku intervalu.
Súbor komparátorov pre konkrétnu konfiguráciu je možné získať niekoľkými spôsobmi - spustite demo program a zaznamenajte hodnoty pre každé nastavenie; na výpočet použite tabuľku v nasledujúcej časti; skopírujte existujúcu sadu. Ako je uvedené vyššie, všetky sady sa budú pravdepodobne mierne líšiť, ale mali by fungovať. Ak sa niektorý z rezistorov výrazne zmení alebo sa pridá viac rezistorov, navrhujem použiť sadu identifikátorov autorov metódy na nastavenie viacerých prepínačov a tabuľku z ďalšej časti.
Nasledujúci ukážkový program ilustruje použitie komparátorov na identifikáciu aktuálneho nastavenia prepínača dip. V každom programovom cykle sa vykoná analogRead, aby sa získal identifikátor pre aktuálnu konfiguráciu. Tento identifikátor sa potom porovnáva v porovnávacom zozname, kým sa nenájde zhoda alebo sa zoznam nevyčerpá. Ak sa nájde zhoda, vydá sa výstupná správa na overenie; ak sa nenájde, vydá sa varovanie. Do slučky je vložené 3 -sekundové oneskorenie, aby okno sériového výstupu nebolo zahltené správami a poskytlo určitý čas na resetovanie konfigurácie dip spínača.
//-------------------------------------------------------------------------------------
// Demo program na prečítanie výstupu deliča napätia a jeho použitie na identifikáciu // aktuálnej konfigurácie prepínača prúdom vyhľadaním výstupnej hodnoty v poli // porovnávacích hodnôt pre každé možné nastavenie. Hodnoty vo vyhľadávacom poli je možné // získať buď z predchádzajúceho spustenia konfigurácie, alebo pomocou výpočtu // na základe základných rovníc. // ------------------------------------------------ -------------------------------------- int komparátor [16] = {0, 111, 203, 276, 339, 393, 434, 478, 510, 542, 567, 590, 614, 632, 651, 667}; // Definovanie spracovateľských premenných int dipPin = A0; // analógový pin pre vstup deliča napätia int dipIn = 0; // drží výstup deliča napätia preložený analogovým čítaním int count = 0; // počítadlo slučiek int epsilon = 7; // porovnávací interval polovičná šírka bool dipFound = false; // pravda, ak sa výstup deliča aktuálneho napätia našiel vo vyhľadanej tabuľke void setup () {pinMode (dipPin, INPUT); // nakonfigurujte kolík deliča napätia ako VSTUP Serial.begin (9600); // povoliť sériovú komunikáciu} void loop () {delay (3000); // zabráňte rýchlemu posúvaniu výstupu // inicializácia parametrov vyhľadávania počet = 0; dipFound = false; // Prečítajte a zdokumentujte aktuálne výstupné napätie dipIn = analogRead (dipPin); Serial.print ("výstup deliča"); Serial.print (dipIn); // Vyhľadajte v zozname komparátorov aktuálnu hodnotu while ((počet <16) && (! DipFound)) {if (abs (dipIn - porovnávač [počet]) <= epsilon) {// zistil, že dipFound = true; Serial.print ("nájdené pri vstupe"); Serial.print (počet); Serial.println ("hodnota" + reťazec (komparátor [počet])); prestávka; } počet ++; } if (! dipFound) {// hodnota nie je v tabuľke; nemalo by sa to stať Serial.println ("OOPS! Nebolo nájdené; radšej zavolajte Ghost Busters"); }}
Krok 3: Tabuľka porovnávača
Výpočty pre 16 porovnávacích hodnôt sú uvedené v tabuľke uvedenej vyššie. Priložený súbor programu Excel je k dispozícii na stiahnutie v spodnej časti tejto sekcie.
Tabuľkové stĺpce A-D zaznamenávajú hodnoty odporu rezistora prepínača a 16 možných nastavení prepínača. Upozorňujeme, že hardvérový prepínač DIP zobrazený v pláne návrhu na zmrazenie je v skutočnosti očíslovaný zľava doprava namiesto číslovania sprava doľava zobrazeného v tabuľke. Považoval som to za trochu mätúce, ale alternatíva neumiestňuje konfiguráciu „1“(0, 0, 0, 1) na prvé miesto v zozname. Stĺpec E používa vzorec 2 v predchádzajúcej časti na výpočet ekvivalentného odporu rozdeľovača napätia R1 pre nastavenie. Stĺpec F používa tento výsledok na výpočet pridruženého odporu RATIO a nakoniec stĺpec G vynásobí RATIO maximálnou hodnotou analogRead (1023), aby sa získala predpokladaná hodnota komparátora. Posledné 2 stĺpce obsahujú skutočné hodnoty z cyklu demo programu spolu s rozdielmi medzi predpokladanými a skutočnými hodnotami.
V predchádzajúcej časti boli uvedené tri metódy na získanie sady hodnôt komparátorov vrátane rozšírenia tejto tabuľky, ak sa hodnoty odporu výrazne zmenia alebo ak sa pridá viac prepínačov. Zdá sa, že malé rozdiely v hodnotách rezistora významne neovplyvňujú konečné výsledky (čo je dobré, pretože špecifikácie rezistorov poskytujú toleranciu, povedzme 5%, a odpor sa zriedka rovná jeho skutočnej uvedenej hodnote).
Krok 4: Zahrajte si melódiu
Na ilustráciu toho, ako je možné v aplikácii použiť techniku viacnásobného prepínania, je porovnávací ukážkový program z časti „Vysvetlenie metódy“upravený tak, aby implementoval spracovanie výberu melódie pre program music box. Aktualizovaná konfigurácia aplikácie je zobrazená vyššie. Jediným doplnkom hardvéru je pasívny piezoelektrický bzučiak na prehrávanie zvolenej melódie. Základnou zmenou softvéru je pridanie rutiny na prehrávanie melódie, keď je identifikovaná, pomocou bzučiaka a tónovej rutiny Arduino.
Dostupné úryvky melódie sú obsiahnuté v hlavičkovom súbore Tunes.h spolu s definíciou potrebných podporných štruktúr. Každá melódia je definovaná ako pole štruktúr súvisiacich s notou obsahujúcich frekvenciu a trvanie noty. Frekvencie poznámok sú obsiahnuté v samostatnom hlavičkovom súbore Pitches.h. Programové a hlavičkové súbory sú k dispozícii na stiahnutie na konci tejto časti. Všetky tri súbory by mali byť umiestnené v rovnakom adresári.
Výber a identifikácia prebieha nasledovne:
- „Užívateľ“nastavuje prepínače DIP v konfigurácii spojenej s požadovaným naladením
- každý cyklus programovej slučky získa identifikátor pre aktuálne nastavenie prepínača dipu pomocou analogRead
- Identifikátor konfigurácie kroku 2 sa porovná s každým z komparátorov v zozname dostupných melódií
-
Ak sa nájde zhoda, zavolá sa rutina playTune s informáciami potrebnými na prístup k zoznamu poznámok k melódii
Pomocou funkcie tónu Arduino sa každá nota prehrá prostredníctvom bzučiaka
- Ak sa nenájde žiadna zhoda, nevykoná sa žiadna akcia
- opakujte 1-5
Nastavenia prepínačov DIP pre dostupné melódie sú uvedené v tabuľke nižšie, kde 1 znamená, že je spínač zapnutý, 0 je vypnutý. Pripomeňme, že spôsob, akým je prepínač DIP orientovaný, umiestňuje spínač 1 do polohy úplne vľavo (tá, ktorá je spojená s odporom 80K).
NÁZOV | Prepínač 1 | Prepínač 2 | Prepínač 3 | Prepínač 4 |
Danny Boy | 1 | 0 | 0 | 0 |
Malý medveď | 0 | 1 | 0 | 0 |
Lev dnes večer spí | 1 | 1 | 0 | 0 |
Nikto nepozná problémy | 0 | 0 | 1 | 0 |
Úžasná Grace | 0 | 0 | 0 | 1 |
Prázdny priestor | 1 | 0 | 0 | 1 |
MockingBird Hill | 1 | 0 | 1 | 1 |
Kvalita zvuku z piezoelektrického bzučiaka určite nie je skvelá, ale dá sa aspoň rozpoznať. V skutočnosti, ak sú tóny merané, sú veľmi blízko k presnej frekvencii tónov. Jednou zaujímavou technikou použitou v programe je uloženie údajov o vyladení do sekcie pamäte flash/programu namiesto predvolenej sekcie pamäte údajov pomocou smernice PROGMEM. Dátová časť obsahuje premenné spracovania programu a je oveľa menšia, okolo 512 bajtov pre niektoré mikrokontroléry ATtiny.
Odporúča:
Konektor ICSP pre Arduino Nano bez spájkovanej hlavičky pinu, ale kolíka Pogo: 7 krokov
Konektor ICSP pre konektor Arduino Nano bez spájkovaných kolíkov, ale kolík Pogo: Vytvorte konektor ICSP pre Arduino Nano bez konektora so spájkovanými kolíkmi na doske, ale s kolíkom Pogo. Časti 3 × 2 -kolíková zásuvka x1 - APitch 2,54 mm Dupont Line Vodičový konektor s vnútorným konektorom x6 -Pružinová skúšobná sonda BP75-E2 (kónická hlava s priemerom 1,3 mm) Pogo Pin
Ako získať TAJNÝ SVET !!!!!! (Režim ladenia): 3 kroky
Ako získať TAJNÝ SVET !!!!!! (Režim ladenia): V tomto návode vám ukážem, ako sa v Minecrafte dostať do režimu tajného sveta
Ako čítať viac analógových hodnôt pomocou jedného analógového kolíka: 6 krokov (s obrázkami)
Ako čítať viac analógových hodnôt pomocou jedného analógového pinu: V tomto návode vám ukážem, ako čítať viac analógových hodnôt pomocou iba jedného analógového vstupného pinu
Vintage otočný telefónny volič Ovládanie hlasitosti PC: 7 krokov (s obrázkami)
Vintage otočný telefónny volič Ovládanie hlasitosti v počítači: Ak ste na tom podobne ako ja, zistíte, že meníte hlasitosť na počítači pomerne často. Niektoré videá sú hlasnejšie než ostatné, niekedy chcete pri počúvaní podcastov alebo hudby na počítači stlmiť hlasitosť a možno budete musieť vypnúť
Pridanie kolíka CS na 1,3 -palcový IPS LCD ST7789: 5 krokov
Pridanie CS Pin na 1,3 "IPS LCD ST7789: Nedávno som narazil na lacný 1,3" IPS TFT displej. Má veľmi vysoké rozlíšenie 240 x 240 pixelov a veľmi vysokú hustotu pixelov vďaka svojej malej veľkosti. Jedná sa o panel IPS, IPS znamená InPlane Switching. Jedná sa o typ LCD obrazovky vyššej triedy