Talaan ng mga Nilalaman:

Gumamit ng 1 Analog Input para sa 6 na Mga Pindutan para sa Arduino: 6 Mga Hakbang
Gumamit ng 1 Analog Input para sa 6 na Mga Pindutan para sa Arduino: 6 Mga Hakbang

Video: Gumamit ng 1 Analog Input para sa 6 na Mga Pindutan para sa Arduino: 6 Mga Hakbang

Video: Gumamit ng 1 Analog Input para sa 6 na Mga Pindutan para sa Arduino: 6 Mga Hakbang
Video: How to use up to 10 push button switch with 1 Arduino input pin ANPB-V1 2024, Nobyembre
Anonim
Gumamit ng 1 Analog Input para sa 6 na Mga Pindutan para sa Arduino
Gumamit ng 1 Analog Input para sa 6 na Mga Pindutan para sa Arduino

Madalas naisip ko kung paano ako makakakuha ng mas maraming mga Digital Input para sa aking Arduino. Kamakailan lamang naisip ko na dapat kong magamit ang isa sa Mga Analog Input para sa pagdala ng maraming mga digital input. Gumawa ako ng mabilis na paghahanap at nahanap kung saan nagawa ito ng mga tao, ngunit pinapayagan lamang nito ang isang solong pindutan na mapindot nang paisa-isa. Nais kong magkaroon ng anumang kumbinasyon ng mga pindutan upang mai-press nang SIMULTANEOUSLY. Kaya, sa tulong ng TINKERCAD CIRCUITS, nagtakda ako upang mangyari ito.

Bakit ko gugustuhin ang mga sabay-sabay na pagpindot sa pindutan? Tulad ng nakalarawan sa disenyo ng TinkerCad Circuits, maaari itong magamit para sa mga input ng switch ng DIP para sa pagpili ng iba't ibang mga mode sa loob ng programa.

Ang circuit na naisip ko ay gumagamit ng magagamit na mapagkukunan ng 5V mula sa Arduino at gumagamit ng 7 resistors at 6 na mga pindutan o switch.

Hakbang 1: Ang Circuit

Ang Circuit
Ang Circuit

Ang Arduino ay mayroong mga analog input na tumatanggap ng 0V hanggang 5V input. Ang input na ito ay may isang 10-bit na resolusyon, na nangangahulugang ang signal ay nasira sa 2 ^ 10 na mga segment, o 1024 na bilang. Batay dito, ang karamihan na maaari naming posibleng mai-input sa isang analog input habang pinapayagan para sa sabay-sabay na pagpindot ay magiging 10 mga pindutan sa 1 analog na pag-input. Ngunit, hindi ito isang perpektong mundo. Mayroong paglaban sa mga conductor, ingay mula sa labas ng mga mapagkukunan, at di-sakdal na kapangyarihan. Kaya, upang bigyan ang aking sarili ng maraming kakayahang umangkop, binalak ko itong idisenyo para sa 6 na mga pindutan. Ito ay, sa bahagi, naiimpluwensyahan ng katotohanan na ang TinkerCAD Circuits ay mayroong isang 6-Switch DIP Switch na bagay, na magpapadali sa pagsubok.

Ang unang hakbang sa aking disenyo ay tiyakin na ang bawat pindutan, kapag naisa-isang pinindot, ay magbibigay ng isang natatanging boltahe. Pinawalang-bisa nito ang lahat ng mga resistors na pareho ang halaga. Ang susunod na hakbang ay ang mga halaga ng paglaban, kapag idinagdag sa kahanay, ay hindi maaaring magkaroon ng parehong pagtutol sa anumang solong halaga ng risistor. Kapag ang mga resistors ay konektado sa kahanay, ang nagreresultang paglaban ay maaaring makalkula ng Rx = 1 / [(1 / R1) + (1 / R2)]. Kaya, kung R1 = 2000 at R2 = 1000, Rx = 667. Pinagpalagay ko na sa pamamagitan ng pagdodoble ng laki ng bawat risistor, hindi ko makikita ang parehong paglaban para sa alinman sa mga kumbinasyon.

Kaya, ang aking circuit sa puntong ito ay upang magkaroon ng 6 na switch, bawat isa ay may sariling resistor. Ngunit, may isa pang risistor na kinakailangan upang makumpleto ang circuit na ito.

