【Arduino】與紅外線計數器實作
同樣是紅外線的應用,前一個接收器在應用的時候是考慮到接收的內容,也就是不同的按鈕要有不同的字串,以辨識出到底是哪一個按鈕被按下去,然後才可以根據不同的按鈕做出不同的回應,以達到紅外線遙控的功能。然而,紅外線的另外一個應用則不是用來控制,只要單純想要用來檢測前面有沒有東西,或是用來對於前面經過的事物做一個簡單的計次功能,此時要使用的就是包括發射以及接收紅外線的成對的模組,由於它們經常被拿來做為自走車的避障機制,因此常被稱為避障模組
資訊技術教材網
同樣是紅外線的應用,前一個接收器在應用的時候是考慮到接收的內容,也就是不同的按鈕要有不同的字串,以辨識出到底是哪一個按鈕被按下去,然後才可以根據不同的按鈕做出不同的回應,以達到紅外線遙控的功能。然而,紅外線的另外一個應用則不是用來控制,只要單純想要用來檢測前面有沒有東西,或是用來對於前面經過的事物做一個簡單的計次功能,此時要使用的就是包括發射以及接收紅外線的成對的模組,由於它們經常被拿來做為自走車的避障機制,因此常被稱為避障模組
紅外線是目前許多電器常用的遙控器標準通訊方式,因此是非常適用於嵌入式系統中使用的通訊方法,事實上也幾乎是標準的通訊模組,有非常多現成的程式以及電路可以利用,而且其零件也非當便宜。在這個實習中,我們就來瞭解如何把紅外線遙控器運用到我們的Arduino專題中。
使用查表法用在解譯簡譜算是滿方便的,因為可以把別人的簡譜直接拿來使用,由程式來進行翻譯就好了。不過,如果只有1~7個音階時還算是好用,但是如果把音階再擴展至高音以及低音的部份,很顯然地,只使用數字是不夠的。
Arduino本身可以透過delay函數進行簡單的計時,但是本身卻沒有時鐘的功能,也沒有記憶目前時間的功能,因此就算是我們利用程式模擬出時鐘的功能,一旦失去了電源,下次再回來程式的時候,又要重頭開始設定時間了,此種情形在製作和時鐘相關的應用專題時就非常地不方便。所幸,有一個模組可以解決這個問題,那就是DS1302 RTC(Real Time Clock)模組。
在前一個單元中我們把想要演奏的音樂簡譜放在song1這個變數中,然後一個一個字元地拆解出來,分別送到note這個自訂積木去播放每一個音符。這個程式在操作起來還算是容易,但是你有沒有注意到幾個可以加強的點?
有些時候我們的專題製作需要有可以輸入資料的介面,對於Arduino來說當然不能直接加上電腦的鍵盤,而且別忘了,在開發階段時Arduino是連接到電腦,可以使用電腦的鍵盤輸入沒錯,但是一旦在產品階段時,Arduino不但失去了電腦螢幕,當然也就沒有電腦的鍵盤可以使用了,所以在實用上,如果需要輸入數字資料,通常我們會去找一個數字鍵盤模組來使用。
之前我們已經操作過伺服馬達了,透過Servo.h程式庫的加持以及Arduino板子上接腳的支援,就可以輕易地讓伺服馬達轉動到任意的角度,而且是絕對的角度,也就是我們說幾度就是到幾度。然而,話雖如此,但是所謂的任意角度其實是有限制的,大部份的伺服馬達可以設定的角度範圍都介於0到180度之間,更不用說要轉超過一圈了(360度轉動的伺服馬達沒有辦法指定絕對的角度,而且也沒有辦法精確地控制要轉幾圈)。如果有需要精確地設定轉動軸轉動的圈數,那麼就需要使用步進馬達。