旋轉編碼器是可以無限旋轉的設備。像這樣的簡單對象沒有鍋子那樣的真實狀態,因此,當您啟動時,將無法簡單地從變成它的編碼器中讀取信息。
什么是編碼器?
在位置感測中,編碼器是一種可以檢測機械運動并將其轉換為模擬或數字編碼輸出信號的設備。更具體地說,它測量位置,同時測量速度。加速度和方向可以從線性或旋轉運動的位置得出。
但是因為您可以繼續轉動它,所以它始終沒有開始,中間或結束。但是,如果您跟蹤代碼中的旋轉,則可以將其用作旋鈕輸入,并且可以根據需要隨意向上或向下旋轉。
旋轉編碼器如何工作?
像這樣的最簡單的編碼器僅使用4個引腳,其中一個是接地引腳,另一個是Vcc。其他兩個引腳會改變狀態,并且始終為高電平或低電平,因此它們總共只能有4種組合。00、01、10和11。
這稱為2位格雷碼。因此,當您轉動它時,arduino可以說……好吧,您現在是01,現在您是00,所以您以這種方式移動?;蛘吣F在是01,但是現在您是10,所以您必須以另一種方式移動。您會看到該編碼器有5個引腳,另兩個僅是按下時接合的簡單開關。
聽起來超級簡單,有點,但是我們可以做的是每次值改變時我們都可以檢查它的移動方向。然后,如果我們每次旋轉一個值都增加一個值,而當我們又移動一步時就減少它。
自啟動以來,我們可以跟蹤它已經移動了多少。因此,如果您想將旋鈕調到最大11,那就是您了。(我保證那里有一個雙關語)
因此,旋轉編碼器的真正時髦之處在于它可以正常工作。每當這些值改變時,我們都需要知道。這可能很難,因為如果arduino正在執行某些操作(例如delay(1000)或您擁有什么)的過程中,我們將錯過更改。
因此,我們需要一種方式對arduino說:“我不在乎您在做什么,何時在做什么;如果您看到這兩個引腳中的任何一個都更改了狀態,則放棄所有內容并對其進行管理”。為此,我們需要一種叫做中斷的東西。
中斷很神奇
中斷插針是特殊的插針,可以阻止您的arduino并強迫它繼續前進。因為它們是特殊的銷,您只能在arduino上得到其中的一些;但是這些引腳可以監視任何變化(從高到低/從低到高),下降(從高到低)或上升(從低到高)。
您可以將中斷功能連接到這些引腳,以便在發生更改時使用。它將刪除所有內容并運行該功能。它變得時髦,因為它打破了arduino循環的基本線性特性。但是當您掌握它時,它可能會成為最強大的功能。
這些函數內部使用的所有全局變量都有一個特殊的名稱。它們被稱為易失性變量,這是有充分理由的。它們的值可以隨時更改。
因此,如果您在循環中使用了兩次易失性,那么如果它在中斷功能期間被更改,則第二次可能不是相同的值。