Turinys:
- 1 žingsnis: grandinė
- 2 žingsnis: įrodymas - „Excel“
- 3 žingsnis: „Arduino“programavimas
- 4 žingsnis: TinkerCAD grandinės
- 5 žingsnis: „Taip ilgai ir ačiū už visas žuvis“. (1 nuoroda)
- 6 žingsnis: nuorodos
Video: Naudokite 1 analoginę įvestį 6 „Arduino“mygtukams: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Dažnai susimąsčiau, kaip galėčiau gauti daugiau skaitmeninių įėjimų savo „Arduino“. Neseniai man pasirodė, kad turėčiau turėti galimybę naudoti vieną iš analoginių įėjimų, kad įvestų kelis skaitmeninius įėjimus. Greitai paieškojau ir radau, kur žmonės galėjo tai padaryti, tačiau tai leido vienu metu paspausti tik vieną mygtuką. Noriu turėti galimybę bet kokiu mygtukų deriniu paspausti SIMULIU. Taigi, padedamas TINKERCAD CIRCUITS, nusprendžiau tai padaryti.
Kodėl norėčiau vienu metu paspausti mygtukus? Kaip parodyta „TinkerCad Circuits“konstrukcijoje, jis gali būti naudojamas DIP jungiklio įvestims pasirinkti įvairius programos režimus.
Mano sukurta grandinė naudoja 5 V šaltinį, kurį galima įsigyti iš „Arduino“, ir naudoja 7 rezistorius ir 6 mygtukus ar jungiklius.
1 žingsnis: grandinė
„Arduino“turi analoginius įėjimus, kurie priima nuo 0V iki 5V įvestį. Ši įvestis turi 10 bitų skiriamąją gebą, o tai reiškia, kad signalas yra padalintas į 2^10 segmentus arba 1024 skaičius. Remiantis tuo, daugiausiai, ką galėtume įvesti į analoginį įėjimą, tuo pačiu metu leidžiant paspausti, būtų 10 mygtukų iki 1 analoginio įėjimo. Tačiau tai nėra tobulas pasaulis. Yra laidininkų atsparumas, triukšmas iš išorinių šaltinių ir netobula galia. Taigi, norėdamas suteikti sau daug lankstumo, planavau jį sukurti 6 mygtukams. Tam iš dalies įtakos turėjo tai, kad „TinkerCAD Circuits“turėjo 6 jungiklių DIP jungiklio objektą, kuris palengvintų testavimą.
Pirmasis mano dizaino žingsnis buvo įsitikinti, kad kiekvienas mygtukas, paspaudus atskirai, suteiks unikalią įtampą. Tai atmetė galimybę, kad visi rezistoriai būtų tos pačios vertės. Kitas žingsnis buvo tas, kad pasipriešinimo vertės, pridėtos lygiagrečiai, negalėjo turėti tokio paties pasipriešinimo kaip bet kuri viena rezistoriaus vertė. Kai rezistoriai prijungti lygiagrečiai, gautą varžą galima apskaičiuoti pagal Rx = 1/[(1/R1)+(1/R2)]. Taigi, jei R1 = 2000 ir R2 = 1000, Rx = 667. Spėliojau, kad padvigubinus kiekvieno rezistoriaus dydį, nematysiu tokio pat pasipriešinimo nė vienam deriniui.
Taigi, mano grandinė iki šiol turėjo turėti 6 jungiklius, kurių kiekvienas turi savo rezistorių. Tačiau norint užbaigti šią grandinę, reikia dar vieno rezistoriaus.
Paskutinis rezistorius turi 3 tikslus. Pirma, jis veikia kaip ištraukiamas rezistorius. Be rezistoriaus, kai nepaspaudžiami jokie mygtukai, grandinė yra neišsami. Tai leistų įtampai „Arduino“analoginėje įvestyje pakilti iki bet kokio įtampos potencialo. Ištraukiamas rezistorius iš esmės sumažina įtampą iki 0 V. Antrasis tikslas yra apriboti šios grandinės srovę. Omo dėsnis teigia, kad V = IR arba įtampa = srovė, padauginta iš pasipriešinimo. Esant tam tikram įtampos šaltiniui, didesnis rezistorius reiškia, kad srovė bus mažesnė. Taigi, jei 500 voltų rezistoriui būtų taikomas 5 V signalas, didžiausia srovė, kurią galėtume matyti, būtų 0,01A arba 10mA. Trečiasis tikslas yra užtikrinti signalo įtampą. Bendra srovė, tekanti per paskutinį rezistorių, būtų: i = 5V/R (1/R5)+(1/R6)]}. Tačiau kiekvienam rezistoriui, paspaudusiam atitinkamą mygtuką, įtraukite tik 1/Rx. Iš visos srovės įtampa, tiekiama į analoginę įvestį, būtų i*Rlast arba i*500.
2 žingsnis: įrodymas - „Excel“
Greičiausias ir lengviausias būdas įrodyti, kad su šia grandine gausiu unikalių varžų, taigi ir unikalių įtampų, buvo „Excel“galimybių naudojimas.
Aš sukūriau visus galimus jungiklių įvesties derinius ir juos nuosekliai sutvarkiau pagal dvejetainius modelius. „1“reikšmė rodo, kad jungiklis yra įjungtas, tuščia - išjungta. Skaičiuoklės viršuje įvedu kiekvieno jungiklio ir ištraukiamojo rezistoriaus varžos vertes. Tada aš apskaičiavau ekvivalentinį pasipriešinimą kiekvienam deriniui, išskyrus tuos atvejus, kai visi rezistoriai yra išjungti, nes šie rezistoriai neturės įtakos be maitinimo šaltinio. Kad būtų lengviau atlikti skaičiavimus, kad galėčiau nukopijuoti ir įklijuoti kiekvieną derinį, į skaičiavimą įtraukiau visas kombinacijas, padaugindamas kiekvieną jungiklio vertę (0 arba 1) iš apverstos varžos vertės. Tai padarius, pasipriešinimas nebuvo pašalintas iš skaičiavimo, jei jungiklis buvo išjungtas. Gautą lygtį galima pamatyti skaičiuoklės paveikslėlyje, bet Req = Rx + 1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6). Naudodami Itotal = 5V / Req, mes nustatome bendrą srovę per grandinę. Tai ta pati srovė, kuri eina per ištraukiamąjį rezistorių ir suteikia mums įtampą mūsų analoginei įėjimui. Tai apskaičiuojama kaip Vin = Itotal x Rx. Nagrinėdami ir Req, ir Vin duomenis, galime pastebėti, kad iš tiesų turime unikalių vertybių.
Šiuo metu atrodo, kad mūsų grandinė veiks. Dabar išsiaiškinkite, kaip užprogramuoti „Arduino“.
3 žingsnis: „Arduino“programavimas
Kai pradėjau galvoti apie tai, kaip programuoti „Arduino“, iš pradžių planavau nustatyti atskirus įtampos diapazonus, kad nustatyčiau, ar jungiklis yra įjungtas, ar išjungtas. Tačiau vieną naktį gulint lovoje man pasirodė, kad turėčiau rasti lygtį tai padaryti. Kaip? EXCEL. „Excel“turi galimybę apskaičiuoti lygtis, kad geriausiai atitiktų diagramos duomenis. Norėdami tai padaryti, aš noriu jungiklių (dvejetainių) sveikojo skaičiaus lygties ir tą vertę atitinkančios įtampos įvesties. „Excel“darbaknygėje sveiko skaičiaus vertę įdėjau į kairę skaičiuoklės pusę. Dabar nustatykite mano lygtį.
Čia yra trumpa pamoka, kaip nustatyti „Excel“eilutės lygtį.
1) Pasirinkite langelį, kuriame nėra jokių duomenų. Jei pasirinkote langelį, kuriame yra duomenų, „Excel“bandys atspėti, ką norite pakeisti. Dėl to daug sunkiau nustatyti tendenciją, nes „Excel“retai prognozuoja teisingai.
2) Pasirinkite skirtuką „Įterpti“ir pasirinkite „Scatter“diagramą.
3) Dešiniuoju pelės mygtuku spustelėkite diagramos laukelį ir spustelėkite „Pasirinkti duomenis…“. Pasirodys langas „Pasirinkti duomenų šaltinį“. Jei norite toliau pasirinkti duomenis, pasirinkite mygtuką Pridėti.
4) Suteikite serijos pavadinimą (neprivaloma). Pasirinkite X ašies diapazoną spustelėdami rodyklę aukštyn ir tada pasirinkę įtampos duomenis. Pasirinkite Y ašies diapazoną spustelėdami rodyklę aukštyn ir tada pasirinkdami sveikųjų skaičių duomenis (0-63).
5) Dešiniuoju pelės mygtuku spustelėkite duomenų taškus ir pasirinkite „Pridėti tendencijos liniją …“Lange „Formatuoti tendencijų liniją“pasirinkite daugiakampį mygtuką. Žvelgdami į tendenciją, matome, kad 2 užsakymas ne visai atitinka. Aš pasirinkau 3 užsakymą ir maniau, kad tai daug tiksliau. Pažymėkite žymės langelį „Rodyti lygtį diagramoje“. Galutinė lygtis dabar rodoma diagramoje.
6) Atlikta.
GERAI. Grįžkime prie „Arduino“programos. Dabar, kai turime lygtį, „Arduino“programavimas yra lengvas. Sveikasis skaičius, reiškiantis jungiklio pozicijas, apskaičiuojamas 1 kodo eilutėje. Naudodamiesi „bitread“funkcija, galime paimti kiekvieno atskiro bitų vertę ir taip žinoti kiekvieno mygtuko būseną. (ŽR. NUOTRAUKAS)
4 žingsnis: TinkerCAD grandinės
Jei nesate patikrinę „TinkerCAD Circuits“, padarykite tai dabar. LAUKTI!!!! Baikite skaityti mano „Instructable“ir patikrinkite. „TinkerCAD Circuits“labai palengvina „Arduino“grandinių testavimą. Jį sudaro keli elektros objektai ir „Arduinos“, netgi leidžiantys užprogramuoti „Arduino“testavimui.
Norėdami išbandyti savo grandinę, naudodamas DIP jungiklių paketą nustatiau 6 jungiklius ir pririšau juos prie rezistorių. Norėdami įrodyti, kad įtampos vertė mano „Excel“skaičiuoklėje buvo teisinga, įvestyje į „Arduino“parodžiau voltmetrą. Visa tai veikė taip, kaip tikėtasi.
Norėdami įrodyti, kad „Arduino“programavimas veikė, išvedžiau jungiklių būsenas į šviesos diodus, naudodamas „Arduino“skaitmeninius išėjimus.
Tada perjungiau kiekvieną jungiklį kiekvienam įmanomam deriniui ir didžiuojuosi galėdamas pasakyti „IT VEIKIA“!!!
5 žingsnis: „Taip ilgai ir ačiū už visas žuvis“. (1 nuoroda)
Aš dar neturėjau to išbandyti naudodamas tikrą įrangą, nes šiuo metu keliauju dėl darbo. Bet, įrodęs tai naudodami „TinkerCAD Circuits“, tikiu, kad tai veiks. Iššūkis yra tas, kad mano nurodytos rezistorių vertės nėra visos standartinės rezistorių vertės. Norėdami tai išvengti, planuoju naudoti potenciometrus ir rezistorių derinius, kad gautumėte man reikalingas vertes.
Ačiū, kad perskaitėte mano instrukciją. Tikiuosi, kad tai padės jums įgyvendinti jūsų projektus.
Palikite komentarus, jei bandėte įveikti tą pačią kliūtį ir kaip ją išsprendėte. Norėčiau sužinoti daugiau būdų tai padaryti.
6 žingsnis: nuorodos
Ar nemanėte, kad pateiksiu citatą nenurodydamas šaltinio?
ref. 1: Adamsas, Douglasas. Taip ilgai ir ačiū už visas žuvis. („Trilogijos“4 -oji „Autostopininko vadovas galaktikai“knyga)
Rekomenduojamas:
Išbandykite „Bare Arduino“su žaidimų programine įranga, naudojant talpinę įvestį ir LED: 4 žingsniai
Išbandykite „Bare Arduino“su žaidimų programine įranga, naudojant talpinę įvestį ir LED: „Push-It“; Interaktyvus žaidimas naudojant pliką „Arduino“plokštę, nereikia jokių išorinių dalių ar laidų (naudojamas talpinis „prisilietimo“įvestis). Aukščiau parodyta, kad jis veikia dviejose skirtingose lentose. „Push-It“turi du tikslus. Norėdami greitai pademonstruoti/v
4 mygtukų žaidimai naudojant vieną analoginę įvestį: 6 žingsniai (su paveikslėliais)
4 mygtukiniai žaidimai naudojant vieną analoginę įvestį: šioje instrukcijoje daugiausia dėmesio skiriama vienos analoginės įvesties linijos naudojimui keliems mygtukams, kuriuos galima aptikti nepriklausomai vienas nuo kito. Ir norint pabrėžti šių mygtukų naudojimą, yra programinė įranga, skirta žaisti keturis skirtingus 4 mygtukų žaidimus. Visi žaidimai (8 iš t
556 Laikas suteikia laikrodžio įvestį 2 dešimtmečių skaitikliams, kurie parodys 20 šviesos diodų: 6 žingsniai
„556 Time“suteikia laikrodžio įvestį iki 2 dešimtmečių skaitiklių, kurie valdys 20 šviesos diodų: ši instrukcija parodys, kaip 556 laikmatis pateiks laikrodžio įvestis į 2 dešimtmečių skaitiklius. Dešimties skaitikliai valdys 20 šviesos diodų. Šviesos diodai mirksės 10 kartų
Visuino Kaip naudoti mygtuką kaip įvestį valdyti tokius dalykus kaip LED: 6 žingsniai
Visuino Kaip naudoti mygtuką kaip įvestį valdyti tokius dalykus kaip LED: Šioje pamokoje mes sužinosime, kaip įjungti ir išjungti šviesos diodą naudojant paprastą mygtuką ir Visuino. Žiūrėkite demonstracinį vaizdo įrašą
ESP32 talpinis jutiklinis įvestis naudojant „metalinius skylių kištukus“mygtukams: 5 žingsniai (su paveikslėliais)
ESP32 talpinis jutiklinis įvestis naudojant „metalinius skylių kištukus“mygtukams: Kai baigiau rengti būsimo ESP32 „WiFi Kit 32“projekto, kuriam reikia trijų mygtukų įvesties, dizaino sprendimus, viena pastebima problema buvo ta, kad „WiFi Kit 32“neturi vieno mechaninio mygtuko, dar tik trys mechaniniai mygtukai, f