0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣將1個(gè)模擬輸入用于Arduino的6個(gè)按鈕

454398 ? 來(lái)源:wv ? 2019-10-25 10:21 ? 次閱讀

步驟1:電路

怎樣將1個(gè)模擬輸入用于Arduino的6個(gè)按鈕

Arduino模擬輸入可接受0V至5V輸入。此輸入具有10位分辨率,這意味著信號(hào)被分成2 ^ 10個(gè)段或1024個(gè)計(jì)數(shù)?;诖耍谠试S同時(shí)按下的同時(shí),我們最多可能輸入到模擬輸入中的是10個(gè)按鈕到1個(gè)模擬輸入。但是,這不是一個(gè)完美的世界。導(dǎo)體中存在電阻,外部來(lái)源的噪聲以及功率不完善。因此,為了給自己帶來(lái)足夠的靈活性,我計(jì)劃設(shè)計(jì)6個(gè)按鈕。這在一定程度上受到TinkerCAD Circuits具有6開(kāi)關(guān)DIP開(kāi)關(guān)對(duì)象這一事實(shí)的影響,這將使測(cè)試變得容易。

設(shè)計(jì)的第一步是確保每個(gè)按鈕在按下時(shí)單獨(dú)按下,將提供獨(dú)特的電壓。這排除了所有電阻器的值相同。下一步是,并聯(lián)添加電阻值時(shí),電阻值不能與任何單個(gè)電阻器值相同。當(dāng)電阻并聯(lián)時(shí),可以通過(guò)Rx = 1/[(1/R1)+(1/R2)]來(lái)計(jì)算得到的電阻。因此,如果R1 = 2000和R2 = 1000,則Rx = 667。我推測(cè)通過(guò)將每個(gè)電阻器的尺寸加倍,對(duì)于任何組合我都不會(huì)看到相同的電阻。

因此,到目前為止,我的電路是有6個(gè)開(kāi)關(guān),每個(gè)開(kāi)關(guān)都有自己的電阻。但是,完成該電路還需要一個(gè)電阻。

最后一個(gè)電阻有3個(gè)用途。首先,它充當(dāng)下拉電阻。如果沒(méi)有電阻,則當(dāng)沒(méi)有按鈕按下時(shí)電路將不完整。這將使Arduino模擬輸入上的電壓浮動(dòng)到任何電壓電位。下拉電阻器實(shí)質(zhì)上將電壓下拉至0V。第二個(gè)目的是限制該電路的電流。歐姆定律指出,V = IR或電壓=電流乘以電阻。在給定的電壓源下,電阻越大,電流就越小。因此,如果將5V信號(hào)施加到500ohm電阻,則我們可以看到的最大電流為0.01A或10mA。第三個(gè)目的是提供信號(hào)電壓。流過(guò)最后一個(gè)電阻的總電流為:i = 5V/Rtotal,其中Rtotal = Rlast + {1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R 5)+(1/R 6)]}。但是,對(duì)于每個(gè)按下了相應(yīng)按鈕的電阻,僅包括1/Rx。從總電流中,提供給模擬輸入的電壓將為i * Rlast或i * 500。

步驟2:證明-Excel

證明該電路具有獨(dú)特的電阻和獨(dú)特的電壓的最快,最簡(jiǎn)單的方法是使用Excel的功能。

我設(shè)置了所有可能的組合切換輸入并按照二進(jìn)制模式順序組織這些。值“ 1”表示開(kāi)關(guān)打開(kāi),空白表示開(kāi)關(guān)關(guān)閉。在電子表格的頂部,我輸入了每個(gè)開(kāi)關(guān)和下拉電阻的電阻值。然后,我計(jì)算了每種組合的等效電阻,但當(dāng)所有電阻都關(guān)閉時(shí)除外,因?yàn)檫@些電阻在沒(méi)有電源的情況下不會(huì)產(chǎn)生影響。為了使我的計(jì)算變得容易,以便我可以復(fù)制和粘貼到每個(gè)組合,我通過(guò)將每個(gè)開(kāi)關(guān)值(0或1)乘以其反向電阻值來(lái)將所有組合包括在計(jì)算中。如果開(kāi)關(guān)斷開(kāi),這樣做可以從計(jì)算中消除其電阻??梢栽陔娮颖砀竦膱D像中看到生成的方程式,但是Req = Rx + 1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6)。使用Itotal = 5V/Req,我們確定通過(guò)電路的總電流。這與流過(guò)下拉電阻的電流相同,并向我們的模擬輸入提供電壓。計(jì)算公式為Vin = Itotal x Rx。查看Req數(shù)據(jù)和Vin數(shù)據(jù),我們可以發(fā)現(xiàn)我們確實(shí)有唯一的值。

在這一點(diǎn)上,我們的電路似乎可以正常工作?,F(xiàn)在要弄清楚如何對(duì)Arduino進(jìn)行編程。

第3步:Arduino編程

當(dāng)我開(kāi)始考慮如何對(duì)Arduino進(jìn)行編程時(shí),我最初計(jì)劃設(shè)置各個(gè)電壓范圍來(lái)確定開(kāi)關(guān)是打開(kāi)還是關(guān)閉。但是,有一天晚上躺在床上時(shí),我想到應(yīng)該可以找到一個(gè)方程式來(lái)做到這一點(diǎn)。怎么樣? EXCEL。 Excel能夠計(jì)算方程以最適合圖表中的數(shù)據(jù)。為此,我需要一個(gè)開(kāi)關(guān)(二進(jìn)制)的整數(shù)值與對(duì)應(yīng)于該值的電壓輸入之間的等式。在我的Excel工作簿中,將“整數(shù)值”放在電子表格的左側(cè)。現(xiàn)在確定我的方程式。

下面是有關(guān)如何在Excel中確定直線方程式的快速教程。

1)選擇一個(gè)不包含任何數(shù)據(jù)的單元格。如果選擇了一個(gè)具有數(shù)據(jù)的單元格,Excel將嘗試猜測(cè)要趨勢(shì)的單元格。因?yàn)镋xcel很少能正確預(yù)測(cè),所以這使設(shè)置趨勢(shì)變得更加困難。

2)選擇“插入”選項(xiàng)卡,然后選擇“散點(diǎn)圖”。

3)右鍵單擊圖表框,然后單擊“選擇數(shù)據(jù)。..”。這將彈出“選擇數(shù)據(jù)源”窗口。選擇“添加”按鈕繼續(xù)選擇數(shù)據(jù)。

4)給它指定一個(gè)系列名稱(可選)。通過(guò)單擊向上箭頭,然后選擇電壓數(shù)據(jù),選擇X軸的范圍。通過(guò)單擊向上箭頭,然后選擇整數(shù)數(shù)據(jù)(0-63),選擇Y軸的范圍。

5)右鍵單擊數(shù)據(jù)點(diǎn),然后選擇“添加趨勢(shì)線。..”。在“設(shè)置趨勢(shì)線格式”窗口中,選擇“多項(xiàng)式”按鈕。觀察趨勢(shì),我們發(fā)現(xiàn)2的階數(shù)不太匹配。我選擇了3階,覺(jué)得這更準(zhǔn)確。選中“在圖表上顯示方程式”復(fù)選框?,F(xiàn)在,最終方程式顯示在圖表上。

6)完成。

確定?;氐紸rduino程序?,F(xiàn)在我們有了方程式,對(duì)Arduino進(jìn)行編程很容易。代表開(kāi)關(guān)位置的整數(shù)以1行代碼計(jì)算。通過(guò)使用“ bitread”功能,我們可以獲取每個(gè)單獨(dú)位的值,從而了解每個(gè)按鈕的狀態(tài)。 (請(qǐng)參閱照片)

第4步:TinkerCAD電路

如果您尚未簽出TinkerCAD電路,請(qǐng)立即執(zhí)行。等待?。。?!完成閱讀我的Instructionable,然后將其簽出。 TinkerCAD Circuits使測(cè)試Arduino電路非常容易。它包括幾個(gè)電子對(duì)象和Arduino,甚至允許您對(duì)Arduino進(jìn)行編程以進(jìn)行測(cè)試。

要測(cè)試我的電路,我使用DIP開(kāi)關(guān)組設(shè)置了6個(gè)開(kāi)關(guān)并將它們與電阻器捆綁在一起。為了證明我的Excel電子表格中的電壓值正確,我在Arduino的輸入處顯示了一個(gè)電壓表。一切都按預(yù)期工作。

為證明Arduino編程工作正常,我使用Arduino的數(shù)字輸出將開(kāi)關(guān)的狀態(tài)輸出到LED

然后我將每個(gè)開(kāi)關(guān)切換為一切可能的組合,并為能說(shuō)“ IT WORKS”而感到自豪??!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 按鈕
    +關(guān)注

    關(guān)注

    0

    文章

    134

    瀏覽量

    12724
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6461

    瀏覽量

    186524
  • 模擬輸入
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    10667
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TLV320AIC3106有10個(gè)模擬輸入和7個(gè)模擬輸出,這些模擬輸入輸出如何理解?

    請(qǐng)問(wèn),官網(wǎng)上說(shuō)TLV320AIC3106有10個(gè)模擬輸入和7個(gè)模擬輸出,這些模擬
    發(fā)表于 10-25 07:35

    開(kāi)源項(xiàng)目!基于 Arduino DIY 漂亮的宏機(jī)械鍵盤

    其與 Arduino 的 GND 引腳相連。隨后,我每個(gè)按鈕的電線焊接到 Arduino 的一個(gè)數(shù)字引腳上,同時(shí)避開(kāi)了
    發(fā)表于 08-19 17:02

    為什么可以個(gè)GPIO引腳同時(shí)配置為輸入輸出模式呢?

    GPIO_MODE_INPUT_OUTPUT參數(shù),即可將引腳配置為輸入輸出模式。 問(wèn)題來(lái)了:1.為什么可以個(gè)GPIO引腳同時(shí)配置為輸入
    發(fā)表于 06-05 07:37

    超酷!基于ESP32自制一個(gè)藍(lán)牙游戲手柄

    按鈕編號(hào)。每個(gè)鍵名都有一個(gè)對(duì)應(yīng)的引腳編號(hào)。 /* * ANDROID游戲手柄 * {A=1, B=2, C=3, X=4, Y=5, Z=6, L
    發(fā)表于 05-06 16:59

    具有2個(gè)降壓轉(zhuǎn)換器和4個(gè)輸入電壓LDO的TPS65051-Q1 6通道電源管理IC數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《具有2個(gè)降壓轉(zhuǎn)換器和4個(gè)輸入電壓LDO的TPS65051-Q1 6通道電源管理IC數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 03-07 09:22 ?0次下載
    具有2<b class='flag-5'>個(gè)</b>降壓轉(zhuǎn)換器和4<b class='flag-5'>個(gè)</b>低<b class='flag-5'>輸入</b>電壓LDO的TPS65051-Q<b class='flag-5'>1</b> <b class='flag-5'>6</b>通道電源管理IC數(shù)據(jù)表

    構(gòu)建一個(gè)基于Arduino的空氣質(zhì)量監(jiān)測(cè)系統(tǒng)

    呼吸清潔、健康的空氣對(duì)我們的健康至關(guān)重要,但在許多環(huán)境中,空氣質(zhì)量仍然是一個(gè)問(wèn)題。在本文中,我們深入探討如何創(chuàng)建一個(gè)基于Arduino的空氣質(zhì)量監(jiān)測(cè)系統(tǒng)。我們將從討論各種組件開(kāi)始,然
    的頭像 發(fā)表于 02-11 12:03 ?3949次閱讀
    構(gòu)建一<b class='flag-5'>個(gè)</b>基于<b class='flag-5'>Arduino</b>的空氣質(zhì)量監(jiān)測(cè)系統(tǒng)

    如何按鈕連接到Arduino

    在本快速入門指南中,您將學(xué)習(xí)如何按鈕連接到Arduino板,并根據(jù)按鈕是否被按下來(lái)讀取HIGH或LOW。您將使用電路板上隨附的發(fā)光二極管 (LED)通過(guò)
    的頭像 發(fā)表于 02-11 10:52 ?3339次閱讀
    如何<b class='flag-5'>將</b><b class='flag-5'>按鈕</b>連接到<b class='flag-5'>Arduino</b>板

    如何HC-SR04連接到Arduino并編寫一個(gè)簡(jiǎn)單的程序來(lái)測(cè)量距離

    一種流行的Arduino超聲波傳感器是HC-SR04。它廣泛用于非接觸式距離測(cè)量,通常用于機(jī)器人和自動(dòng)化項(xiàng)目。本指南向您展示如何HC-S
    的頭像 發(fā)表于 02-11 10:17 ?2143次閱讀
    如何<b class='flag-5'>將</b>HC-SR04連接到<b class='flag-5'>Arduino</b>并編寫一<b class='flag-5'>個(gè)</b>簡(jiǎn)單的程序來(lái)測(cè)量距離

    三菱PLC模擬量模塊怎樣調(diào)節(jié)

    三菱PLC模擬量模塊是一種用于測(cè)量和控制模擬信號(hào)的設(shè)備。它可以模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),并通過(guò)PLC進(jìn)行處理和控制。本文
    的頭像 發(fā)表于 02-05 14:56 ?2696次閱讀

    關(guān)于PLC的模擬量模塊,怎樣來(lái)使用

    PLC(可編程邏輯控制器)是一種用于自動(dòng)化控制系統(tǒng)的電子設(shè)備,用于監(jiān)視輸入信號(hào)并根據(jù)預(yù)先設(shè)定的邏輯和算法來(lái)控制輸出。其中一個(gè)重要的組成部分是模擬
    的頭像 發(fā)表于 02-05 14:52 ?1470次閱讀

    ESP32與Arduino板之間的區(qū)別差異

    Arduino板包括一個(gè)ATmega328P8位微控制器,具有0至13個(gè)數(shù)字引腳。這些引腳用于數(shù)字輸入和數(shù)字輸出,其中數(shù)字
    的頭像 發(fā)表于 02-02 14:36 ?6738次閱讀
    ESP32與<b class='flag-5'>Arduino</b>板之間的區(qū)別差異

    使用按鈕依次切換8個(gè)輸出且可控制輸出通道

    本案例使用按鈕依次切換8個(gè)輸出且可控制輸出通道,比如控制指示燈,可以輸入序號(hào)來(lái)點(diǎn)亮該序號(hào)指示燈,連接時(shí)鐘信號(hào)可以實(shí)現(xiàn)跑馬燈效果。
    的頭像 發(fā)表于 12-04 15:52 ?664次閱讀
    使用<b class='flag-5'>按鈕</b>依次切換8<b class='flag-5'>個(gè)</b>輸出且可控制輸出通道

    AD7124-4的6個(gè)模擬輸入通道配置為3對(duì)差分輸入,配置好寄存器后,其中一對(duì)差分輸入通道上沒(méi)有正常采集到信號(hào)的原因?

    問(wèn)題:AD7124-4的6個(gè)模擬輸入通道配置為3對(duì)差分輸入,配置好寄存器后,其中一對(duì)差分輸入通道
    發(fā)表于 12-04 07:34

    ADAU1701的IO口怎樣實(shí)現(xiàn)瞬時(shí)按鈕和單極開(kāi)關(guān)輸入電路圖的搭建?

    ADAU1701的IO口怎樣實(shí)現(xiàn)瞬時(shí)按鈕和單極開(kāi)關(guān)輸入電路圖的搭建
    發(fā)表于 11-28 06:50

    python中input怎么輸入3個(gè)

    () 函數(shù),每一個(gè)函數(shù)用于獲取一個(gè)值。例如,如果你想要輸入個(gè)整數(shù),你可以這樣寫: a = int ( input ( "請(qǐng)
    的頭像 發(fā)表于 11-23 15:31 ?9481次閱讀