圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8494|回復: 0

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

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

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

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

4 \" Q# R3 w0 h! x
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。& ^+ M( K7 T' A# l& O
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)& ]! ^, X# f5 A3 |1 l! Q# p
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。/ D3 Z0 I5 B- ^4 e( g/ t

2 B% u% ^) x8 [9 s, H6 f
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    ! u- \1 ^2 [3 x* l: f& }* |: U
/ `7 O# j% p6 x5 i0 M2 j! L
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。5 G& {9 ?. q4 F. E$ \/ [
% f) O1 i; J( b" q8 Y7 g4 D
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。+ U9 h# P+ n! m" Y
) V0 R" `5 b7 x! q! m  o# ?! z/ T
3.童芯派第三方編輯器程式設計準備4 h# ~) x) T5 \" ?5 e2 o$ Z! p
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    : g# y/ v8 d2 P% ^& N

3 B& `3 O+ K, K' ~2 W) |! P, w9 h
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    1 [4 `; W. N+ r1 [& b. t% [5 \* A

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

4 [2 ?" b; p3 w% j
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。' I: z5 E2 `% _' p

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

) x* f% D3 z$ H( o+ F
查閱cyberpi API文檔見:童芯派API文檔
- ^! _: g; E  T1 i( Y) P- X! T
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。% _& N* o& s5 R0 @
( e# Y- [) A$ |! V' h& j9 F
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

. `8 O1 c+ D  ~+ k5.一些程式設計案例
/ S& E1 p- N2 O! l* e童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
: S8 F# ~3 s2 K4 Z
功能介紹:% t3 P; G% t5 v/ J9 ^
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。8 H: P# S2 S: @8 F8 j
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
0 d5 {  V$ E- W, @8 a. d結合藍牙模組可以實現無線滑鼠的功能。
7 W4 ^+ m9 R( @7 l
6 g$ E" u# ]  O7 ]( Ifrom pynput.mouse import Button,Controller
+ w- j5 g, E+ e( w6 f# cimport cyberpi, h' a5 [: Z3 ]6 N. L" L+ g6 l& I
import time/ c5 ^# d" L; p6 \) a0 A- ~. ^
( o" j, j" \6 H6 Z2 g, O1 `
mouse = Controller()
/ j+ f; x. G' e' g- N( Z3 ^. i $ c+ _5 |% E5 @0 S
while True:
" p; M: a; \% G1 e% P   if cyberpi.is_tiltback():8 R8 G$ E; Y( e2 L& j* T! i" {, R
       mouse.move(-3, 0)/ L8 n2 m$ S1 U/ `
       print(mouse.position)5 {1 E5 A8 `2 R
   if cyberpi.is_tiltforward():( A+ D7 f# J( R- B4 ^
       mouse.move(3, 0)1 h1 ~) f* h  A( v' {1 L# A
   if cyberpi.is_tiltleft():2 e% W3 i# U2 D
       mouse.move(0, -3)) A) m) M* i5 p; z0 e& j
   if cyberpi.is_tiltright():
5 E7 `0 y' p, O6 W9 S       mouse.move(0, 3)
$ @) C  a+ Q# o- I4 Z  O7 w   if cyberpi.controller.is_press("b"):0 o& R' ~" \; b: O
       mouse.press(Button.left)' Q+ z, S' `* l) h7 S+ b
       mouse.release(Button.left)5 [; @+ _3 h0 j- [- D
       mouse.press(Button.left)! Y# W9 {8 o$ \
       mouse.release(Button.left)$ f' C0 V2 t3 |) S
   if cyberpi.controller.is_press("a"):2 a* \: K) A& b1 L( ?: ?8 ^. w& f& ~+ d
       mouse.press(Button.right)
' P/ c9 C/ j  T, {1 U       mouse.release(Button.right)
) x# l) J0 |# o. s: K2 b5 |- D    time.sleep(0.01)
& G! m& y/ O9 F& p) M$ }- g* A8 H" S
, m4 w2 r$ T: B' p( K& k+ l% Y
語音打字器
: S# B; g1 b) S2 h# f
功能介紹:/ j) E2 |, M) N, Z
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。7 M+ w9 `+ M1 v4 _. J
將語音辨識的結果通過pynput在文檔中打出來。/ h) S# b& A* X. G" j* }
該程式目前只能支援英文。3 k0 ?% l5 g  \+ [$ i$ o6 E) ^

5 F0 T1 l$ m# q1 U. Limport cyberpi
% r. G" e4 ]( V& b; {  a) G4 Dfrom pynput.keyboard import Key,Controller- N% o, z: k3 p2 p, E- g9 i
import time: D: v' E; X1 \' f9 k
( c8 m  v5 P! ]" B  a
keyboard = Controller()4 k" U5 t: j# r* n+ E" Z: m
cyberpi.console.clear()
* j$ U1 P7 }& ycyberpi.led.on(0, 0, 0)% g$ M" Z4 n8 i; Z
cyberpi.set_recognition_url()5 E1 k' f0 w4 X: M  T/ A% B$ Y
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
& i/ b% q$ J/ @" @3 gcyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
3 m  i/ ]( C% o/ S, awhile not cyberpi.wifi.is_connect():' X! L6 ~" L+ Z# h. E5 g1 m. u
   pass
( t9 q) `7 k9 r6 Zcyberpi.led.on(0,0,255)" l4 C' K8 m/ e. N
cyberpi.console.println("WIFI已連接")
$ l: c8 t# [' p5 Q* p0 m/ ^* k" V% ncyberpi.console.println("--------------")  _* B9 b0 h: P; i: J
cyberpi.console.println("按下A鍵開始語音辨識")
1 H, x* B, a$ Q$ k! K' Awhile True:* |- ^9 a5 ]7 {  V$ K
   if cyberpi.controller.is_press('a'):
5 m+ i. G4 g) K, \       keyboard.press(Key.space)9 ~4 J; Q' k4 |1 w9 @  [1 d
       cyberpi.console.clear()
