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