Z簡單的傳感器是什么,我一定會回答是微觸開關,如圖5-1 所示。其實它和我們生活中常常見到的開關沒有太大區(qū)別。
微觸開關也只有“開”和“閉” 兩種不同的狀態(tài),不過它對于觸碰是非常敏感的,只要稍微碰到一點點,開關就會合上。 如果把它連接到主控制器,用程序就能很準確地檢測到它的開閉變化了。同學們想想看, 它是不是和昆蟲的觸角很像呢?我們這節(jié)課就要用兩個微觸開關傳感器來模擬昆蟲觸角 的功能。
對于機器人來說,微觸開關就是一個輸入器件。究竟什么是輸入,什么是輸出呢?我 們怎么利用主控制器的輸入和輸出功能呢?其實這個概念非常簡單,如果將主控制器的 一個端口連接到傳感器,它就是被作為一個輸入端口在使用,因為我們要利用傳感器讀入 關于環(huán)境的信息。而反之,如果將端口連接到執(zhí)行器,比如一個LED 小燈模塊或一個蜂 鳴器模塊,那么它就變成了一個輸出端口,因為我們是用輸出信息去控制執(zhí)行器執(zhí)行一些 動作。
在Arduino 主控制器中,每個端口都既可以用作輸入端口又可以用作輸出端口,同學 們需要在使用時根據實際用途將它們設置為適當的方向。這時就要看到前面課程中已經 見到過的一個“熟面孔”——pinMode 命令,它的用法如下:
pinMode(3,INPUT);
pinMode(5,OUTPUT);
當我們這樣使用pinMode 命令時,編號為3號的端口變成輸人模式,之后就能使用上面 連接的傳感器了。5號端口則變成輸出模式,如果要操縱的是LED 小燈或蜂鳴器之類的 執(zhí)行模塊,就一定要記得將端口設置為輸出模式。
一般地,我們在編寫程序時只需要設置一次端口的方向就夠了。請同學們回想一下 Arduino 的程序結構,pinMode 這個命令Z適合出現的地點是不是setup 中呢?
假設將微觸開關連接到3號端口,并用pinMode 命令將端口設置成輸入方向。那么 在后面的程序中,當需要知道微觸開關的開閉狀態(tài)時,只要用 digitalRead 命令就可以很 方便地讀取微觸開關的值了,這個命令的用法如下:
int value=digitalRead(3);
我們這樣使用這條命令,就能夠得到在第3號端口上的狀態(tài),它是一個值為 HIGH 或者 LOW 的數字。如果微觸開關的狀態(tài)是閉合的,使用 digitalRead 命令得到的就是一個 LOW; 反之則得到HIGH 。 這樣,我們只要判斷一下 digitalRead 的返回值就知道開關的 狀態(tài)了。在這本書中,用到的所有開關類型的傳感器都可以用這樣的方法讀取它們的 狀 態(tài) 。
用條件語句讓機器人更智能
前幾節(jié)課中我們編寫的程序都是那種Z簡單的“面條型”程序,也就是其中的每個語 句都會被順序執(zhí)行。而為小機器人編寫智能程序時,肯定希望在某種條件下機器人做某 件事情,在另一種條件下機器人去做另一種事情。那么如何讓機器人做到這一點呢?這 就需要用到C 語言中Z常用的語句——條件語句了。條件語句由 if 關鍵字、else 關鍵字 和條件表達式組成。
我們先來看看什么是條件表達式。簡單地說,條件表達式是一個結果值只可能為 “真”(true) 或“假”(false) 的計算式。它們可以分為兩種: 一種叫關系運算;另一種叫邏輯 運算。關系運算主要用來判斷值的大小關系,比如判斷a 和 b 是否相等,或是判斷c 和 d 誰大誰小。而使用邏輯運算可以把幾個關系運算連接起來,表達更復雜的邏輯,比如,“a 大于b, 而 且c 大 于d” 這個式子是真還是假?我們把Z常用的這類運算總結在表5-1和 表5-2中。
知道了條件表達式的用法,學會條件語句就沒有任何困難了。下面是條件語句Z常
用的幾種用法。
if (條件表達式){ 語句;
}
//在這里寫條件滿足時執(zhí)行的語句
條件語句Z簡單的用法就像上面這樣,在條件表達式的值為真時執(zhí)行大括號中的語 句,如果為假則直接跳過執(zhí)行大括號后面的部分。
注意:上面的內容中用“語句;”代替的大括號內的部分是可以包含多條語句的。
if (條件表達式){
語句1; }else{
語句2;
//在這里寫條件滿足時執(zhí)行的語句
//在這里寫條件不滿足時執(zhí)行的語句
這種用法下,如果條件表達式得到滿足,就執(zhí)行語句1;否則執(zhí)行語句2。
if (條件表達式1){
語句1;
else if(條件表達式2){
語句2; }else{
語句3; //在這里寫條件1滿足時執(zhí)行的語句
//在這里寫條件1不滿足但條件2滿足時執(zhí)行的語句 //在這里寫所有條件均不滿足時執(zhí)行的語句
上面這種用法有兩個條件表達式,我們的程序會先判斷D一個表達式是否滿足,如果 D一個條件是 true 就執(zhí)行語句1;否則判斷第2個條件,如果是true 就執(zhí)行語句2,是 false 則執(zhí)行語句3。記住如果還有多個條件需要判斷,還可以再去增加更多的else if。
![]() |
| 機器人底盤 Disinfection Robot 消毒機器人 講解機器人 迎賓機器人 移動機器人底盤 商用機器人 智能垃圾站 智能服務機器人 大屏機器人 霧化消毒機器人 展廳機器人 服務機器人底盤 具身智能教育機器人 智能配送機器人 導覽機器人 |