Variable 變數(下)

在上一篇我們簡單的讓大家知道了variable的用法,但那個編程的做法其實並沒有任何計算在其中。

這次,我們將講解如何使用2個以上的variable互相影響和加入計算。這個例子其實大家都有,就是工作坊裡的Distance Meter。

我們接下來會一步一步解釋這個編程,以下是它的解釋:

例子:

探檢前方物件距離,當距離越近,按下按鈕發出的綠光就會越亮。

同時,探測距離只是1米,當物件超過1米時便自動視作1米。

這一大串字看似十分複雜,我們可以簡單地拆成幾個步驟。

  1. 探測前方物件距離
  2. 判斷是否超過1米。如是,設成1米;如否,使用當前距離
  3. 按掣開燈,使用step2的data來控制燈光中G的數量(G的意思是顏色中綠色的濃度)
  4. 關燈,直到下一次按掣

這樣一來是否清楚了很多呢,其實每一個複雜的編程都可以用這個方法一步一步做。

第一步:了解我們需要多少個variable

只要你按照上方列出的步驟加以分析,便不難理解這裡需要3個variable,分別是:

Maximum、Distance、Brightness

其中Maximum是一個control variable(控制變數)。它本身是固定不變的,但它的工作是控制其他的variable,例如在這裡它為距離設下了上限為100cm。

因此我們在一起始便設定了Maximum=100,至於其他2個variable並沒有固定數字,所以不會在一開始便列出。

第二步:設定distance

判斷物件距離是否超過1米。如是,設成1米;如否,使用當前距離

我們為這一段文字設下了3行的編程,當中的邏輯只要按字面就可以理解。

如果Distance並沒有>Maximum(100),便以第一行(collected data)為數。

如果Distance > Maximum(100),便以100來做編程。

第三步:設定Brightness

使用step2的data來控制燈光中G的數量

圖片下方的set led to block相信不用解釋了,就和之前做的一樣。RGB就是一種顏色中紅綠藍分別佔了多少濃度,由於這次我們只會用綠色,因此其他兩個不用理會。

重點是上方,我們如何設定Brightness的數字呢?其實只是一條十分簡單的數學題,我們一開始設定了Max=100,即是其實是 (1-D/100)*255。那麼當這個D越大的時候,得出的數字就會越小(i.e. 數字越高,綠色越光)。

假設D=10cm,(1-10/100)*255=229.5

假設D=20cm,(1-20/100)*255=204

當D是200時,程式會自動將其視為100,然後(1-100/100)*255=0,不會開燈

到了這裡已經解釋了整個編程,其實上面的算式只是參考之用,不用刻意想得這麼深奧。這個例子最大的意義不是教授算式,而是顯示給大家看3個variable如何互相計算和影響結果,這才是最重要的。