查看: 9852|回覆: 0

童芯派搭配第三方Python編輯器使用教學[轉載繁譯]

[複製鏈接]
magiccar 發表於 2021-7-2 15:47 | 顯示全部樓層 |閱讀模式
本教學譯自Makeblock官方教學文件,原文點[我]
本教學文件以windows作業系統環境為範例,Mac使用者可以參考結合實際情況進行操作。
快速教程:如果您已安裝了Python環境和第三方編輯器,請跳至第三步。或在您的編輯器配置的Python環境當中安裝pyserial和cyberpi程式庫即可實現童芯派第三方編輯器的程式設計。
pip install pyserial
pip install cyberpi
2 b: {  V* K5 }$ |- F& R& Q
1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。  y8 A1 F  B; Z

Python Windows環境不同版本下載頁面:Windows Python下載

Python Mac OS 環境不同版本下載頁面: Mac OS Python下載

; z" F$ g( R6 p
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    , _$ g+ u$ X9 Z
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    ) H: x0 V* s: g3 K7 J3 c3 l) n( |
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。$ @7 D; ~& v! W. [

  z/ ~& Z; E! x- g
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    * k! [- t: _" }1 U9 {" Y

8 ?" S4 ~  P, X9 \6 r4 b3 V
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    2 \# k& |1 P  G

9 y" n! U# E2 N& q
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。! J: _4 {5 X1 H  g" d& h4 L

  I0 R1 M+ C' A1 N3.童芯派第三方編輯器程式設計準備+ i( T' s8 ^1 Y1 I
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    8 I7 l4 v2 p4 E  k
- j, E' ^% K% h# m2 T7 c. @5 b: F
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    8 H' v; J7 `9 l1 R6 i0 G

在cmd視窗中輸入pip install pyserial 並按下Enter,等待安裝完畢。


0 {9 |* s5 p& c: g
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。3 P- F' D: X2 v! e7 t" ~

在cmd視窗中輸入pip install cyberpi 並按下Enter,等待程式庫安裝完畢即可。


4 r: t3 m4 x3 Q5 F) |
查閱cyberpi API文檔見:童芯派API文檔

& u# i* S) B9 G: M' z1 r6 d2 {, H
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    " |' U0 e  q: y$ r& j6 a5 h: @; ?, b

+ j! D0 N$ w( r. Q
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

, ]2 ]% T" F# J" g; y5.一些程式設計案例' q. V. V7 V1 k1 Y" S- r: r
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
+ T) X& T. J* {, D# _# y4 M- I
功能介紹:4 ?" j+ F2 x" E5 J) W1 O- f" H
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
" D* Q8 o" L. `' ~9 _通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。; ^" x2 r3 I/ I4 I( c3 ?
結合藍牙模組可以實現無線滑鼠的功能。
6 [) x* T' R3 v9 `; T! |" k6 E! e$ R6 E- m6 V2 B
from pynput.mouse import Button,Controller' a1 T. U4 x; R9 \' \( \
import cyberpi
" p. k5 W7 U$ p2 I4 w- himport time
5 l3 @' w* w1 D3 L- c) B , n, @1 V; @4 n( u, U( Y# z: m
mouse = Controller()
: y( L9 E/ G1 W . L/ b) J4 e* E4 A$ s: M
while True:* H8 L+ X  W3 Z! x
   if cyberpi.is_tiltback():. Y3 x* j) J: Y0 j5 J+ Z& A
       mouse.move(-3, 0)
3 b+ L6 `1 n( ^       print(mouse.position)
7 }7 }& l7 v6 R" o   if cyberpi.is_tiltforward():
0 b4 k2 P. H' W) V! J3 T       mouse.move(3, 0)
3 q; C7 _( L5 e, O- {   if cyberpi.is_tiltleft():8 k/ m- ~* m) m
       mouse.move(0, -3)
: [' y2 u; \- m- Z1 [! U$ I! q   if cyberpi.is_tiltright():
9 ?# D2 M6 e$ J, i& t       mouse.move(0, 3)  Z7 C) s3 V; q
   if cyberpi.controller.is_press("b"):
: }  h# F8 R9 J* Q* o- Q. D       mouse.press(Button.left)8 ~& f7 ~; Y8 A
       mouse.release(Button.left)
# K# s% S0 B4 F" w) U) e       mouse.press(Button.left)
' n: j: Y9 L$ V: u# U4 S  R       mouse.release(Button.left)
! Y) ~. [/ L6 h0 W% F3 I# G   if cyberpi.controller.is_press("a"):
, y% w7 w  r. ?7 Q; g& ]: J& s       mouse.press(Button.right)
6 u2 [) z* W- e       mouse.release(Button.right)/ k$ M5 j6 w, z) g- p" P
    time.sleep(0.01), M- Z/ y8 w% K# |9 p

' `# x* J% }# q2 U8 ?
& }+ z" `; B8 W/ ?
語音打字器

3 _, K* e+ [% O8 E$ E功能介紹:
0 z& W0 H5 }7 Q0 C/ K! S7 h+ g利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。0 z7 A! R# K! Q5 _
將語音辨識的結果通過pynput在文檔中打出來。" t! m# p. l' D" u
該程式目前只能支援英文。
7 u3 H  |: Q0 ^. M; Q* J8 a  S1 ^- C# K
import cyberpi
" F  r2 m7 R: e, r2 Zfrom pynput.keyboard import Key,Controller# y0 F: R1 m  Q
import time
$ Y. h6 D3 q. f% r! w3 b$ h
2 h4 D( R7 l# I6 E) Y8 g& Zkeyboard = Controller()
+ c- q/ \, b: k3 I. s/ _cyberpi.console.clear()
/ @4 k3 \1 G7 u# E- ~- H' ucyberpi.led.on(0, 0, 0)2 c4 ?- E$ @8 T- O/ T9 N- N
cyberpi.set_recognition_url()
' L# I. B% G* f3 n  M/ [cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得$ I/ P! B5 f* }
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
& G+ I, d* d" X+ `) }5 _while not cyberpi.wifi.is_connect():
+ U! f- m# j  J/ s   pass( s5 L5 f4 W3 y' X
cyberpi.led.on(0,0,255)2 O* _5 h2 e6 a, _0 I. R
cyberpi.console.println("WIFI已連接")
% [9 \  G% `5 o( B% Ecyberpi.console.println("--------------")8 ]' |: j1 m2 a. g$ B) _" M. Q" [
cyberpi.console.println("按下A鍵開始語音辨識"). ^  e2 [' K& l' O: r
while True:
6 }# X' w0 B( V# z4 f/ i# X5 N   if cyberpi.controller.is_press('a'):8 R  c; l% W8 @+ E' X1 ^% {
       keyboard.press(Key.space)# g  z; T0 e" X" U1 ?' l" U
       cyberpi.console.clear()* L! l: Z( q1 j  F) @
       cyberpi.led.on(100, 0, 0)! E& q  D4 b  x6 M8 b( o% D; T
       cyberpi.console.println("開始語音辨識")! p+ u6 W  e9 t- D4 ~
       cyberpi.audio.play("switch")$ a7 x$ D& @0 W  w
       cyberpi.console.println("--------------")
, b$ C; X5 I% W       cyberpi.cloud.listen("english", 2)
3 F" z) s) ^# a! \( L6 E& f       cyberpi.led.on(0, 0, 0)# A$ f  T% A9 R; o, g1 P. i) p- P0 H
       say = cyberpi.cloud.listen_result()
" t1 F% z5 c9 s  F       cyberpi.console.println(say)
9 t# f, I8 a# Q% X       cyberpi.console.println("--------------")
( p, W% l% ^: |, ]       for i in say:  ^7 Z( N: b1 h, x  ~% }
            if i == '':! j6 u1 B6 m% V# _/ M. A$ t
                 keyboard.press(' ')1 R" o/ V2 c, O( `. A) Z- M5 v
            else:
2 E5 B* l6 q8 j- f* r2 y! O                keyboard.press(str(i))+ H+ G5 ]; V" s8 `' s
                time.sleep(0.03)
