INHOUDSOPGAWE:

Gebruik 1 analoog invoer vir 6 knoppies vir Arduino: 6 stappe
Gebruik 1 analoog invoer vir 6 knoppies vir Arduino: 6 stappe

Video: Gebruik 1 analoog invoer vir 6 knoppies vir Arduino: 6 stappe

Video: Gebruik 1 analoog invoer vir 6 knoppies vir Arduino: 6 stappe
Video: How to use up to 10 push button switch with 1 Arduino input pin ANPB-V1 2024, Julie
Anonim
Gebruik 1 analoog invoer vir 6 knoppies vir Arduino
Gebruik 1 analoog invoer vir 6 knoppies vir Arduino

Ek het gereeld gewonder hoe ek meer digitale insette vir my Arduino kan kry. Dit het onlangs by my opgekom dat ek een van die analoog insette moet kan gebruik om verskeie digitale insette in te voer. Ek het vinnig gesoek en gevind waar mense dit kon doen, maar dat slegs een knoppie op 'n slag gedruk kon word. Ek wil 'n kombinasie van knoppies hê wat gelyktydig ingedruk moet word. Met die hulp van TINKERCAD CIRCUITS het ek dus besluit om dit te laat gebeur.

Waarom wil ek gelyktydige knoppies druk? Soos geïllustreer in die TinkerCad Circuits -ontwerp, kan dit gebruik word vir DIP -skakelaarinsette vir die keuse van verskillende modusse binne die program.

Die stroombaan waarmee ek vorendag gekom het, gebruik die 5V -bron wat by die Arduino beskikbaar is, en gebruik 7 weerstande en 6 knoppies of skakelaars.

Stap 1: Die stroombaan

Die stroombaan
Die stroombaan

Arduino's het analoog insette wat 'n 0V tot 5V ingang aanvaar. Hierdie invoer het 'n resolusie van 10 bis, wat beteken dat die sein in 2^10 segmente of 1024 tellings ingedeel word. Op grond hiervan is die meeste wat ons ooit in 'n analoog invoer kon invoer, terwyl gelyktydige druk moontlik was, 10 knoppies tot 1 analoog ingang. Maar dit is nie 'n volmaakte wêreld nie. Daar is weerstand in geleiers, geraas van buite bronne en onvolmaakte krag. Om myself baie buigsaamheid te gee, was ek van plan om dit vir 6 knoppies te ontwerp. Dit is deels beïnvloed deur die feit dat TinkerCAD Circuits 'n 6-Switch DIP Switch-voorwerp gehad het, wat dit makliker sou maak om te toets.

Die eerste stap in my ontwerp was om seker te maak dat elke knoppie, as dit individueel ingedruk word, 'n unieke spanning sal verskaf. Dit het uitgesluit dat al die weerstande dieselfde waarde het. Die volgende stap was dat die weerstandswaardes, as dit parallel bygevoeg word, nie dieselfde weerstand as enige enkele weerstandswaarde kan hê nie. As resistors parallel gekoppel is, kan die resulterende weerstand bereken word met Rx = 1/[(1/R1)+(1/R2)]. Dus, as R1 = 2000 en R2 = 1000, Rx = 667. Ek het bespiegel dat deur die grootte van elke weerstand te verdubbel, ek nie dieselfde weerstand sou sien vir enige van die kombinasies nie.

Dus, my kring tot op hierdie punt was om 6 skakelaars te hê, elk met sy eie weerstand. Maar daar is nog 'n weerstand nodig om hierdie stroombaan te voltooi.

Die laaste weerstand het 3 doeleindes. Eerstens dien dit as 'n aftrekweerstand. Sonder die weerstand is die stroombaan onvolledig as daar geen knoppies ingedruk word nie. Dit laat die spanning by die Arduino se analoog ingang na enige spanningspotensiaal dryf. 'N Trekweerstand trek die spanning in wese tot 0 V. Die tweede doel is om die stroom van hierdie stroombaan te beperk. Ohm se wet bepaal dat V = IR, of spanning = stroom vermenigvuldig met weerstand. Met 'n gegewe spanningsbron, hoe groter die weerstand, beteken dat die stroom kleiner sal wees. Dus, as 'n 5V -sein op 'n weerstand van 500ohm toegedien word, sou die grootste stroom wat ons kon sien, 0,01A of 10mA wees. Die derde doel is om die seinspanning te verskaf. Die totale stroom wat deur die laaste weerstand vloei, is: i = 5V/Rtotal, waar Rtotal = Rlast+{1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R5)+(1/R6)]}. Sluit egter slegs 1/Rx in vir elke weerstand met die ooreenstemmende knoppie ingedruk. Uit die totale stroom sal die spanning wat aan die analoog ingang verskaf word, i*Rlast of i*500 wees.

Stap 2: Bewys - Excel

Bewys - Excel
Bewys - Excel

Die vinnigste en maklikste manier om te bewys dat ek unieke weerstande en dus unieke spannings met hierdie stroombaan sou kry, was om die funksies van Excel te gebruik.

Ek het al die moontlike kombinasies van skakelaarinsette opgestel en hierdie opeenvolgende binêre patrone georganiseer. 'N Waarde van "1" dui aan dat die skakelaar aan is, leeg dui aan dat dit af is. Bo-aan die sigblad plaas ek die weerstandswaardes vir elke skakelaar en vir die aftrekweerstand. Ek het toe die ekwivalente weerstand vir elk van die kombinasies bereken, behalwe wanneer alle weerstande af is, aangesien hierdie weerstande geen invloed het sonder dat 'n kragbron dit voorsien. Om my berekeninge makliker te maak sodat ek by elke kombinasie kon kopieer en plak, het ek alle kombinasies by die berekening ingesluit deur elke skakelwaarde (0 of 1) te vermenigvuldig met die omgekeerde weerstandswaarde daarvan. As u dit doen, word die weerstand van die berekening uitgeskakel as die skakelaar af was. Die gevolglike vergelyking kan in die beeld van die sigblad gesien word, maar Req = Rx + 1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6). Met behulp van Itotal = 5V / Req, bepaal ons die totale stroom deur die stroombaan. Dit is dieselfde stroom wat deur die aftrekweerstand gaan en ons die spanning na ons analoog ingang verskaf. Dit word bereken as Vin = Itotal x Rx. As ons beide die Req -data en die Vin -data ondersoek, kan ons sien dat ons inderdaad unieke waardes het.

