---
# System prepended metadata

title: 微電腦控制實驗板玩互動創意
tags: [CyberPi]

---

# 微電腦控制實驗板玩互動創意
# 用CyberPi學Python

###### tags: `CyberPi`

### 短網址：  https://reurl.cc/NR8dZp

## 一、前言

### 1.為甚麼要學程式

情勢所逼，產業界需要程序員，教育界在推108課綱，所以各位才會在這...
![](https://i.imgur.com/qpa5IDr.png)
即便是管理階層，PM不懂程式能管理的了一群RD嗎?

### 2.為甚麼要學Python

Scratch 這類圖形化程式語言，用滑鼠拉程式完全不用打程式碼，非常適合新手建立信心以及程式基本程式邏輯

![](https://i.imgur.com/abd0HOk.jpg) 

但它就相當於程式學習的學步車，並不能應用在實際的軟體開發場景，試想一下面試的時候說自己有Scratch的開發經驗...

![](https://i.imgur.com/EObSTqA.png)
## 二、痛點與方案

### 1.學Python的痛點

#### 建立環境複雜
從Python下載、安裝、設定環境變數，到設定編輯器可撰寫、執行，程式這一整串步驟，老師可以自己操作但容易教會學生嗎，學校電腦可以先設定好，那學生回家如何做作業?

![](https://i.imgur.com/34bVqbS.png)
![](https://i.imgur.com/1MGaDWT.png)
![](https://i.imgur.com/AG0ChU8.png)

#### 執行結果無趣


![](https://i.imgur.com/SDiUIPP.jpg)


### 2.mBlock與CyberPi解決你的困難

#### 完善的Python編輯器

mBlock的Python模式本身就是完善的編輯器，檔案區、編輯區、執行區
![](https://i.imgur.com/cAkaZ15.png)
還有強大的套件管理器，內容包含資料分析、遊戲設計、網路爬蟲、
![](https://i.imgur.com/dzHpjf5.png)

#### 趣味的學習過程與成果

CyberPi本身長的就像一台遊戲機，豐富的聲光效果增強學習反饋。
![](https://i.imgur.com/8mEA5JJ.png)

## 三、啟用CyberPi與mBlock
### 1.硬體簡介
硬體功能超豐富
![](https://i.imgur.com/IsnyESB.png)

USB type-C 連接電腦
![](https://i.imgur.com/FY0CdzT.png)



### 2.環境建置
下載並安裝mBlock桌面端windows版
https://mblock.makeblock.com/zh-cn/download/
![](https://i.imgur.com/XHB8Vt4.png)
剛打開是圖形化程式界面，按右上角"黃色按鈕"切換至Python界面
![](https://i.imgur.com/Wrs20ST.png)

進入Python界面，準備開始寫程式
![](https://i.imgur.com/FVso3Dl.png)


### 3.即時與上傳 
圖形與Python兩種界面，都有"即時"與"上傳"兩種模式，
![](https://i.imgur.com/vikVpzi.png)
即時模式由電腦負責運算、上傳模式由CyberPi本身做運算
![](https://i.imgur.com/Rr8koHH.png)
圖形介面中的上傳模式下，拉積木時可以同步產生Python程式
![](https://i.imgur.com/z1sPQX1.png)
但在Python介面中我們要先從"即時模式"開始。

## 四、開始寫程式

### 1.按鈕有反應
無限迴圈按鍵感測，計數器與變數型態轉換，字串處理雙螢幕輸出
``` python=
# 按下CyberPi的按鈕，同時在小螢幕顯示
import cyberpi
#按鈕次數歸零
cyberpi.controller.reset_count('a')
cyberpi.controller.reset_count('b')

while True :
    if cyberpi.controller.is_press('a'):
        cyberpi.console.println('a')
        # 在電腦顯示A按鈕按下的次數
        print('button A press '+str(cyberpi.controller.get_count('a'))+' times')
        
    if cyberpi.controller.is_press('b'):
        cyberpi.console.println('b')
        # 在電腦顯示B按鈕按下的次數
        print('button B press '+str(cyberpi.controller.get_count('b'))+' times')
        
    if cyberpi.controller.is_press('up'): # 檢測是否按下按鍵
        cyberpi.console.println('up')# 即時顯示按鍵名稱
        
    if cyberpi.controller.is_press('down'):
        cyberpi.console.println('down')
        
    if cyberpi.controller.is_press('left'):
        cyberpi.console.println('left')
        
    if cyberpi.controller.is_press('right'):
        cyberpi.console.println('right')
        
    if cyberpi.controller.is_press('middle'):
        cyberpi.display.clear() # 清除小螢幕
        cyberpi.console.println('middle')
```
![](https://i.imgur.com/7ag90dx.png)
![](https://i.imgur.com/3amE4qF.png)

![](https://i.imgur.com/gV06jDt.png)


### 2.數據顯示器

跨領域數學、物理，各式環境與運動物理量感測器，串列資料處理即時圖表繪製。

``` python= 
import cyberpi
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

x_values = []
y_values = []
n=0

def animate(i):
    global n
    n+=1
    x_values.append(n)
    
    # data=cyberpi.get_bri() # 亮度
    data=cyberpi.get_loudness() # 聲音
    # data=cyberpi.get_shakeval() # 震動強度
    # data=cyberpi.get_wave_angle() # 晃動角度
    # data=cyberpi.get_wave_speed() # 晃動速度
    # data=cyberpi.get_pitch() # 俯仰角
    # data=cyberpi.get_roll() # 翻滾角
    # data=cyberpi.get_yaw() # 方向角
    # data=cyberpi.get_acc('x') # 加速度
    # data=cyberpi.get_gyro('x') # 角速度
    # data=cyberpi.get_rotation('x') # 轉動角度
    
    y_values.append(data)
    
    plt.clf() # 
    plt.plot(x_values, y_values)

ani = FuncAnimation(plt.gcf(), animate, 1)
plt.show()
``` 
![](https://i.imgur.com/MMevR3v.png)

### 3.電子水平儀
向左傾斜亮藍光、向右傾斜亮紅光
``` python=
import cyberpi

while True :
    data=cyberpi.get_acc('x')
    cyberpi.console.println(data)
    if data>0 :
        cyberpi.led.on(data*20,0,0)
    if data<0 :
        cyberpi.led.on(0,0,-data*20)
    if data==0 :
        cyberpi.led.on(0,0,0)
```
上傳模式
![](https://i.imgur.com/sESiSF3.png)![](https://i.imgur.com/m9hxuEa.png)
    
### 4.抽屜防盜器

光感測+音效

``` python= 
import cyberpi

while True :
    data=cyberpi.get_bri() # 亮度
    cyberpi.console.println(data)
    if data>20 :
        cyberpi.audio.play_music(60, 0.25)
```

    
### 5.聊天機器人

自然語言處理，語句情感分析

``` python=
from snownlp import SnowNLP
import mkcloud

while True:
    say = input("你要說什麼：")
    s1 = SnowNLP(say)
    print("你的發言積極指數：",s1.sentiments)
    response = mkcloud.robot.chat(say)
    text1 = response
    s2 = SnowNLP(text1)
    print(response)
    print("回复的發言積極指數：",s2.sentiments)
```
## 五、留下足跡
#### 1.進入MLC平台
http://mlc.ipoe.cc/
![](https://i.imgur.com/Ofb3YBq.png)
#### 2.找到課程
![](https://i.imgur.com/ZYQn0jl.png)
#### 3.輸入認證代碼
![](https://i.imgur.com/HG6AyZp.png)
#### 4.拍照上傳
![](https://i.imgur.com/bbUkLr0.png)
#### 5.寫下心得：今天學到的CyberPi+Python，可以怎麼跟自己的教學做結合?
![](https://i.imgur.com/wv3xzDt.png)
#### 6.歷程認證
![](https://i.imgur.com/AknwaBk.png)
![](https://i.imgur.com/oAlwwtR.png)



## 六、補充資料

### 交個朋友吧

https://www.facebook.com/profile.php?id=100001957620613
![](https://i.imgur.com/9VExJ2k.png)

### CyberPi系列Python 資源

https://education.makeblock.com/help/category/mblock-python-editor-python-api-documentation-for-cyberpi/
![](https://i.imgur.com/tCLiqsr.png)
![](https://i.imgur.com/351AHli.png)![](https://i.imgur.com/eMomVVH.png)

### 原廠Python教學資源
https://www.yuque.com/makeblock-help-center-zh/mcode/mblock-python
![](https://i.imgur.com/b2C3QwH.png)

### MakeX Challenge 國際比賽
https://www.makex.cc/
![](https://i.imgur.com/GMimv6v.jpg)




