Sadržaj:
- Korak 1: Potreban hardver
- Korak 2: Objašnjenje metode s više prekidača
- Korak 3: Tablica za usporedbu
- Korak 4: Pustite melodiju
Video: Birač DIP tuneja pomoću 1 pina: 4 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:36
Neko sam vrijeme radio na projektu "glazbene kutije" koji je trebao birati između čak 10 različitih isječaka melodija. Prirodan izbor za odabir određene melodije bio je 4 -pinski dip prekidač budući da 4 prekidača pružaju 24= 16 različitih postavki. Međutim, implementacija grube sile za ovaj pristup zahtijeva 4 pina uređaja, po jedan za svaki prekidač. Budući da sam planirao koristiti ATtiny85 za razvoj, gubitak 4 igle bio je previše. Srećom, naletio sam na članak koji opisuje genijalnu metodu korištenja 1 analognog pina za rukovanje višestrukim ulazima prekidača.
Tehnika s više prekidača; 1 ulaz koristi krug razdjelnika napona za osiguravanje jedinstvene cjelobrojne vrijednosti za svaku od 16 mogućih kombinacija postavki prekidača. Ovaj skup od 16 cjelobrojnih identifikatora tada se koristi u aplikacijskom programu za povezivanje radnje s postavkom.
Ovaj instruktor koristi metodu s više prekidača za provedbu odabira melodije za aplikaciju glazbene kutije. Odabrana melodija zatim se reproducira kroz piezo zvučni signal pomoću funkcije Arduino tona.
Korak 1: Potreban hardver
Korištenje UNO -a kao implementacijske platforme minimizira broj potrebnih hardverskih komponenti. Za implementaciju višestruke sklopke ulazne metode potrebni su samo 4-pinski dip prekidač, 5 otpornika koji se koriste za razdjelnik napona i spojna žica za povezivanje. Konfiguraciji je dodan piezo zujalica za implementaciju birača melodija glazbene kutije. Izborno, ovisno o vrsti upotrijebljene dip sklopke, korisno je upotrijebiti 2x4 8 -polnu utičnicu za spajanje dip prekidača na matičnu ploču budući da se čini da su standardni pinovi prekidača napravljeni za lemljenje na ploču koja se ne priključuje izravno na ploču. Utičnica stabilizira spojeve dip prekidača i sprječava lako podizanje prekidača pri postavljanju prekidača.
Ime | Mogući izvor | Kako se koristi |
---|---|---|
4-polni dip prekidač | Odabir melodije | |
2x4 pinska utičnica (opcionalno) | Amazon | Stupovi na većini dip prekidača ne drže prekidač baš dobro na ploči. Utičnica čini vezu jačom. Alternativa je pronaći dip prekidač koji je uistinu napravljen za upotrebu na matičnoj ploči s običnim IC pinovima. |
otpornici:
|
Ugradite razdjelnik napona | |
pasivni piezo zujalica | Amazon | Reproducirajte melodiju koju pokreće aplikacija putem Arduino tonske funkcije |
Korak 2: Objašnjenje metode s više prekidača
U ovom odjeljku raspravlja se o temeljnim konceptima za metodu s više sklopki i razvijaju se jednadžbe potrebne za samostalni izračun jedinstvenih identifikatora za svaku od 16 mogućih konfiguracija postavki dip prekidača. Ti se identifikatori tada mogu koristiti u aplikacijskom programu za povezivanje konfiguracije prekidača s radnjom. Na primjer, možda biste htjeli postavku - uključite 1, isključite 2, isključite 3, isključite 4 (1, 0, 0, 0) - za reprodukciju Amazing Grace i (0, 1, 0, 0) za reprodukciju Lav spava noćas. Radi sažetosti i sažetosti, identifikatori konfiguracije u ostatku dokumenta nazivaju se usporednicima.
Temeljni koncept metode s više sklopki je krug razdjelnika napona koji se sastoji od 2 serijska otpornika spojena na ulazni napon. Izlazni naponski vod spojen je između otpornika, R1 i R.2, kao što je gore prikazano. Izlazni napon razdjelnika izračunava se kao ulazni napon pomnožen omjerom otpornika R2 na zbroj R1 i R.2 (jednadžba 1). Taj je omjer uvijek manji od 1 pa je izlazni napon uvijek manji od ulaznog napona.
Kao što je naznačeno na shemi dizajna iznad, višeprekidač je konfiguriran kao razdjelnik napona s R2 fiksni i R1 jednaka kompozitnom/ekvivalentnom otporu za 4 otpornika otpornika. Vrijednost R1 ovisi o tome koji su dip prekidači uključeni i stoga pridonose kompozitnom otporu. Budući da su otpornici dip prekidača paralelni, jednadžba izračuna ekvivalentnog otpora navedena je u smislu recipročnih vrijednosti sastavnih otpornika. Za našu konfiguraciju i za slučaj da su svi prekidači uključeni, jednadžba postaje
1/R1 = 1/80000 + 1/40000 + 1/20000 + 1/10000
dajući R1 = 5333,33 volti. Kako bi se uzelo u obzir činjenica da većina postavki ima isključen barem jedan prekidač, stanje prekidača koristi se kao množitelj:
1/R1 = s1*1/80000 + s2*1/40000 + s3*1/20000 + s4*1/10000 (2)
gdje je multiplikator stanja, si, je jednak 1 ako je prekidač uključen i jednak 0 ako je prekidač isključen. R1 sada se može koristiti za izračun omjera otpora potrebnog u jednadžbi 1. Koristeći se kao primjer ponovno u slučaju da su svi prekidači uključeni
Omjer = R2/(R.1+R2) = 10000/(5333.33+10000) =.6522
Posljednji korak u izračunavanju predviđene vrijednosti usporedbe je množenje RATIO -a s 1023 kako bi se oponašao učinak funkcije analogRead. Tada je identifikator za slučaj da su svi prekidači uključeni
usporednik15 = 1023*.6522 = 667
Sada su sve jednadžbe postavljene za izračun identifikatora za 16 mogućih postavki prekidača. Sažeti:
- R1 izračunava se pomoću jednadžbe 2
- R1 i R.2 koriste se za izračun pridruženog otpora RATIO
- Omjer se množi s 1023 kako bi se dobila vrijednost usporedbe
- izborno, predviđeni izlazni napon može se izračunati i kao RATIO*Vin
Skup usporednika ovisi samo o vrijednostima otpornika koji se koriste za razdjelnik napona i jedinstveni su potpis za konfiguraciju. Budući da će izlazni naponi razdjelnika varirati od trčanja do trčanja (i čitati za čitanje), jedinstveno u ovom kontekstu znači da, iako dva skupa identifikatora možda nisu potpuno isti, oni su dovoljno blizu da razlike u usporedbi komponenti spadaju u male predu- navedeni interval. Parametar veličine intervala mora biti izabran dovoljno velik da uzme u obzir očekivane fluktuacije, ali dovoljno mali da se različite postavke prekidača ne preklapaju. Obično 7 radi dobro za interval polu-širine.
Skup usporednika za određenu konfiguraciju može se dobiti na nekoliko metoda - pokrenite demo program i zabilježite vrijednosti za svaku postavku; upotrijebite proračunsku tablicu u sljedećem odjeljku za izračun; kopirajte postojeći skup. Kao što je gore navedeno, svi će se kompleti najvjerojatnije malo razlikovati, ali trebali bi djelovati. Predlažem korištenje autorskog skupa identifikatora metode za postavljanje s više prekidača i proračunsku tablicu iz sljedećeg odjeljka ako se neki od otpornika značajno promijeni ili se doda više otpornika.
Sljedeći demo program prikazuje uporabu usporednika za identifikaciju trenutne postavke preklopne sklopke. U svakom programskom ciklusu izvodi se analogno čitanje radi dobivanja identifikatora za trenutnu konfiguraciju. Taj se identifikator zatim uspoređuje na popisu usporednika sve dok se ne pronađe podudaranje ili dok se popis ne iscrpi. Ako se pronađe podudaranje, izdaje se izlazna poruka radi provjere; ako se ne pronađe, izdaje se upozorenje. Odgoda od 3 sekunde umetnuta je u petlju tako da prozor serijskog izlaza neće biti zatrpan porukama i da ima vremena za resetiranje konfiguracije preklopne sklopke.
//-------------------------------------------------------------------------------------
// Demo program za očitavanje izlaza razdjelnika napona i njegovu upotrebu za identifikaciju // trenutne konfiguracije dip prekidača gledajući izlaznu vrijednost prema nizu // usporednih vrijednosti za svaku moguću postavku. Vrijednosti u nizu za traženje // se mogu dobiti ili iz prethodnog izvođenja za konfiguraciju ili izračunavanjem // na temelju temeljnih jednadžbi. // ------------------------------------------------ -------------------------------------- int usporednik [16] = {0, 111, 203, 276, 339, 393, 434, 478, 510, 542, 567, 590, 614, 632, 651, 667}; // Definiranje varijabli obrade int dipPin = A0; // analogni pin za ulaz razdjelnika napona int dipIn = 0; // drži izlaz napona razdjelnika preveden analogRead int count = 0; // brojač petlji int epsilon = 7; // interval usporedbe poluširina bool dipFound = false; // istina ako je izlaz trenutnog razdjelnika napona pronađen u tablici traženja tablica void setup () {pinMode (dipPin, INPUT); // konfigurirati pin razdjelnika napona kao INPUT Serial.begin (9600); // omogući serijsku komunikaciju} void loop () {delay (3000); // spriječiti prebrzo pomicanje rezultata // Pokretanje parametara pretraživanja count = 0; dipFound = netočno; // Čitanje i dokumentiranje izlaznog napona struje dipIn = analogRead (dipPin); Serial.print ("izlaz razdjelnika"); Serijski.ispis (dipIn); // Pretražujemo usporednu listu za trenutnu vrijednost while ((count <16) && (! DipFound)) {if (abs (dipIn - usporednik [count]) <= epsilon) {// pronašao je dipFound = true; Serial.print ("pronađeno na ulazu"); Serial.print (count); Serial.println ("vrijednost" + niz (usporednik [broj])); pauza; } count ++; } if (! dipFound) {// vrijednost nije u tablici; ne bi se trebalo dogoditi Serial.println ("OOPS! Nije pronađeno; bolje nazovite Ghost Busters"); }}
Korak 3: Tablica za usporedbu
Izračuni za 16 usporednih vrijednosti dati su u gore prikazanoj proračunskoj tablici. Priložena excel datoteka dostupna je za preuzimanje na dnu ovog odjeljka.
Stupci A-D proračunske tablice bilježe vrijednosti otpornika dip prekidača i 16 mogućih postavki prekidača. Imajte na umu da je hardverski DIP prekidač prikazan na dijagramu dizajna fritzinga zapravo numeriran slijeva nadesno umjesto numeriranja zdesna nalijevo prikazanog u proračunskoj tablici. Ovo me pomalo zbunjivalo, ali alternativa ne stavlja konfiguraciju "1" (0, 0, 0, 1) na prvo mjesto popisa. Stupac E koristi formulu 2 prethodnog odjeljka za izračun ekvivalentnog otpora razdjelnika napona R1 za postavku. Stupac F koristi ovaj rezultat za izračun pridruženog otpora RATIO, i na kraju, stupac G množi RATIO s maksimalnom vrijednošću analogRead (1023) kako bi se dobila predviđena vrijednost usporedbe. Zadnja 2 stupca sadrže stvarne vrijednosti iz izvođenja demo programa zajedno s razlikama između predviđenih i stvarnih vrijednosti.
U prethodnom odjeljku spominju se tri metode za dobivanje skupa vrijednosti usporedbe, uključujući proširenje ove proračunske tablice ako se vrijednosti otpornika značajno promijene ili se doda više prekidača. Čini se da male razlike u vrijednostima otpornika ne utječu značajno na konačne rezultate (što je dobro jer specifikacije otpornika daju toleranciju, recimo 5%, a otpornik je rijetko jednak stvarnoj navedenoj vrijednosti).
Korak 4: Pustite melodiju
Kako bi se ilustriralo kako se tehnika s više prekidača može koristiti u aplikaciji, demo program za usporedbu iz odjeljka "Objašnjenje metode" izmijenjen je kako bi se implementirala obrada odabira melodije za program glazbene kutije. Ažurirana konfiguracija aplikacije prikazana je gore. Jedini dodatak hardveru je pasivni piezo zujalica za reprodukciju odabrane melodije. Osnovna promjena u softveru je dodavanje rutine za reprodukciju melodije, nakon što je identificirana, pomoću zujalice i rutine tonova Arduino.
Dostupni isječci melodija sadržani su u datoteci zaglavlja, Tunes.h, zajedno s definicijom potrebnih struktura podrške. Svaka melodija definirana je kao niz nota povezanih struktura koje sadrže frekvenciju note i trajanje. Bilješke se nalaze u zasebnoj datoteci zaglavlja, Pitches.h. Datoteke programa i zaglavlja dostupne su za preuzimanje na kraju ovog odjeljka. Sve tri datoteke trebaju biti smještene u isti direktorij.
Odabir i identifikacija odvijaju se na sljedeći način:
- "Korisnik" postavlja dip prekidače u konfiguraciju povezanu sa željenom melodijom
- svaki ciklus programske petlje identifikator za trenutnu postavku kratkospojne sklopke dobiva se putem analognog čitanja
- Identifikator konfiguracije koraka 2 uspoređuje se sa svakim usporednikom na popisu dostupnih melodija
-
Ako se pronađe podudaranje, poziva se rutina playTune s podacima potrebnim za pristup popisu nota za melodiju
Pomoću tonske funkcije Arduino svaka se nota svira putem zujalice
- Ako se ne pronađe podudaranje, ništa se ne poduzima
- ponoviti 1-5
Postavke DIP sklopke za dostupne melodije prikazane su u donjoj tablici gdje 1 znači da je prekidač uključen, 0 isključen. Podsjetimo da način na koji je dip prekidač orijentiran postavlja prekidač 1 u krajnji lijevi položaj (onaj koji je povezan s 80K otpornikom).
IME | Prekidač 1 | Prekidač 2 | Prekidač 3 | Prekidač 4 |
Danny Boy | 1 | 0 | 0 | 0 |
Mali medvjed | 0 | 1 | 0 | 0 |
Lav spava noćas | 1 | 1 | 0 | 0 |
Nitko ne zna nevolju | 0 | 0 | 1 | 0 |
Divna milost | 0 | 0 | 0 | 1 |
Prazan prostor | 1 | 0 | 0 | 1 |
MockingBird Hill | 1 | 0 | 1 | 1 |
Kvaliteta zvuka iz piezo zvučnika zasigurno nije sjajna, ali je barem prepoznatljiva. Zapravo, ako se tonovi mjere, oni su vrlo blizu točnoj frekvenciji nota. Jedna od zanimljivih tehnika koja se koristi u programu je pohranjivanje podataka o ugađanju u odjeljak flash/programske memorije umjesto u zadani odjeljak memorije podataka pomoću PROGMEM direktive. Odjeljak s podacima sadrži varijable obrade programa i mnogo je manji, oko 512 bajtova za neke od ATtiny mikrokontrolera.
Preporučeni:
ICSP konektor za Arduino Nano bez zalemljenog zaglavlja pina, ali Pogo Pin: 7 koraka
ICSP konektor za Arduino Nano bez zalemljenog zaglavlja pina, ali Pogo Pin: Napravite ICSP konektor za Arduino Nano bez zalemljenog zaglavlja pina na ploči, ali Pogo Pin.Parts3 × 2 Pin utičnica x1 - APitch 2,54 mm Dupont Line žica Ženski priključak za konektore kućišta x6 -BP75-E2 (stožasta glava 1,3 mm) Opružna ispitna sonda Pogo Pin
Kako čitati više analognih vrijednosti pomoću jednog analognog pina: 6 koraka (sa slikama)
Kako čitati više analognih vrijednosti pomoću jednog analognog pina: U ovom vodiču pokazat ću vam kako čitati više analognih vrijednosti koristeći samo jedan pin za analogni ulaz
Birač boja: 4 koraka
Birač boja: faza 1 Korak 1: nabavka komponenti Komponente: Esp. 32 (mikrokontroler) Prsten bez piksela 12 & 9 (RGB svjetlo u prstenu) Senzor boje 3.7v baterija 3.7v do 5v pretvarač Izazovi: Dobivanje točnih mjerenja za komponente Korak 2: Materijali za kodiranje: A
VISUINO kockice za kotače pomoću OLED modula s 4 pina od 0,96 inča: 7 koraka
VISUINO Kockanje pomoću OLED modula s 4 pina od 0,96 inča: U ovom ćemo vodiču koristiti OLED Lcd i Visuino za izradu kockica kada pritisnemo gumb na našoj ploči. Pogledajte demonstracijski video
Korištenje 4 pina ESP8266-01: 3 koraka
Korištenje 4 pina ESP8266-01: Napomena: Ovaj projekt je u osnovi proširenje ranijeg uputstva koje je koristilo samo 2 pina. Ograničeni broj (4) GPIO pinova na ESP8266-01 može se činiti kao prepreka za bilo koji ozbiljna primjena. Ipak, ako se igle koriste na pametan način, to je