冬營營招生中

2019年10月16日 星期三

[micro:bit JavaScript] 函數使用



藉由遠端送來的字串(也許是透過廣播或串列的方式), 將字串進行解析取得函數名稱及參數, 決定呼叫micro:bit上那一個函數..

Note: micro:bit 上寫的Javascript是寫成typeScript, 其工具會再將typescript轉成javascript後才執行..










2019年8月23日 星期五

教式教育學習標準-- CSTA K-12 Computer Science Standards




程式教育應該要有個學習指標,就像教育部定義一個國小生數學應該要會到什麼一樣? 每一個年級, 要教到什麼數學內容及程度? 我們做程式教育的.也應該同時思考這個問題。然而教育部頒佈的最新108年度科技領域課綱, 即課程綱要,並有沒有明確的指標,只有學習內容的方向[1]。

對於一個想要認真看待程式教育的家長, 最常問題問題是, 那我要怎麼學? 要學習那些? 如何知道我真的有學會了? 所謂學會的程度是指什麼? 坦白說 由於目前程式教育並不像數學、英文一樣那麼明確,所以每個老師有每個老師的教法與教學的觀點,至於學好或不好都是個人感覺, 因為既無標準, 也沒有學習指標可以對照...

所幸,可以參照美國CSTA K-12 Computer Science Standards (計算機科學教育標準) [2] 來建立台灣程式教育的學習標準。CSTA K-12 Computer Science Standards 共規劃出5個等級,從國小到高中。 CSTA K-12 定義出每個階段在Algorithm and Programming 領域所必須學會的內容(學習目標)。

- 1A (kids到Grade 2)
- 1B (Grade 3到Grade 5)
- 2 (Grade 6到 Grade 8)
- 3A (Grade 9 到Grade 10)
- 3B (Grade 11 到Grade 12)
註1: 台灣與美國學制不同
程式學習應該有完善的教本,不同主題單元有對應的學習指標(例如採用CSTA標準)。這就像每個學校在用康軒、南一、翰林一樣。雖然每一家的教科書在編排上與教學邏輯上不同,但整體學習目標和學習指標都是相當明確的。同時,一個好的程式教科書或學習書也應該達到到引導性與啓發性的目的,有系統性編排與實地操作(不一定要撰寫程式語言),而將知識潛移默化傳達到每個學生的腦袋裡。





註1:

References: 

[1]  在108科技領域,從國中階段(從7年級到12年級) 開始實施,資訊科技學習內容分為六個主題:「演算法」、「程式設計」、「系統平台」、「資料表示、處理及分析」、「資訊科技應用」以及「資訊科技與人類社會」。


一、演算法:包含演算法的概念、原理、表示方法、設計應用及效能分析。
二、程式設計:包含程式設計的概念、實作及應用。
三、系統平台:包含各式資訊系統平台(例如:個人電腦、行動裝置、網際網路、雲端運算平台)之使用方法、基本架構、工作原理及未來發展。
四、資料表示、處理及分析:包含數位資料的屬性、表示、轉換、分析及應用。
五、資訊科技應用:包含各式常見資訊科技應用軟體與網路服務的使用方法。
六、資訊科技與人類社會:包含資訊科技合理使用原則,以及資訊倫理、法律及社會相關議題。
 
[2] CSTA K-12 Computer Science Standards
      https://www.csteachers.org/page/standards



2019年7月27日 星期六

[python] microit控制RGB LED -七彩霓虹燈


原理說明:


RGB LED 和一般單色LED控制原理相同, 只不過現在有RGB三根腳。為了做出七彩霓虹燈的感覺, 我們可以利用PWM作為輸入, 透過duty cycle的設定,使得R、G、B分別有不同的的程度, 例如,紅可以有256 階紅的程度。



======================

PWM
PWM (Pulse Width Modulation) , 此硬體micro:bit 己內建, 它可以重覆產生週期性的波形, 在每一個週期中可以有著不冋的pulse長度, 而pulse長度和週期的比例就是duty cycle, 例如25% duty cycle, 就是pulse 長度佔了週期25%的時間. 或者說pulse佔了25%而spaces佔了75%。




1.) PWM頻率?
使用PWM會須要設定頻率, 而頻率為週期的倒數,表示數一下(clock tick)的時間.若PWM為10HZ,表示數一個tick要花0.1秒.

2.) 10 bit bit 或12bit PWM ?  
PWM 10bit表示會數1024下作為一個pulse/space週期, 12bitbit表示會數4096下為一個週期(0~4095). 一個10Hz的PWM pulse/space週期時間,就是看你數完一輪的時間, 若是12bit, 就是4096*0.1=409.6秒

3.) duty cycle ?
就是pulse要數幾下,以12bit為例, 若數1024下, 就是佔了4096的四分之一, 也就是duty cycle 25%. 至於duty cycle實際有多久, 就是數一次(clock ticks)的時間乘上pulse數幾下(pulse count)


總結, 同樣都是duty cycle 25%,但pulse時間長度可能是不同的, 因為PWM頻率是不同的.
duty cycle只是描述比例關係, 仍必須對不同硬體給定其所需要的頻率. 因為pulse和space切換時間若太短,有些硬體可能無法工作,因為來不及到High就又被切到Low....

那RGB LED該給的PWM頻率是多少呢? 100HZ~200HZ, 這可以讓RGB LED在不同duty cycle 下可以產生不同的顏色



開發工具:



實驗材料:

  1. micro:bit 
  2. Thunder:bit
  3. microUSB線

成果展示:




https://www.youtube.com/watch?v=oaWK9EmfhPo

範例程式:

2019年7月21日 星期日

Python for micro:bit




https://github.com/beyond-coding-tw/nexusbot.git

[micro:bit x Nexus:bit] 電吉他(開文章前請先關喇叭)







在這篇中,我們要用Nexus:bit擴充板做一個簡易電吉他:按下A鍵時蜂鳴器會響,並根據micro:bit的轉動角度(旋轉感測值-roll)來調整音高。

當然,轉動角度要視我們面對micro:bit的方向而定。在這個範例中,我們將以右手拿著Nexus:bit,所以當micro:bit往手肘方向轉時,roll角度值會變小,反之往外轉會變大。而我們希望往手肘轉時音高會提高,往外轉則是降低。

因此,首先我們得限制讀到的旋轉值角度在-60到30度之間;接著,我們把這個值對應到高音C(-60度時)至中音C(30度時)。如此一來,當你按住A並在這個區間轉動micro:bit時,聲音頻率就會改變了。

「中音C」與「高音C」的積木得從「音樂」區拖出來用。或者你可以直接輸入你想要的聲音範圍的頻率

為了增添點變化,我們也在「重複無限次」迴圈內加入讓RGB LED亮起隨機顏色的積木。另外這兒加了25秒延遲,好讓蜂鳴器的聲音能稍微穩定點、但又不至於拖太久。