圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8550|回復: 0

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

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

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

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

3 {$ X+ q3 L, ~- G
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    ! w( B- J# Z4 g' y- b2 @
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    2 p" ~1 n% p4 z" @; C! }' |
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。4 J; ?* X9 H; v7 T6 C
3 @  s# m1 e* \# O
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    4 f* \# S9 G# _) U

2 ]2 A+ |5 R: j0 @: m
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    2 m5 l9 z3 e! M1 o7 P* G6 c6 N

1 p5 ?, Z7 E) ]
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。) l$ [' Q3 P9 h' W

! A( E- v5 n& u5 j& T3.童芯派第三方編輯器程式設計準備
+ _( T$ O% U: n( o, u
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    1 h8 [0 G4 C# u3 K1 ~% p% D

# }. r  f% c: C3 h, r
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。* v2 _0 X2 I# s. f4 \

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


  F5 L: I5 ~+ [$ a3 o
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。- L5 r" U( }0 g  K- Y

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


& ~! Y) H" e: ^0 s0 H# ~5 H( ~9 M
查閱cyberpi API文檔見:童芯派API文檔
% t0 o( {9 O4 b. ]# \/ @* v* Y
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    * L! y. F! d; ^' w& v7 K& K

: S/ L! _, n! f3 v" c0 `. t, C, V
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
7 l; J& l# r1 c# z: k" x: w2 F7 Z
5.一些程式設計案例- X$ _. R* ?+ s3 r! `, L3 F+ q
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

& r' y8 s! Q7 h- s) K! k功能介紹:9 h" R9 ]: c0 S
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
, k' c1 ^: d) M1 `通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。0 p1 D9 s4 S6 @0 E9 `
結合藍牙模組可以實現無線滑鼠的功能。
* p! v8 D+ v. _( y
( e; [/ x4 A5 Rfrom pynput.mouse import Button,Controller
8 N9 P$ h2 _# S6 z5 `import cyberpi
9 O) k8 c( v/ t" S& O5 G$ mimport time
" r' N/ `" c' o! X; o
  q$ g4 s6 R' q8 t1 E( I; @! Fmouse = Controller()
# @4 X4 W1 |* w" Y- H
4 g  j& E1 j# Y! z; l9 cwhile True:8 d+ E4 @* U, I  Z( K1 P; p% \
   if cyberpi.is_tiltback():
( I& S5 d6 B9 A/ l/ x) N9 _6 j       mouse.move(-3, 0)  X( F8 @  ^& ]/ D
       print(mouse.position)- Q: F$ C  D! H
   if cyberpi.is_tiltforward():- R8 R' u$ r. Y2 U2 ^4 i5 Y
       mouse.move(3, 0)4 z1 a! n2 U$ w6 p
   if cyberpi.is_tiltleft():
% O* D; a# e3 _4 N       mouse.move(0, -3)
& Y. @& V  _: `6 Y: D2 N: E   if cyberpi.is_tiltright():
9 F1 ?# w  X& Q$ h9 b/ o2 V, A       mouse.move(0, 3)
% B0 r5 D) T) j8 N   if cyberpi.controller.is_press("b"):) i; ^. B& R$ |1 G5 ^' `& M( Y
       mouse.press(Button.left)' U1 U5 s# q4 d/ @- a$ g
       mouse.release(Button.left)/ ]" `9 S. M2 n4 _& S
       mouse.press(Button.left)) E* B* |4 o) F5 X
       mouse.release(Button.left), A9 ^! J3 ?6 F& i. o
   if cyberpi.controller.is_press("a"):' j9 m; L/ f' m, c/ Y
       mouse.press(Button.right)
& N9 z$ f6 H) g2 o% F       mouse.release(Button.right)
$ w2 g0 _1 J4 f" R    time.sleep(0.01)2 F7 {& @! l; t% J
0 t7 [$ w, R# [7 `  L2 v( Q5 C) Y
+ n8 s- v3 U5 d8 k- G! m. _
語音打字器

' K2 y6 T$ k- K: D9 U/ ^, k/ Y功能介紹:
- `4 m% m1 x$ D) X+ h, k5 ^利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。# R2 M! o7 X+ i2 _7 H
將語音辨識的結果通過pynput在文檔中打出來。
. q- u" R6 ?& ~  e1 Y5 z7 ^該程式目前只能支援英文。
  Y( U8 P* K, e2 K8 u" v8 f7 C- t! j/ t
import cyberpi
4 d: ^% u8 l0 r$ x( w3 Nfrom pynput.keyboard import Key,Controller
5 x0 Q% g2 z* [6 V8 e0 mimport time- K$ q8 T5 Q$ t  y

5 }+ @7 M7 ]' x, i/ Qkeyboard = Controller()9 o1 R' D( L5 T
cyberpi.console.clear(), L2 M8 W. ^9 x& |
cyberpi.led.on(0, 0, 0)% Y9 Z1 m* a, }! K
cyberpi.set_recognition_url()
- _* {" w9 G2 ^) g, @" R6 Ncyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得, L5 l6 B' Q# `7 ]
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")5 q) f' e! p! [, ^# O% C- i' b
while not cyberpi.wifi.is_connect():& N" Z- _$ ]# i8 C6 T
   pass, k0 [9 Z- {0 b* _/ N  W8 {1 c; V9 s
cyberpi.led.on(0,0,255)
: `, }% Y9 r9 g' T& Scyberpi.console.println("WIFI已連接")
- `& q  P7 ]1 D1 E2 i4 Kcyberpi.console.println("--------------")
+ j) u' Z  a! i2 U$ ucyberpi.console.println("按下A鍵開始語音辨識")
+ ?8 }: B; k3 N; d* Q3 ^while True:
& b. u  \. N/ N8 I: [8 M   if cyberpi.controller.is_press('a'):2 Q. m7 v3 s* V. y1 B
       keyboard.press(Key.space)
6 D" r$ g+ n6 b) U* ], i) T. T       cyberpi.console.clear()
9 u7 W/ c- N# }+ W/ `6 {       cyberpi.led.on(100, 0, 0)8 o/ A2 X- m5 L$ N1 ^
       cyberpi.console.println("開始語音辨識")
' s# r2 ]2 o) i: ]2 `( i5 q0 |       cyberpi.audio.play("switch")
/ s) Q: O/ F" u" p       cyberpi.console.println("--------------")9 ^9 C; y9 \: h3 o1 ]1 O# ^
       cyberpi.cloud.listen("english", 2)
4 v" e7 S+ e. f$ x' Z3 ]       cyberpi.led.on(0, 0, 0). q4 X3 i0 s" |6 b- s% R4 g! l
       say = cyberpi.cloud.listen_result()
5 W. o+ ~7 P2 ]. X) l/ E       cyberpi.console.println(say)
, K6 Q/ H; q# o2 }( C* t$ A       cyberpi.console.println("--------------")% Y3 d# w. A# U; \, {
       for i in say:% y6 u$ Q  Y4 B6 A6 m$ K& ~
            if i == '':5 P6 q2 ?' x; {
                 keyboard.press(' ')
- Y9 j' G6 k9 ~1 c            else:
: [) \6 r4 w) o: F: T/ W# d' p, o                keyboard.press(str(i))) N" C( D* ?' f8 D
                time.sleep(0.03)
" T# v; @1 j1 V# y; X' r3 g* G
: ^! ^  N4 ]( W! M2 ?1 L
matplotlib音量柱狀圖

1 W9 e0 L6 r" O; B6 E1 cimport cyberpi
- N& s& U# n: m6 o! ximport time' P5 A5 i) W) i6 r3 Z1 Y
from matplotlib import pyplot as plt* Q& ~$ \, P. A8 t

. }( ^) G9 T% e4 e( U5 [plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
, L$ O7 ^8 g% ^# E( E. ?; S" D4 [plt.ion()
) D  s* G" h3 k' Q* f+ s" ~   Z( l! b& p  Y- H: o
while True:
& N- q5 G, ?0 A$ C# _: v. v; S   loud = cyberpi.get_loudness()
# X2 H& k: g0 o" {   plt.clf()
8 N1 t+ q+ ^/ `" D. }" f" p4 P' f   plt.xlabel("數據名稱")% _* I# T& ^0 G
   plt.ylabel("音量讀值")/ e" F; Y) c5 K0 [1 |1 E1 D5 @  |
   y_locator = plt.MultipleLocator(5)
' Q, K3 ~& P- h   ax=plt.gca()+ Z' h) d6 @7 w" o6 d& F2 L$ f
   ax.yaxis.set_major_locator(y_locator)  }: g4 @8 W  ?& O
   plt.ylim(0,100)
* [! G) A/ \0 k2 y   plt.bar('音量', loud, align='center',label=f'溫度{loud}')0 h% u$ c. S0 G0 Q; a& x* i
   plt.title('童芯派聲音感測器讀值')
- R) M: S2 h, J& P: j  x   plt.legend()
! ^/ h6 @. Y* t; ?* G" O   plt.show()
! w1 L$ U% z" h$ C    plt.pause(0.01)' J% ]* F+ \+ g: H+ I- o

1 H- }: X* O( m4 o1 v* a, h
# [7 Y, p. d0 r1 [3 Z- X# T) Umatplotlib 多圖表顯示0 {3 g' o- Z/ _4 ]+ o% h3 l

3 D$ ]/ v' L- p+ f0 z4 hfrom matplotlib import pyplot as plt
6 s8 s5 m" J7 k2 D8 ]1 zimport time
8 t" a) j2 b( A: p! v3 l! Y' H8 rimport cyberpi+ X5 O4 x7 H4 J

: f6 R+ i/ K* o! ~! j4 a- d6 Jloud_list = []
: d+ B* @+ K1 M8 S+ V9 u5 K, Ubri_list = []6 V4 H, g* B6 p) V, \* O
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體: E/ f" j+ K& Q, Q: p; M3 I
plt.ion()
  Y! s7 S2 z7 w6 _: ?+ d1 [& nplt.figure(figsize=(10,10))
5 v- c+ {- m( M# O7 w$ s8 ?5 aplt.figure(1)
' D8 a+ E) H/ g- }7 j1 }  Cx_locator = plt.MultipleLocator(5)% ~' v& z) z$ @- `# K
y_locator = plt.MultipleLocator(5)
5 c! Y% U6 j8 \( e4 Y7 p4 ^( G% zwhile True:
, C$ C4 V/ n: S! x2 }& g/ i* X   loud = cyberpi.get_loudness()% m$ ^6 {0 |  [9 w
   bri = cyberpi.get_bri()" E/ l' |4 \) `8 S
   loud_list.append(loud)
! L- w9 ~( E+ p; D   bri_list.append(bri)
) D/ C, R( i( B' ~! P$ y# F9 q   battery = cyberpi.get_battery()
8 ]& }3 I6 x; I1 W5 M) k   size = [battery, 100-battery]
& F+ }- }2 h9 E% }   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']/ `! V  ^8 ]5 F: h6 M% F
   ax1 = plt.subplot(221)
' J, v8 y7 R) ~* K! x2 X   plt.title('光線折線圖')
# O7 D2 e' W( b- O   ax1.plot(bri_list)
: T) \+ Y2 L8 O; s; c6 J9 s& d   ax2 = plt.subplot(222)
" ^. k+ ^% y* n   plt.title('聲音柱狀圖')2 k$ O0 a8 N- G6 z7 Z' p
   ax2.xaxis.set_major_locator(x_locator)! R+ A3 i6 B" v% a1 U5 R
   ax2.yaxis.set_major_locator(y_locator)
4 C7 i# M  z) o& o& o   plt.ylim(0,100)
. O  N+ O  a/ O% U) F) u. x! x   ax2.bar('sound', loud)0 l. ?& S7 g! l9 c- P
   ax3 = plt.subplot(223)! V, u3 z1 `( q  |1 O. F. a
   ax3.xaxis.set_major_locator(x_locator)
% U* e! {" m& i: x   ax3.yaxis.set_major_locator(y_locator), F- P4 P* s1 s( `
   plt.xlim(0,100)* [6 [7 e* O8 E" o/ A* P: C# p0 J
   plt.ylim(0,100)
/ F# Y- y1 X. v   plt.title('聲音、音量散點圖')
/ [0 H( W. f* F7 X3 v. F* g+ F   ax3.scatter(loud_list,bri_list)+ |3 O3 a+ ?  B! ~
   ax4 = plt.subplot(224)8 _; i0 I+ G. t  s' V; D
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
- \/ R& D/ j% Z# [- k   plt.title('童芯派電量')
1 V/ e3 Y2 V  e' ~; D   plt.pause(0.2)5 z8 U0 ?7 @3 R" f: e$ q
   plt.clf()7 F8 ~! O: J; f- k$ ?
   if cyberpi.controller.is_press('a'):$ A5 N2 p  z, C& V
       break; J* [/ p3 Q0 P
   if len(bri_list) > 500:- z% L" F  s/ G6 _
       bri_list = []
% z" A8 B: `) C2 u1 x* T$ z) ^4 y        loud_list = []8 d/ Y% Z& e) F( k) L

& S: @6 \/ z. Z" f& _4 P

本帖子中包含更多資源

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

x
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

QQ|Archiver|手機版|小黑屋|圓創力科技有限公司 IOP Robotic Technology Co.,Ltd Tel: 07-3924582 Fax: 07-3924001

GMT+8, 2025-12-5 20:26 , Processed in 0.028681 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回復 返回頂部 返回列表