電氣動顏色分辨器 BBC micro:bit 編程

Micro:bit IO board

Coding 概覽 :

由於micro:bit的LED display是以P9和P10運行,

如果不把LED disable , IO board會默認將P9和P10寫成1 

(當插上馬達/燈到P9和P10時,即使沒有任何編程都會默認開啟)

而且對其他PIN位也會造成影響 , 例如 : 降低功效,增加反應時間等等...

由於氣動和光欄的燈連接在一起共用P15和P16

P15 = 1 , P16 = 0

即開啟氣動和光欄的燈

Function Move arm to pos 1 即是回到開始動作位置

P6 = 1 是 Pos 1 的 Button 被按下

P13 = 0 , P14 = 0 即是關閉馬達

Set iRunning  to 0 即是重置位置的計算

P13 = 0 , P14 = 1 即是開啟馬達

Function Move arm 即是開動氣動臂和吸嘴

P 12 = 1 即是開啟氣動臂的電磁閥 (氣動臂會下降)

pause 1000 即是停止1秒

P8 =1 即是開啟氣動臂上吸嘴的電磁閥

P 12 = 0 即是關閉氣動臂的電磁閥 (氣動臂會上升)

Function Arm Down 即是開動氣動臂

P 12 = 1 即是開啟氣動臂的電磁閥 (氣動臂會下降)

pause 500 即是停止0.5秒

Function Put Down 即是關閉氣動臂和吸嘴

P 12 = 1 即是開啟氣動臂的電磁閥 (氣動臂會下降)

pause 1000 即是停止1秒

P8 =1 即是關閉氣動臂上吸嘴的電磁閥 (吸嘴會放鬆)

pause 700 即是停止0.7秒

P 12 = 0 即是關閉氣動臂的電磁閥 (氣動臂會上升)

Function move arm to pos red 即是移動到Pos red位置

Set iRunning  to 0 即是重置位置的計算

Set iTarget to 4  即是距離Pos red位置,counting Button 要被按下4 次

P13 = 1 , P14 = 0 即是開啟馬達

While iRunning < iTarget 即是未去到目標位置時

P4 是counting Button

if digital read pin P4 =1 即是計算counting Button被按下的次數

set iRunning to iRunning +1 即是counting Button被按下的時候 iRunning 就+1

pause 10 即是停止0.01秒

P13 = 0 , P14 = 0 即是關閉馬達

Function move arm to pos blue 即是移動到Pos blue位置

Set iRunning  to 0 即是重置位置的計算

Set iTarget to 6  即是距離Pos blue位置,counting Button 要被按下6 次

P13 = 1 , P14 = 0 即是開啟馬達

While iRunning < iTarget 即是未去到目標位置時

P4 是counting Button

if digital read pin P4 =1 即是計算counting Button被按下的次數

set iRunning to iRunning +1 即是counting Button被按下的時候 iRunning 就+1

pause 10 即是停止0.01秒

P13 = 0 , P14 = 0 即是關閉馬達

Function move arm to pos white 即是移動到Pos white位置

Set iRunning  to 0 即是重置位置的計算

Set iTarget to 3  即是距離Pos blue位置,counting Button 要被按下3 次

P13 = 1 , P14 = 0 即是開啟馬達

While iRunning < iTarget 即是未去到目標位置時

P4 是counting Button

if digital read pin P4 =1 即是計算counting Button被按下的次數

set iRunning to iRunning +1 即是counting Button被按下的時候 iRunning 就+1

pause 10 即是停止0.01秒

P13 = 0 , P14 = 0 即是關閉馬達

選取forever是為了讓程式保持運行,

P0 是光欄感應器 light sensor

P0 = 0 即是光柵感應器感應不到光線

P6 是初始位置的Button

P6 = 1 即是初始位置的Button被按下

當 P0 = 0 和 P6 = 1 的時候便進行以下的程式

執行 function move arm

Set iRunning  to 0 即是重置位置的計算

Set iTarget to 3  即是,counting Button 要被按下3 次

if digital read pin P4 =1 即是計算counting Button被按下的次數

set iRunning to iRunning +1 即是counting Button被按下的時候 iRunning 就+1

pause 100 即是停止0.1秒

P13 = 0 , P14 = 0 即是關閉馬達

Set iRunning  to 0 即是重置位置的計算

Set iTarget  to 0 即是重置counting Butoon的計算

pause 500 即是停止0.5秒

執行 function Arm Down

再pause 500 即是停止0.5秒

set checking to true 即是完成checking 

P1 是colour  sensor 

而colour sensor 有 0-1024 的數值, 所以需要用 analog read pin 去讀取數值

colour  sensor 會因現場環境而影響各個顏色的數值

所以用家需要就現場環境去調整數值

白色是最淺色的 其數值會是最細

藍色是最深色的 其數值會是最大

紅色是白色和藍色中間 其數值會大於白色的數值並細於藍色的數值

所以在測試程式時應該測試其下限和上限

白色的數值大概是在535-529之間

藍色的數值大概是在542-545之間

紅色的數值大概是在533-541之間

而供電, 所插的pin位亦有所影響

是次是用直流電和P1

以上數值只供參考

如果以上三個情況都不成立

即colour sensor 所讀取到的數值並不在以上的範圍

P12 = 0 即是關閉氣動臂的電磁閥 (氣動臂會上升)