Ang huling risistor ay may 3 mga layunin. Una, kumikilos ito bilang isang Pull-Down risistor. Nang walang risistor, kapag walang mga pindutan na pinindot ang circuit ay hindi kumpleto. Papayagan nito ang boltahe sa Analog Input ng Arduino na lumutang sa anumang potensyal na boltahe. Ang isang Pull-Down resistor ay mahalagang Hugot ang Down boltahe sa 0 V. Ang Pangalawang layunin ay upang limitahan ang kasalukuyang ng circuit na ito. Nakasaad sa batas ni Ohm na V = IR, o Boltahe = Kasalukuyang pinarami ng Paglaban. Sa isang naibigay na mapagkukunan ng boltahe, mas malaki ang risistor ay nangangahulugan na ang kasalukuyang ay magiging mas maliit. Kaya, kung ang isang senyas na 5V ay inilapat sa isang 500ohm risistor, ang pinakamalaking kasalukuyang nakikita nating 0.01A, o 10mA. Ang Pangatlong layunin ay upang magbigay ng boltahe ng signal. Ang kabuuang kasalukuyang dumadaloy sa huling risistor ay ang: i = 5V / Rtotal, kung saan Rtotal = Rlast + {1 / [(1 / R1) + (1 / R2) + (1 / R3) + (1 / R4) + (1 / R5) + (1 / R6)]}. Gayunpaman, isama lamang ang 1 / Rx para sa bawat Resistor na may pinindot na kaukulang pindutan. Mula sa kabuuang kasalukuyang, ang Boltahe na ibinigay sa Analog Input ay magiging i * Rlast, o i * 500.

Hakbang 2: Patunay - Excel

Katunayan - Excel
Katunayan - Excel

Ang pinakamabilis at pinakamadaling paraan upang patunayan na makakakuha ako ng mga natatanging resistensya at sa gayon natatanging voltages sa circuit na ito ay ang paggamit ng mga kakayahan ng Excel.

Ini-set up ko ang lahat ng mga posibleng kumbinasyon ng mga switch ng input at inayos ang sunud-sunod na pagsunod sa mga binary pattern. Ang isang halaga ng "1" ay nagpapahiwatig na ang switch ay nakabukas, blangko ay nagpapahiwatig na ito ay naka-off. Sa tuktok ng spreadsheet, inilagay ko ang mga halaga ng paglaban para sa bawat switch at para sa pull-down na risistor. Pagkatapos ay kinakalkula ko ang katumbas na paglaban para sa bawat isa sa mga kumbinasyon, maliban sa kung ang lahat ng mga resistors ay naka-off dahil ang mga resistor na ito ay hindi makakaapekto nang walang mapagkukunang mapagkukunan na nagbibigay dito. Upang gawing madali ang aking mga kalkulasyon upang maaari kong kopyahin at i-paste sa bawat kumbinasyon, isinama ko ang lahat ng mga kumbinasyon sa pagkalkula sa pamamagitan ng pagpaparami ng bawat halaga ng paglipat (0 o 1) ng baligtad na halaga ng paglaban. Ang paggawa nito ay tinanggal ang paglaban nito mula sa pagkalkula kung ang switch ay naka-off. Ang nagreresultang equation ay makikita sa imahe ng spreadsheet, ngunit Req = Rx + 1 / (Sw1 / R1 + Sw2 / R2 + Sw3 / R3 + Sw4 / R4 + Sw5 / R5 + Sw6 / R6). Gamit ang Itotal = 5V / Req, natutukoy namin ang kabuuang kasalukuyang sa pamamagitan ng circuit. Ito ang parehong kasalukuyang dumadaan sa Pull-down risistor, at nagbibigay sa amin ng Boltahe sa aming Analog Input. Kinakalkula ito bilang Vin = Itotal x Rx. Sinusuri ang parehong data ng Req at ang data ng Vin, makikita natin na mayroon talaga kaming mga natatanging halaga.

Sa puntong ito, lilitaw na gagana ang aming circuit. Ngayon upang malaman kung paano i-program ang Arduino.

Hakbang 3: Arduino Programming

Programming ng Arduino
Programming ng Arduino
Programming ng Arduino
Programming ng Arduino
Programming ng Arduino
Programming ng Arduino

Nang magsimula akong mag-isip tungkol sa kung paano i-program ang Arduino, una kong binalak sa pag-set up ng mga indibidwal na saklaw ng boltahe para sa pagtukoy kung ang isang switch ay naka-on o naka-off. Ngunit, habang nakahiga sa kama isang gabi, naisip ko na dapat akong makahanap ng isang equation upang magawa ito. Paano? EXCEL. Ang Excel ay may kakayahang kalkulahin ang mga equation upang pinakamahusay na magkasya ang data sa isang tsart. Upang magawa ito, gugustuhin ko ang isang equation ng Integer Value ng mga switch (binary) laban sa input ng boltahe na naaayon sa halagang iyon. Sa aking Excel Workbook, inilagay ko ang Halaga ng Integer sa kaliwang bahagi ng spreadsheet. Ngayon upang matukoy ang aking equation.

Narito ang isang mabilis na tutorial sa kung paano matukoy ang equation ng isang linya sa loob ng Excel.

