2017年4月14日 星期五

編程概念認識:運算子(Operators)

簡介

我們在使用變數時,除了可以使用「設為…」積木或「改變為…」積木外,還可以使用運算子(Operators),對變數作出比較或加入數學運算,讓變數的功能更完善。

在 mBlock 拼圖程式中,資料的運算大致上可分為以下五種:

  1. 四則運算
  2. 比較運算
  3. 邏輯運算
  4. 字串運算
  5. 數學運算

指定運算子(Assignment)

指定運算子是將「右邊」運算式的結果、數字或字串指定給「左邊」的運算元(即變數名稱)。例如:
設為(直接指定)

四則運算子(Calculation)

四則運算子用於處理使用者輸入的「數值資料」進行四則運算積木。
加法 減法 乘法 除法

關係運算子(Boolean)

關係用於判斷「條件式」是否成立。
AND(且) OR(或) NOT(反)

字串運算子(String)

字串運算子讓字串資料的輸出更有彈性。
合併字串 取出字串中的第N個字符 計算字串的長度
取出指定字串在字串中的位置 將數字轉換成字串

數學運算子(Mathematics)

數學運算子讓 mBot 機械人具有數學運算的能力。
隨機數 取餘數 四捨五入取整數
絕對值 無條件捨去(Round Down) 無條件進位(Round Up)
平方根 其他數學公式
(sin / cos / tan / asin / acos / atan / ln / log / e^ / 10^)

2017年4月11日 星期二

mBot 入門教學:馬達(Motor)

簡介

要讓 mBot 機械人走動,就必須先了解馬達基本原理與功能。馬達(Motor)是目前機械人的主要驅動裝置,可以作為機械人的活動關節與動力來源。小型機械人上常見的馬達有:

  • 直流馬達(DC Motor):以電壓大小控制馬達轉速╴僅能朝向同一方向轉動。
  • 步進馬達(Step Motor):以開迴路模式(Open-Loop)決定轉軸轉動角度與電流脈波數關係,再依脈波訊號轉動馬達轉軸至目標角度,轉動角度精確度高。
  • 伺服馬達(Servo Motor):和步進馬達一樣是以電流脈波訊號轉動馬達轉軸至目標位置,但以誤差回饋作閉迴路修正,可實現高精確度的角度定位。

馬達的mBlock積木

在 mBlock 介面中,我們可以在「程式區」中的「機器人模組」,找到對應控制 mBot 機械人直流馬達的 mBlock 積木。mBlock 有兩種控制馬達的方法:

第一種控制方法:「雙馬達」控制之拼圖積木程式

第二種控制方法:「單馬達」控制之拼圖積木程式


兩種控制方法在控制「前進」及「後退」時沒有大分別,關鍵在於轉向時的不同,使用「單馬達」控制方法可以控制轉動的幅度,而並非使用「雙馬達」的原地自轉:


「雙馬達」控制「單馬達」控制

值得的注意的地方是,在相同的地方開始轉動,轉動後的位置會有所不同。

2017年3月30日 星期四

編程概念認識:變數(Variable)

我們在編寫程式時,經常需要儲存大量不同的數據,這個時候,我們會用上變數(Variable)。變數是指程式在執行過程中,它的「內容」會隨著程式而改變。想像變數是一個「容器」,它是專門用來「儲放資料」的地方。使用變數可以向系統要求配置適當的主記憶體空間,也可以減少邏輯上的錯誤。

例如:A = B + 1,其中 A、B 則是變數,其內容是可以改變的。

執行的過程變數的內容變化
A = 0; B = 1;
A = B + 1;

宣告變數的步驟

在不同的程式編寫中,會有不同的宣告方法,一般都會先宣告變數種類:
/* C, Java */
int i = 0;
char c = 'a';
float f = 0.123;

/* C++ */
String s = "hi";


亦有一些是不用宣告變數種類的,例如:

/* Python */
counter = 100
miles = 1000.0
name = "John"

/* PHP */
$counter = 100;
$miles = 1000.0;
$name = "Peter";


而在 mBlock 中,我們是不用宣告變數種類的。要宣告變數,我們可以在「程式區」->「資料和指令」->「做一個變數」:

然後宣告變數的名稱:

「適用所有的角色」代表「全域性變數(Global Variable)」,我們一般會使用這種變數,使用時比較方便,但因為任何地方都可以改變它的值,出錯的機會亦因此提高。「僅適用本角色」代表「區域性變數(Local Variable)」,由於使用彈性低,因此較為少用。

變數的使用

成功宣告變數之後,我們可以在「資料和指令」中找到剛剛宣告的變數和變數的相關積木:
積木功能
取得變數當前的值
將變數設為「N」
變數改變為「變數+N」