使用觸碰感應器 | 樂高機器人EV3使用說明
使用觸碰感應器
觸碰感應器檢測是否按入了感應器正面的按鈕。例如,可以使用觸碰感應器檢測機器人在驅動時與某個物體碰撞的情況。還可以使用手指壓下觸碰感應器以觸發某個動作。 |
觸碰感應器可以指示它是否被按入。它不能測量按入按鈕的程度或力度。觸碰感應器提供邏輯資料(“是”或“否”)。觸碰感應器按鈕的位置稱爲其“狀態”,按入時爲“是”,未按入(鬆開)時爲“否”。
觸碰感應器還可以跟蹤在過去是否壓下然後鬆開了按鈕。這稱爲“碰撞”,例如可用於檢測手指壓下。有關更多資訊,請參考了解“碰撞”。
觸碰感應器還可以跟蹤在過去是否壓下然後鬆開了按鈕。這稱爲“碰撞”,例如可用於檢測手指壓下。有關更多資訊,請參考了解“碰撞”。
資料 | 類型 | 備註 |
---|---|---|
狀態 | 邏輯 | 如果按入了按鈕,則爲“是”,否則爲“否”。 |
壓下 | 邏輯 | 如果壓下,則爲“是”,否則爲“否”(與“狀態”相同)。 |
鬆開 | 邏輯 | 如果壓下,則爲“否”,否則爲“是”(與“狀態”相反)。 |
碰撞 | 邏輯 | 如果在過去壓下並鬆開了按鈕,則爲“是”。下一次“碰撞”發生因而需要新的壓下和鬆開。 |
範例 1:驅動至壓下了觸碰感應器
此程式使機器人向前直線驅動,直至壓下了觸碰感應器,隨後機器人停止。它使用“觸碰感應器 - 比較 - 觸碰”模式的等待方塊測試“壓下”。
提示和技巧
當需要在等待感應器期間驅動時,請記住使用移動轉向方塊的“開啓”模式。
範例 2:每當按住觸碰感應器時運行馬達(方法 1)
範例 3:每當按住觸碰感應器時使主機LED燈閃爍
此程式以橙色開啓主機LED燈,每當按住觸碰感應器時使其閃爍。它使用“測量”模式的觸碰感應器方塊獲取觸碰感應器的狀態。結果使用邏輯資料線連接到主機按鈕方塊的“閃爍”輸入。
範例 4:每當發生觸碰感應器壓下時發出蜂鳴聲
提示和技巧
如果從此程式中刪除針對“鬆開”的等待,則會發現只要按住觸碰感應器,音調便會一直重覆。這是因爲如果已壓下觸碰感應器,則針對“壓下”的等待會立即繼續執行下一個方塊。嘗試!
範例 5:每當按住觸碰感應器時運行馬達(方法 2)
提示和技巧
此程式使用不同方法實現與上面的範例 2 相同的目的。
除了告知當前是壓下還是鬆開了觸碰感應器按鈕,觸碰感應器還跟蹤在過去是否壓下並鬆開了它,這稱爲“碰撞”。這樣可以方便地查明是否壓下了觸碰感應器(如按鈕),而無需不斷檢查是否壓下,然後等待鬆開。
在觸碰感應器指示受到了碰撞之後,它不會再次指示“碰撞”,直至又一次壓下然後鬆開了觸碰感應器。例如,這樣可以方便地確保每次壓下對應於僅發生一次的動作。
下表以一係列步驟的形式顯示了一個範例,其中兩次壓下並鬆開觸碰感應器。下表顯示在每個動作之後測試“壓下”、“鬆開”和“碰撞”的程式的結果。
在觸碰感應器指示受到了碰撞之後,它不會再次指示“碰撞”,直至又一次壓下然後鬆開了觸碰感應器。例如,這樣可以方便地確保每次壓下對應於僅發生一次的動作。
下表以一係列步驟的形式顯示了一個範例,其中兩次壓下並鬆開觸碰感應器。下表顯示在每個動作之後測試“壓下”、“鬆開”和“碰撞”的程式的結果。
步驟 | 動作 | 壓下 | 鬆開 | 碰撞 |
---|---|---|---|---|
1 | 按鈕開始時鬆開 | 僞 | 真 | 僞 |
2 | 按入按鈕 | 真 | 僞 | 僞 |
3 | 鬆開按鈕 | 僞 | 真 | 真 |
4 | 按鈕仍然鬆開,程式再次測試觸碰感應器 | 僞 | 真 | 僞 |
5 | 第二次壓下按鈕 | 真 | 僞 | 僞 |
6 | 按住按鈕,程式再次測試觸碰感應器 | 真 | 僞 | 僞 |
7 | 鬆開按鈕 | 僞 | 真 | 真 |
8 | 按鈕仍然鬆開,程式再次測試觸碰感應器 | 僞 | 真 | 僞 |
請注意,當按住按鈕時,觸碰感應器會在每次程式測試它時繼續指示“壓下”。但是,在鬆開按鈕之後,感應器在程式第一次測試“碰撞”時只會指示“碰撞”。感應器不會再次指示“碰撞”,直至又一次壓下並鬆開了它。
範例 6:在壓下觸碰感應器時更改顯示
此程式會在每次碰撞(壓下然後鬆開)觸碰感應器時更改顯示,使 EV3 主機顯示畫面顯示“Zero”,然後顯示“One”,再然後顯示“Two”。
提示和技巧
如果更改此程式中的等待方塊以測試“壓下”而不是“碰撞”,則會發現顯示會從“Zero”直接變爲“Two”,跳過了“One”。嘗試!這是因爲顯示方塊執行的速度太快,這樣當第二個“等待壓下”測試進行時,您的手指仍處於第一次壓下中按住按鈕的狀態,因此第二個等待會立即結束。當測試出“碰撞”時,對於每個不同的壓下,只有一個測試會成功。
範例 7:以某種模式驅動,直至壓下觸碰感應器
此程式使機器人重覆直線驅動然後轉彎的模式,直至壓下觸碰感應器(充當機器人的“停止”按鈕)。在壓下觸碰感應器之後,機器人會在下一個轉彎之後停止。此程式使用“觸碰感應器”模式的迴圈重覆驅動,直至碰撞(壓下然後鬆開)觸碰感應器。
提示和技巧
如果使用“壓下”而不是“碰撞”嘗試此程式,則會發現壓下觸碰感應器通常不會使機器人停止。嘗試!這是因爲迴圈僅在兩個移動方塊完成之後短暫測試感應器。如果在移動方塊正在運行期間壓下並鬆開感應器,則不會發現“壓下”狀態。使用“碰撞”時,觸碰感應器會記住在過去壓下並鬆開了它。