& V* M. U  ^* C( G+ T  }% A       cyberpi.led.on(100, 0, 0)
( j9 [# _4 O. p2 s) C8 ~       cyberpi.console.println("開始語音辨識")
9 M$ J7 {. y3 o& w) n5 C8 z( e0 u       cyberpi.audio.play("switch")! \2 ?$ N6 z" A0 s2 [
       cyberpi.console.println("--------------")
  P6 z- c$ y! f0 u/ Q# E       cyberpi.cloud.listen("english", 2)6 o( P& T/ q- j5 L' n; _
       cyberpi.led.on(0, 0, 0)8 M; D6 i% w4 n" P- ~
       say = cyberpi.cloud.listen_result()' V0 T! i7 ~' O! }% q4 ~* u
       cyberpi.console.println(say): o1 g7 {. N/ s% y/ F, _! M" q, {
       cyberpi.console.println("--------------")1 M4 ]& l, ]3 T4 N. Q
       for i in say:
& B5 c  G+ [- j; B$ z            if i == '':
  T0 D% Q1 e. I- V0 J0 R                 keyboard.press(' ')2 T& y. Q/ x" F1 I. D
            else:; \3 `8 j7 u, z/ u
                keyboard.press(str(i))
& N4 B& x% }8 `4 U' L3 H6 k                time.sleep(0.03)
' [8 G4 O( Y) N* S2 H0 H

( \" @( K$ i5 Wmatplotlib音量柱狀圖

: A  e' C1 \: j) d6 A0 i! C( N$ Vimport cyberpi
5 o/ [% Y$ y) wimport time
( d( a9 k; O/ bfrom matplotlib import pyplot as plt
1 z: t8 M- x  B4 d2 ^
2 B/ A7 F8 _1 b) xplt.rcParams['font.sans-serif'] =['Microsoft YaHei']
9 ]5 M1 n  S/ H: |; lplt.ion()8 n3 f% @6 j3 i5 H; D' W

/ `3 _6 E. {4 t1 {0 Lwhile True:
9 s# o  Y- x8 W2 I8 O! S   loud = cyberpi.get_loudness()
$ m7 O, W& p  q4 s: C" ^: y: \5 ~3 J   plt.clf()
( h$ ]6 ?8 c9 W8 [& `5 \   plt.xlabel("數據名稱")
: @$ F3 ?4 f( a$ k+ Z   plt.ylabel("音量讀值")8 Z2 O5 x. O* n* Y, k
   y_locator = plt.MultipleLocator(5)
8 x& q: q# m/ A& U& n) e4 K   ax=plt.gca()
, S& u( ]" T* R. X7 n   ax.yaxis.set_major_locator(y_locator): @1 W/ s6 B6 I0 a* Q: a  `
   plt.ylim(0,100)
7 \" Z/ x5 j7 m( D: C8 l   plt.bar('音量', loud, align='center',label=f'溫度{loud}')2 i5 F- |& m4 ]3 d1 K! d* M
   plt.title('童芯派聲音感測器讀值')
1 E2 k" i; }3 H& e   plt.legend()+ m8 a# \( X8 b0 U2 c+ k' L
   plt.show()# t$ b/ m  @. v
    plt.pause(0.01), `( J' ]- ?- I: C" O
; o9 f, @3 y- j% T

0 M5 L6 }: h" z5 lmatplotlib 多圖表顯示
4 V* P+ n+ r9 ]2 C

# s  b+ n* ^% P' t* g. C' ^. k1 _from matplotlib import pyplot as plt
- T+ Z$ E# {5 I' G) wimport time' R8 L6 @/ [# o' A; \5 X( O
import cyberpi
! p3 n1 V- @5 u: M5 F - Q, N. y% I5 D, O  E) H4 L& ?, [  t
loud_list = []
( W2 Q, f3 {. R' Y4 Qbri_list = []
8 `7 v' ?% e4 w! bplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體: D' e+ [6 ^: W! k, I  {
plt.ion()
$ ?6 ~: e( U, q" xplt.figure(figsize=(10,10))) Y6 r% W- t' v, [9 }7 `
plt.figure(1)
- ^5 y# N+ r$ p6 Cx_locator = plt.MultipleLocator(5)2 b: X0 I9 B, ?# S1 s9 f! v
y_locator = plt.MultipleLocator(5)4 `) v4 {+ T5 t2 m9 T5 j* L0 }2 N
while True:6 ?! V6 k$ {/ J  a2 a  \+ q  S9 R
   loud = cyberpi.get_loudness()5 G+ _0 }! ]# Y8 G6 J
   bri = cyberpi.get_bri()1 }7 ~9 W+ H! f
   loud_list.append(loud)
8 O6 l+ F8 Z- X   bri_list.append(bri)* |% M8 _- i: O5 n6 c
   battery = cyberpi.get_battery()$ ~6 R+ b  g( \; u8 X! ?' u! d
   size = [battery, 100-battery]- T5 `) O$ H# ]+ m  H9 c1 g
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
) w/ \7 \; ^% m; X+ X9 W9 C   ax1 = plt.subplot(221)7 ^* ~' z7 Z& j
   plt.title('光線折線圖')
' d& {7 {+ _" v3 z   ax1.plot(bri_list)
0 ~9 b! a7 a( n. H) e, e9 h, B4 q# _   ax2 = plt.subplot(222)2 M/ k+ ]; L2 A" U, K
   plt.title('聲音柱狀圖')3 H/ O) @5 M. t) J! J% ^
   ax2.xaxis.set_major_locator(x_locator)7 {0 |% _- l+ x2 j+ i. s! l
   ax2.yaxis.set_major_locator(y_locator)' `7 w2 U, G5 Q: ]  {
   plt.ylim(0,100)3 v$ I6 u0 m7 _# \0 v
   ax2.bar('sound', loud)
8 [1 o8 j% S* ~9 i   ax3 = plt.subplot(223)
5 ^( h$ b! o# d/ n$ G; _   ax3.xaxis.set_major_locator(x_locator)3 r. {+ M2 G. B2 ~- h
   ax3.yaxis.set_major_locator(y_locator)9 \8 @  E/ z' r/ ]9 c& u
   plt.xlim(0,100)! w$ s( k; N! g7 L
   plt.ylim(0,100)0 P& f) R* ]2 A
   plt.title('聲音、音量散點圖')* k8 H. ~, D$ N% K$ h/ @/ E) d
   ax3.scatter(loud_list,bri_list)& o0 |/ n, J% g4 S" n# T6 r% W" T, G
   ax4 = plt.subplot(224)
: g8 K+ n) a2 y& Y# i/ i- O   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'}), j) M! [1 t+ z& d7 F' z6 Q5 \
   plt.title('童芯派電量')' ?% Q) K$ Q* W: k% o
   plt.pause(0.2)
2 j; b8 P- B5 v% l6 L% o5 a   plt.clf()7 h/ @# [. V# I4 Z2 s
   if cyberpi.controller.is_press('a'):1 d; n; x0 y2 [& c5 L- t+ |5 x
       break$ M2 m2 E( |* g3 H0 o; w$ w6 e
   if len(bri_list) > 500:
7 Y( L" \( p. E& }8 {4 R       bri_list = []/ X7 s: c- s4 u$ m
        loud_list = []3 ?/ a" j: J  h4 N
, F& X9 ~9 n, Z; R

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-1 20:32 , Processed in 0.024724 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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