6 P+ V( L( ^1 V( D. F

/ s- o; Q( o9 @, pmatplotlib音量柱狀圖
$ ]# I0 Y: v, [7 W9 y/ \
import cyberpi. ^5 J- g& R& k$ v' A4 ?
import time9 E( r' ~2 O9 ?# F* q) h8 T1 `/ ]
from matplotlib import pyplot as plt  `% {3 B! D7 _, M5 S+ d' n
# k, o2 H7 l' l  Q  ~/ a, E
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']/ v+ u7 j* Q: w3 z
plt.ion()
( ]2 o2 {- d3 V
7 F& \- J. b4 Iwhile True:2 m2 {0 e& ~2 Y  J. l
   loud = cyberpi.get_loudness()
* l- c6 G+ S+ \$ K5 ^" ?   plt.clf()$ w1 Z2 K$ O. y) I3 F* z+ _
   plt.xlabel("數據名稱")
9 I% a" g2 |0 y( E+ K7 @& x% z1 ?   plt.ylabel("音量讀值")4 b( k! o- |. j5 g
   y_locator = plt.MultipleLocator(5)
9 z9 k, C: H7 a  S! {# F6 G' T5 _   ax=plt.gca()! L3 d3 f: `2 ~* ]: p3 x. C
   ax.yaxis.set_major_locator(y_locator)
+ ?8 l9 ^8 ~7 V4 o5 G/ @" u   plt.ylim(0,100)! _* d( P: D2 L% ?
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
$ f# _, D. J7 q9 V/ V' F   plt.title('童芯派聲音感測器讀值')
' F5 Y  l4 f0 l+ c   plt.legend()" B- a0 i: Y8 v2 O2 `
   plt.show()
2 M6 q5 O/ h; W/ V" G, b/ j/ o    plt.pause(0.01); f. K8 H( E( [
, V8 C. w# r8 y7 H
+ |4 C/ O3 h3 z: {
matplotlib 多圖表顯示
* ?4 y! {& G. Y& P# Q! ?- s/ Y

& u- e) X  D* j% u) P- w" Ffrom matplotlib import pyplot as plt
7 c4 @  G  C8 O) g+ C1 V) @import time
( m2 {5 v) i8 aimport cyberpi
8 B2 }$ g+ a! _0 x4 `8 C+ [$ e  Z
' R$ M! R; R4 ]0 B& eloud_list = []
7 J$ V9 k' f% L8 Q. Xbri_list = []
" ?1 b2 b0 U4 W+ gplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
, W7 q1 G% j2 M% A" Cplt.ion()
2 W9 X2 F8 e3 b( M; L, hplt.figure(figsize=(10,10))+ `9 B" X! S1 Y" C2 p0 F( b! e
plt.figure(1)3 B: J# n4 ?( w7 Z$ j
x_locator = plt.MultipleLocator(5)
. t( Y) t6 h9 m! [* m; ]y_locator = plt.MultipleLocator(5)
. H5 r' M/ |- {* x8 [, Ywhile True:7 g( C% n  }' x/ M1 w1 q8 k
   loud = cyberpi.get_loudness(); N3 Z; h; J: ~! ]6 b2 ~
   bri = cyberpi.get_bri()
- Q" w. ^( r. ~& Y% r' A" q   loud_list.append(loud)
9 @# l$ i. x5 w   bri_list.append(bri)  M7 J0 @" o* W
   battery = cyberpi.get_battery()
9 D; h; x( }1 s" X. S   size = [battery, 100-battery]5 k/ o- ~; h7 o- P! a8 r
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
$ S2 `5 O8 T; G/ h2 i   ax1 = plt.subplot(221)
: L. \6 T* D4 d, G' q   plt.title('光線折線圖')
5 z6 e9 d: h* Q$ S: ^   ax1.plot(bri_list). X0 o: W) a4 q$ g
   ax2 = plt.subplot(222)
% z7 t- u4 q+ @2 T   plt.title('聲音柱狀圖')8 ]" r8 Z& E; f- I! X: B
   ax2.xaxis.set_major_locator(x_locator)+ T) y( }1 d6 }1 D3 M
   ax2.yaxis.set_major_locator(y_locator)" ^7 _  g9 v% Q0 Q1 B* t
   plt.ylim(0,100)
& k) X9 m( w4 u" S' p+ B+ e1 v   ax2.bar('sound', loud)& c$ }3 b, T- j8 [5 [6 b
   ax3 = plt.subplot(223)
% p  l: e4 h' h, D7 b$ D   ax3.xaxis.set_major_locator(x_locator)
( Q0 P% T7 Q0 K8 A& n   ax3.yaxis.set_major_locator(y_locator)
. O* y7 \5 ~; ]   plt.xlim(0,100)
4 e; m8 z8 c; b+ }& T   plt.ylim(0,100)) _" E; J! X: ]- \- f
   plt.title('聲音、音量散點圖')5 o) m* y+ n9 ]3 N
   ax3.scatter(loud_list,bri_list)- r  E/ B5 Q- e" {6 H$ `, H
   ax4 = plt.subplot(224)2 c! ]6 V, t0 x7 Y& S
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
; z9 g$ y5 R8 `3 ~9 U4 e- M   plt.title('童芯派電量')
& K4 I" N0 B3 ?+ H   plt.pause(0.2)
' U/ S1 O  ^! e4 v* ]   plt.clf()
" o* O# V( N( L" s" ~1 e   if cyberpi.controller.is_press('a'):4 ?' i# _! ~) q4 c9 E- K3 A
       break
2 r' Y% `( q0 [) }: u   if len(bri_list) > 500:
( m! m6 E" j5 G# V( n- x5 b" M       bri_list = []# y7 m; G8 t3 n8 C) c
        loud_list = []
- X( ]: \( `/ `2 K8 [
* g, Z* W1 D& c, i  |

本帖子中包含更多資源

您需要 登入 纔可以下載或查看,沒有賬號?立即註冊

×
您需要登入後纔可以回帖 登入 | 立即註冊

本版積分規則

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版發帖返回頂部