Op hierdie stadium blyk dit dat ons stroombaan sal werk. Nou om uit te vind hoe om die Arduino te programmeer.

Stap 3: Arduino -programmering

Arduino -programmering
Arduino -programmering
Arduino -programmering
Arduino -programmering
Arduino -programmering
Arduino -programmering

Toe ek begin dink oor hoe om die Arduino te programmeer, was ek aanvanklik van plan om individuele spanningsbereik op te stel om te bepaal of 'n skakelaar aan of af is. Maar terwyl ek een aand in die bed lê, het ek by my opgekom dat ek 'n vergelyking moet kan vind om dit te doen. Hoe? UITSTEKEND. Excel het die vermoë om vergelykings te bereken om die beste pas data in 'n grafiek. Om dit te kan doen, wil ek 'n vergelyking hê van die heelgetalwaarde van die skakelaars (binêre) teenoor die spanningsingang wat ooreenstem met die waarde. In my Excel -werkboek plaas ek die heelgetalwaarde aan die linkerkant van die sigblad. Nou om my vergelyking te bepaal.

Hier is 'n vinnige handleiding oor hoe om die vergelyking van 'n lyn in Excel te bepaal.

1) Kies 'n sel wat geen data bevat nie. As u 'n sel gekies het met data, sal Excel probeer raai wat u wil neig. Dit maak dit baie moeiliker om 'n neiging op te stel, omdat Excel selde korrek voorspel.

2) Kies die oortjie "Insert" en kies 'n "Scatter" -kaart.

3) Regskliek in die grafiek en klik op "Kies data …". Dit verskyn in die venster "Kies databron". Kies die knoppie Voeg by om die data te kies.

4) Gee dit 'n reeksnaam (opsioneel). Kies die reeks vir die X-as deur op die pyltjie omhoog te klik en dan die spanningsdata te kies. Kies die reeks vir die Y-as deur op die pyltjie omhoog te klik en dan die heelgetaldata (0-63) te kies.

5) Klik met die rechtermuisknop op die datapunte en kies "Voeg neiginglyn by …" Kies in die venster "Opmaak neiginglyn" die polinoom -knoppie. As ons na die neiging kyk, sien ons dat die orde van 2 nie heeltemal ooreenstem nie. Ek het 'n Orde van 3 gekies en dit was baie meer akkuraat. Merk die boks vir "Wys vergelyking op grafiek". Die finale vergelyking word nou op die grafiek vertoon.

6) Klaar.

OK. Terug na die Arduino -program. Noudat ons die vergelyking het, is die programmering van die Arduino maklik. Die heelgetal wat die skakelaarposisies voorstel, word bereken in 1 reël kode. Deur die 'bitread' -funksie te gebruik, kan ons die waarde van elke individuele bit gryp en sodoende die toestand van elke knoppie ken. (SIEN FOTO'S)

Stap 4: TinkerCAD -stroombane

TinkerCAD -stroombane
TinkerCAD -stroombane

As u nog nie TinkerCAD Circuits besoek het nie, doen dit dan nou. WAG !!!! Lees my Instructable klaar, en kyk daarna. TinkerCAD Circuits maak die toets van Arduino -stroombane baie maklik. Dit bevat verskeie elektriese voorwerpe en Arduinos, sodat u selfs die Arduino kan programmeer vir toetsing.

Om my stroombaan te toets, het ek 6 skakelaars opgestel met behulp van 'n DIP -skakelaarpakket en dit aan die weerstande vasgemaak. Om te bewys dat die spanningswaarde in my Excel -werkblad korrek was, het ek 'n voltmeter by die ingang na die Arduino vertoon. Dit alles werk soos verwag.

Om te bewys dat die Arduino -programmering werk, stuur ek die toestande van die skakelaars na LED's met behulp van die digitale uitsette van die Arduino.

Ek skakel toe elke skakelaar vir elke moontlike kombinasie en ek is trots om te sê "DIT WERK" !!!

Stap 5: "So lank en dankie vir al die vis." (ref.1)

Ek het dit nog nie probeer met regte toerusting nie, want ek reis tans vir werk. Maar nadat ek dit met TinkerCAD Circuits bewys het, glo ek dat dit sal werk. Die uitdaging is dat die waardes van weerstande wat ek gespesifiseer het nie alle standaardwaardes vir weerstande is nie. Om dit te vermy, is ek van plan om potensiometers en kombinasies van weerstande te gebruik om die waardes te kry wat ek nodig het.

Dankie dat u my instruksies gelees het. Ek hoop dat dit u kan help met u projekte.

Gee kommentaar as u dieselfde hindernis probeer aanpak het en hoe u dit opgelos het. Ek wil graag meer maniere leer om dit te doen.

Stap 6: Verwysings

U het nie gedink ek sou 'n kwotasie verskaf sonder om na die bron daarvan te verwys nie?

ref. 1: Adams, Douglas. So lank, en dankie vir al die vis. (Die vierde boek van die Hitchhiker's Guide to the Galaxy "trilogie")

Aanbeveel: