圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 5933|回復: 0

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

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

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

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


5 J7 h4 A: M/ y: F4 f1 Z% k! f+ u! V$ Z; z
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。( m. B2 z2 [) F) Q1 m
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)$ w2 Y8 W1 [# J) D2 K
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    # U  I( q# a; K$ r3 q
- u3 _  H$ v1 X1 q& u- a: M
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)( A5 J" s) S9 o8 D+ [) @

' O/ h6 @" F' O9 U, p
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    ' O: e& X* \* X+ v% O& i" ?

0 V/ N4 i( C: e2 s4 L
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。! {2 n% t1 P  L8 F3 q
3 K6 Q  p! ~/ S- r* w; c: x4 t# C- w1 _
3.童芯派第三方編輯器程式設計準備6 S8 l0 B# O9 F5 n1 M3 p/ w1 |# r
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。/ x0 U. L( x0 }! M4 t+ v6 ^. B! O

; A+ M  v& D) D3 `
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    " y: Y- }7 o( o6 q& k( ]" y( k6 U. G

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


1 r( z, E. X/ I) W& [$ i
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    # T8 `5 j* b3 Q4 h. G% w# U

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

+ r: p" k& c) f" M2 r; S3 `  m' q
查閱cyberpi API文檔見:童芯派API文檔
4 _9 m0 Q9 g$ f) g2 T
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    / ?1 p, Q, v! x) p1 b% V1 H

% z9 g7 [  K2 g% \
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
2 M, k, ]3 F1 n
5.一些程式設計案例
6 K  [7 n' y9 V7 u4 k! g* y童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
: n4 U, M6 n- h7 p8 e
功能介紹:) D9 \9 d; g4 ~1 v. x
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。+ t4 A6 P7 }* a) f, Y
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。3 x& K, Y0 w" z1 K7 ^/ Q: e& O) ]
結合藍牙模組可以實現無線滑鼠的功能。8 q5 L' \; l. c0 t: ^* W3 I" N) O

, `* p6 v! U( R: n( {8 m7 Qfrom pynput.mouse import Button,Controller
7 w; c/ i- Z2 p% j, Y/ qimport cyberpi5 L' d$ Q6 T- J+ W' A( ~7 q1 K
import time
# {" n. s* u6 n, y0 F2 e- s
$ A6 X/ E* x/ H/ y8 I( J! pmouse = Controller()7 J3 I6 g* A1 X1 `# ^; f
! d5 Y  f, F" `+ N7 c
while True:: w" q. k- a( F
   if cyberpi.is_tiltback():/ s1 B7 l7 p) m0 I& C! ]1 U7 m
       mouse.move(-3, 0)/ P+ c0 l6 O" i) B" t# O. h& }7 G
       print(mouse.position)
# J4 B5 v' B+ Z8 ^6 v8 S- n2 Q   if cyberpi.is_tiltforward():
1 n) {9 h, ?- J) n, z; R/ T8 y       mouse.move(3, 0)
  u" d, i7 N, \& ?   if cyberpi.is_tiltleft():
( T( l- \* o# |8 ~+ ]4 B       mouse.move(0, -3)2 [7 l0 X6 D$ v8 N
   if cyberpi.is_tiltright():
# I! \2 R0 ?7 E. ?" e       mouse.move(0, 3)
* W% c8 ?; Q5 m4 R, v   if cyberpi.controller.is_press("b"):3 \2 [( c/ ^6 j/ `: |& @* e' Q
       mouse.press(Button.left)6 X+ n3 h8 o# r
       mouse.release(Button.left)
& R2 [$ v; C6 J6 a3 S4 H! l       mouse.press(Button.left)
5 X1 Y. M9 y7 v8 y& ]$ c% f* k       mouse.release(Button.left)
3 M0 u9 y: O/ w) w   if cyberpi.controller.is_press("a"):# l5 P% ]$ R7 O2 v; v" i1 ^
       mouse.press(Button.right)
8 [% Z4 P/ F  ?* d4 h       mouse.release(Button.right)
3 c( b5 B5 b' f    time.sleep(0.01)4 g- d& \! C' G9 o2 y6 h

% z4 v& h; r; ^+ q. D* D! U8 k  r5 `4 {. a) d
語音打字器
7 v0 F* x+ B5 z
功能介紹:7 h- q+ n4 J- A# S& [* c
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。. O4 H1 C/ }2 R- z% g1 z$ \
將語音辨識的結果通過pynput在文檔中打出來。
: C" F& |& E0 x9 s該程式目前只能支援英文。7 [/ p" E$ y5 W- p& u8 L* W8 g& O

5 L5 z- G# x7 R& m' A0 z; Q( dimport cyberpi
+ z' C6 v" H. J$ V6 ^& pfrom pynput.keyboard import Key,Controller
8 b! L+ o  u, U3 S" ]) `7 iimport time
/ N- Z$ L8 |( O) g% N * J# U" R, Z1 p! T# v* k
keyboard = Controller()
6 E' r# I7 h1 l8 _cyberpi.console.clear(), c( p- H" Q# {8 [: _) s' Y7 A
cyberpi.led.on(0, 0, 0)* j+ q8 a3 L$ d+ v
cyberpi.set_recognition_url()
8 W: F" G" Q& P# d2 E0 R  \cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
& E# ^. ?* k5 ncyberpi.wifi.connect("WIFI名稱", "WIFI密碼")" ~% B5 U( |/ m9 m! j0 @
while not cyberpi.wifi.is_connect():
6 S8 @" a4 p: O- h" E! J   pass
5 G5 a5 \) s, {* ?3 Dcyberpi.led.on(0,0,255)
: L& V7 a: s/ p5 q/ pcyberpi.console.println("WIFI已連接")
, h& Q- t0 z$ Q5 [cyberpi.console.println("--------------")# h& |5 a- p  k6 t  _: Y
cyberpi.console.println("按下A鍵開始語音辨識")
+ O. K! n: n' `2 }# a3 ]# Xwhile True:  j+ Y0 Z% l9 K3 \
   if cyberpi.controller.is_press('a'):
1 A! T4 b) ^  m. {. \       keyboard.press(Key.space)
! u- c$ T% k) G9 {, _       cyberpi.console.clear()+ m6 M) r+ a- m) Q8 c9 A7 ^( {
       cyberpi.led.on(100, 0, 0)
2 H& H  r9 K$ E0 ~. z/ a/ o       cyberpi.console.println("開始語音辨識")
; }" ?9 ]! {  [' ]2 r9 z       cyberpi.audio.play("switch")% ~! g  s) E7 `2 r
       cyberpi.console.println("--------------")' }+ n! Y; h* O) k' n4 L
       cyberpi.cloud.listen("english", 2)
, K. N4 t/ S0 d/ P. }2 n9 I       cyberpi.led.on(0, 0, 0)
8 K$ K) `# f, U) R& A6 m       say = cyberpi.cloud.listen_result(); J7 B8 U) B- `/ `8 C; _
       cyberpi.console.println(say)
3 t+ Y) T- v' ^% M7 G( H7 B- i       cyberpi.console.println("--------------")
% H7 ]7 r2 r; c$ I' W! I7 x: E! x       for i in say:
% f! B$ V  ?2 K# U' }$ t            if i == '':7 ]( G4 G- j! F1 Z7 }. l) w# f1 h: D
                 keyboard.press(' ')
1 z' a. `1 q  |- N            else:
$ I) h" e* I) @: t3 d+ {! M7 N  @                keyboard.press(str(i))
8 R- T% z2 ^2 G' w: e# [; M                time.sleep(0.03)
# f6 c& s6 r' b4 M3 u; x
9 T% t0 `6 r- s5 _4 b# P
matplotlib音量柱狀圖

1 \6 n1 {' _9 [: n- v% o; oimport cyberpi
% F% n, Y9 {& I  ^% m( r' g/ Y0 Y: limport time: e1 V" j  H0 p5 ~" D- r) ~8 N
from matplotlib import pyplot as plt& ]$ c, q" g, O6 [. H5 P! Y' S

0 o( c9 D. j4 q( {plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
* J% H) t" |7 L: Dplt.ion()
8 A5 R) `9 z* b; N- W
5 R) z- A: \0 O9 Owhile True:# t, G' E2 a/ E' o' I* s* ^
   loud = cyberpi.get_loudness()
" m/ \* v$ J$ J8 M! H; y   plt.clf()6 `3 a# D, Z+ p, z2 ]
   plt.xlabel("數據名稱")" u1 \# v- |- R1 N& v
   plt.ylabel("音量讀值")" I# Y$ `$ C3 O, s( ?
   y_locator = plt.MultipleLocator(5). k" S! e& `( W0 n
   ax=plt.gca()# B: b4 D: o; w6 m8 C- U
   ax.yaxis.set_major_locator(y_locator)
0 x  K, R# H( J5 s& w& k, v+ M  Y   plt.ylim(0,100)
7 a  f6 I6 f: T0 ?3 e% ^; }   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
1 k' [  w; s& ]( a   plt.title('童芯派聲音感測器讀值')5 o% J8 b: c3 U+ o; U  b
   plt.legend()
3 l" T1 L' u' O* J% y   plt.show()4 n) C, d( w4 {& D
    plt.pause(0.01)! B8 c: g. C: z2 L  D

( \, d4 l2 h5 P; M1 ~4 ?& @# S5 X
matplotlib 多圖表顯示
4 \  A( s$ f/ o5 `% M; U
: x. z. `5 [: J, R( B
from matplotlib import pyplot as plt
; ^. d* G8 p2 _4 [  bimport time' z9 r# [# z* A% b
import cyberpi
+ l6 {) o, `* O" }- j; i& V
" s, b9 r; J0 j# }4 H8 W3 Z1 T) eloud_list = []! {0 k) w  N9 o- u* l
bri_list = []# f; f$ P2 b# X/ t
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
/ P/ M4 a2 [" X( Kplt.ion(), [0 W) ?2 A$ H
plt.figure(figsize=(10,10))
; b4 w7 Z$ [' K, m( T& d! nplt.figure(1)
, ?6 `* d! J8 H% p/ a& Wx_locator = plt.MultipleLocator(5)
# |- f# u- h( ^9 `! m+ Cy_locator = plt.MultipleLocator(5)9 M& X. O8 U9 o( y4 L8 v
while True:! ~5 ?+ u9 q# i0 p
   loud = cyberpi.get_loudness()  T8 k/ x8 q" e* }& E
   bri = cyberpi.get_bri()9 Q# K, Y& S8 s# e" p
   loud_list.append(loud)
  N9 T' Y" A, J; U   bri_list.append(bri)/ z8 v) _3 \, M; T6 X- ~/ C$ L
   battery = cyberpi.get_battery()  J6 r! N  f6 ~0 l
   size = [battery, 100-battery]
$ D2 O8 e: F' n   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
# y8 M( G, \" w$ R4 c2 t   ax1 = plt.subplot(221)
, y& Y$ d' L5 ^. V, Y# l+ C) `% ^   plt.title('光線折線圖')/ m' W6 ?- C: [8 g- v
   ax1.plot(bri_list)
5 K3 ]0 q% N3 E$ |/ q0 U6 j7 i8 W1 ]   ax2 = plt.subplot(222)
. D' ?( T  x5 I7 t   plt.title('聲音柱狀圖')" Q( E# T/ @& @3 J# ]
   ax2.xaxis.set_major_locator(x_locator)
) W% |5 u* z3 L+ L$ M4 @  H4 N7 o   ax2.yaxis.set_major_locator(y_locator)
: c6 u% j' c8 j# \" K   plt.ylim(0,100)9 Q* ]8 P9 v) }8 [2 X7 e7 Y
   ax2.bar('sound', loud)
: d* b4 ^) y0 o; n3 u4 R   ax3 = plt.subplot(223)
8 v8 i1 q+ ^2 F   ax3.xaxis.set_major_locator(x_locator)( C; y8 U6 A3 Z  N
   ax3.yaxis.set_major_locator(y_locator)
' a! J$ M/ b. g6 U   plt.xlim(0,100)2 o$ Q3 p1 z3 B2 u
   plt.ylim(0,100)( |6 m' |' y  E4 ~9 ]
   plt.title('聲音、音量散點圖')
5 P/ ~- q( V& K: {& {   ax3.scatter(loud_list,bri_list)
  G3 A+ }1 z, K5 I0 ]& ^   ax4 = plt.subplot(224)
5 h: I/ q: ^) _; f* X- h   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
9 [5 O, w9 r$ E9 K3 M   plt.title('童芯派電量')5 v% m  B' ^  r3 K
   plt.pause(0.2)
5 L- f/ |; v# N+ k   plt.clf()
  O9 S$ ~1 `$ y" ~: E   if cyberpi.controller.is_press('a'):
3 P  v+ U; B+ ]2 D) K, V2 ?       break+ `" ^- P" I$ m4 C
   if len(bri_list) > 500:$ g6 l, I3 @4 X& l$ N
       bri_list = []
$ k3 r' S7 W& J" u& L        loud_list = []
2 O, s9 r# y8 G2 t$ o3 f2 @: e
, j  g" y( e* a. ^3 R

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2024-4-24 04:22 , Processed in 0.024540 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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