1) Pumili ng isang cell na hindi naglalaman ng anumang data. Kung mayroon kang napiling isang cell na may data, susubukan ng Excel na hulaan kung ano ito gusto mong i-trend. Ginagawa nitong mas mahirap na mag-set up ng isang trend, dahil bihirang mahulaan nang tama ang Excel.

2) Piliin ang tab na "Ipasok" at Pumili ng isang tsart na "Ikalat".

3) Pag-right click sa tsart box at mag-click sa "Piliin ang Data …". Lalabas ito sa window na "Piliin ang Pinagmulan ng Data". Piliin ang button na Magdagdag upang magpatuloy upang piliin ang data.

4) Bigyan ito ng Pangalan ng Serye (Opsyonal). Piliin ang Saklaw para sa X-Axis sa pamamagitan ng pag-click sa pataas na arrow at pagkatapos ay piliin ang data ng Boltahe. Piliin ang Saklaw para sa Y-Axis sa pamamagitan ng pag-click sa pataas na arrow at pagkatapos ay piliin ang Integer Data (0-63).

5) Pag-right click sa mga puntos ng data at Piliin ang "Magdagdag ng Trendline …" Sa window na "Format Trendline", piliin ang pindutang Polynomial. Sa pagtingin sa trend, nakikita namin na ang Order ng 2 ay hindi masyadong tugma. Pumili ako ng isang Order ng 3 at naramdaman na ito ay mas tumpak. Piliin ang checkbox para sa "Display Equation sa tsart". Ang huling equation ngayon ay ipinapakita sa tsart.

6) Tapos Na.

OK lang Bumalik sa programa ng Arduino. Ngayon na mayroon kaming equation, madali ang pag-program ng Arduino. Ang Integer na kumakatawan sa mga posisyon ng paglipat ay kinakalkula sa 1 linya ng code. Sa pamamagitan ng paggamit ng "bitread" na pagpapaandar, maaari nating kunin ang halaga ng bawat indibidwal na bit at sa gayon ay malaman ang estado ng bawat pindutan. (TINGNAN ANG LARAWAN)

Hakbang 4: Mga TinkerCAD Circuits

Mga TinkerCAD Circuits
Mga TinkerCAD Circuits

Kung hindi mo pa nasuri ang TinkerCAD Circuits, gawin ito ngayon. HINTAY !!!! Tapusin ang pagbabasa ng aking Instructable, at pagkatapos ay suriin ito. Ginagawang madali ng TinkerCAD Circuits ang pagsubok ng mga Arduino circuit. Nagsasama ito ng maraming mga de-koryenteng bagay at Arduinos, kahit na pinapayagan kang i-program ang Arduino para sa pagsubok.

Upang subukan ang aking circuit, nag-set up ako ng 6 na switch sa pamamagitan ng paggamit ng isang DIP switch pack at itinali ang mga ito sa resistors. Upang mapatunayan na ang halaga ng boltahe sa aking Excel Spreadsheet ay tama, nagpakita ako ng isang voltmeter sa Input sa Arduino. Ang lahat ng ito ay gumana tulad ng inaasahan.

Upang patunayan na ang Arduino Programming ay nagtrabaho, inilalabas ko ang mga estado ng mga switch sa LED, gamit ang digital output ng Arduino.

Pagkatapos ay inilipat ko ang bawat switch para sa bawat posibleng kombinasyon at ipinagmamalaki kong sabihin na "IT WORKS" !!!

Hakbang 5: "Napakahaba, at Salamat sa Lahat ng Isda." (ref.1)

Hindi ko pa ito nasusubukan gamit ang totoong kagamitan, dahil kasalukuyang naglalakbay ako para sa trabaho. Ngunit, matapos itong patunayan sa TinkerCAD Circuits, naniniwala akong gagana ito. Ang hamon ay ang mga halaga ng resistors na tinukoy ko ay hindi lahat ng karaniwang mga halaga para sa resistors. Upang mapalibot ito, plano kong gumamit ng mga potensyal at kombinasyon ng mga resistor upang makuha ang mga halagang kailangan ko.

Salamat sa pagbabasa ng aking itinuturo. Inaasahan kong makakatulong ito sa iyo sa iyong mga proyekto.

Mangyaring mag-iwan ng mga komento kung sinubukan mong harapin ang parehong balakid at kung paano mo ito nalutas. Gusto kong malaman ang higit pang mga paraan upang magawa ito.

Hakbang 6: Mga Sanggunian

Hindi mo akalaing magbibigay ako ng isang quote nang hindi nagbibigay ng isang sanggunian sa pinagmulan nito hindi ba?

ref. 1: Adams, Douglas. Napakahaba, at Salamat sa Lahat ng Isda. (Ang ika-4 na libro ng Hitchhikerer's Guide to the Galaxy "trilogy")

Inirerekumendang: