LED 亂閃竟然是因為雜訊?別擔心,讓上拉電阻幫你處理! 厭倦了用杜邦線插插拔拔嗎?今天就把麻煩的杜邦線換成好用按鈕吧!

上一堂課程中,我們介紹了開關的設計,而且還製作了一個可以控制 LED 亮或滅的小專案。今天,我們要為各位解析上次提到的神秘現象,還有更多提升工作效率的工具跟電路!

  好了,究竟什麼是上次提到的神秘現象 呢?如果你照著上次教學的程式碼完成專案,你會發現我們在切換高、低電位接腳的過程,會有一段「懸空」的時刻,我們稱它為「floating」。在這個情況下,第 7 腳沒有被送入高電位,也沒有送入低電位,而是隨機地受到附近電場的干擾,得到雜亂的高低電位訊號,導致 LED 雜亂閃爍。

上拉電阻介紹

  有沒有一種方法,可以讓接腳即使在懸空的時候,能依然維持高電位,而不是被雜訊干擾呢?「上拉電阻」就是其中一種解法。所謂的「上拉」,其實就是把「電位」往上提升,把原本懸空的雜訊電位,拉到穩定的高電位的意思。它的做法是:將一個 20k 歐姆的電阻,連接到 5V 高電位,這樣就完成了。

  我們現在來觀察 A 點的狀態:第一種情況(如上圖左),如果低電位,也就是接地線直接與 A 點接通,那我們當然就會在 A 點觀察到低電位的狀態;另一種情況(如上圖右),則是在接地線沒有跟 A 點接通的時候,低電位與高電位之間就不會形成迴路,所以線路上也不會產生電流。根據偉大的歐姆定律,電流為 0,電阻壓降也是 0,這個 5V 電位就可以原封不動地將高電位送到 A 點。

  其實這些電學概念您不理解也無傷大雅,只需要了解上拉電阻的特性,就是 A 點接地時,它是低電位;沒有接地,它就會很穩定的維持在高電位的狀態

  這就是解決雜訊問題的好方法!如果在 Arduino 的第 7 腳接了這個上拉電阻,即使我把杜邦線懸空,第 7 腳也會讀取到高電位的狀態,而不是隨機的干擾訊號。

上拉電組指令

  問題解決了!不過還得找電阻來接,實在是有點麻煩。事實上,Arduino 早就料想到這件事情,而且連電路都幫你設計好了,你只需要透過指令,就能開啟工作接腳的上拉電阻功能

  很意外的是,我並沒有新的指令要介紹!我們先來看看這張表:

  這是 pinMode() 跟 digitalWrite() 指令 的搭配組合。不知您有沒有想過,當 pinMode() 為 INPUT 時遇上設定為 HIGH 的 digitalWrite(),會發生什麼事呢?這其實就是開啟「上拉電阻」的指令組合!如果我先用 pinMode(7, INPUT); 設定接腳 7 為輸入模式,緊接著使用 digitalWrite(7, HIGH); 指令,這隻接腳就會像是被接了上拉電阻一樣,只要沒有接上低電位,就會穩定的維持高電位狀態。

  當然,除了使用兩個指令的搭配組合外,你也可以直接使用一個 pinMode(7, INPUT_PULLUP); 指令,開啟接腳 7 的上拉電阻功能!那照這個邏輯來說,pinMode() 為 INPUT 配上 digitalWrite() 為 LOW,或是一個 pinMode(7, INPUT_PULLDOWN); 指令,應該可以開啟穩定低電位的下拉電阻功能囉?

  不對!事實上什麼也不會發生。因為 Arduino 並沒有內建下拉電阻,也就是右邊這個電路,所以如果你希望能實現這樣的功能,就只能自己外接電路囉!

  現在我們把 Class 4 課程的小專案做一點點修改,也就是在接腳 7 的 pinMode() 指令後面,加上 digitalWrite() 為 HIGH。上傳程式,即使接腳懸空,LED 也不會受到雜訊干擾。其他原本就有的功能,可是完全沒變的唷!




麵包板的使用

  也許你已經覺得,用杜邦線這樣插插拔拔,有時候還會接錯,真的很不方便。所以,現在就要跟各位介紹電子實驗的神器:麵包板!這個名字起源於真空管時代,因為當時的前輩們習慣在切麵包的木板上,組裝零件或是電路。直到 70 年代,不需焊接的麵包板上市了,才讓電子實驗變得更加容易。麵包板主要由兩個部分組成。中間區域,是設計電路的地方,直行每 5 個點互相接通,每一行之間則互相獨立;而上、下兩個區域,我們稱為匯流排,則是每 25 個橫點互相接通,橫列與橫列之間互相獨立

  麵包板就是利用點跟點之間導通的特性,讓你免去「焊接」的過程,快速完成電路雛型。比如說,我們要用這個按鈕,來取代杜邦線控制 LED 亮或滅,所以我們需要如下圖的一個電路:從第 7 腳連接開關,然後開關再連接到地線,也就是低電位。這樣一來,只要我把按鈕按下去,第 7 腳就會變成低電位,LED 就會熄滅;而當按鈕放開時,因為上拉電阻的特性,接腳會維持高電位的狀態,LED 自然就亮著了。

  依照剛才介紹的麵包板規則,我們由第 7 腳出發,接到麵包板,然後透過麵包板直行導通的特性,碰到開關的一邊,再從開關的另一邊出來,直行導通,回到 GND。完成了!趕快把麻煩的杜邦線,換成好用的按鈕吧!

  在你的創作小宇宙爆發之前,我們還有小小的一步要走,也就是下次要介紹的「宣告」概念。有了宣告,你就能做更多意想不到的事 唷!趕快訂閱 LazyTomato Lab,隨時追蹤最新的精彩課程!這一集的 Arduino SpeedUp 就到這裡囉!我們下次見,掰掰!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *