圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8453|回復: 0

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

[複製鏈接]
magiccar 發表於 2021-7-2 15:47 | 顯示全部樓層 |閱讀模式
本教學譯自Makeblock官方教學文件,原文點[]
本教學文件以windows作業系統環境為範例,Mac使用者可以參考結合實際情況進行操作。
快速教程:如果您已安裝了Python環境和第三方編輯器,請跳至第三步。或在您的編輯器配置的Python環境當中安裝pyserial和cyberpi程式庫即可實現童芯派第三方編輯器的程式設計。
pip install pyserial
pip install cyberpi

9 a! C% \# @7 T/ N1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。* m% M2 I, S& @0 {

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

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


: E' l) N6 d" Y- ?3 x3 n
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    . H  X' t, _1 Y9 z' v' i! ^
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)8 d1 m' P' _8 q7 c& {, G& M
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    $ z4 N+ M- H- ?( o/ x

+ U" p9 A9 p* n% `7 f
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
      M. N' u8 Y& P7 Y; k/ F: M$ c: y

4 _: i9 y3 ?- i7 \
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。, b/ j6 r* _7 [- x! M

, a# p  B* |. U7 r
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。! L+ E. M# d5 b3 s

. r9 j5 [7 Y$ R$ ~5 e0 V$ Z5 ]2 C3.童芯派第三方編輯器程式設計準備
7 X# H9 I1 j! _
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。( Y6 M$ T) ^! ]' ^) j4 t; ~5 }

6 Z: H4 f% X+ O+ ?
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    ! \0 ~8 z. U8 b' z

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

8 s* z: `. ~5 P: m
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。7 o4 a. Q! D! c% y6 @2 z' _% b% t

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


3 q- A3 Y' u- l9 N4 h  i% d. t
查閱cyberpi API文檔見:童芯派API文檔
+ \" V& I. v6 g5 q0 D' v
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    ' f* x, A5 `# u. Z/ I* W3 k

" C8 m& q" A/ T. ?% G$ k
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
8 h3 p1 w4 f. p7 M( O2 x7 D
5.一些程式設計案例# N5 R. p4 ^" t1 I' O2 `
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

5 S% l% Q, ?/ P; L# T* [  x0 i功能介紹:/ E$ C8 J. `, b: ?) p' P2 @
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
9 b( D+ t* `8 @  R  H通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
3 E' N1 Y. P) V結合藍牙模組可以實現無線滑鼠的功能。5 N4 w' J3 }# s$ W0 ^9 `0 E" a( B! B' \

9 a* h6 n+ ]% a" c4 Dfrom pynput.mouse import Button,Controller  ^5 e0 y' E* C3 {6 z
import cyberpi3 ]5 |/ q/ _1 F: S. X3 C
import time
' k* o% j/ N" M3 X. M 5 s2 [# k9 m. }* D
mouse = Controller()
' @! k9 X  v( |- F ) W( Z7 }& R5 |+ p  V& Z0 o
while True:) K" v* ~" h& H$ r
   if cyberpi.is_tiltback():' Y8 `2 z$ U: u8 {+ W0 ~
       mouse.move(-3, 0)
" e' F5 p: N# c( }' X* F, W- b: z       print(mouse.position)* p) _7 j5 q, U0 h$ S
   if cyberpi.is_tiltforward():
) k% o8 ?) R; n, }3 N. h       mouse.move(3, 0)0 h- F: ~2 l) i' c0 W( E
   if cyberpi.is_tiltleft():
$ D3 V# J6 `3 R! \, u. F4 e       mouse.move(0, -3)1 @5 _/ {' U0 Q( J1 I
   if cyberpi.is_tiltright():* g; {; n: H+ [; Z- t. N( E
       mouse.move(0, 3)" [7 |+ n6 T$ Q! }4 q5 x
   if cyberpi.controller.is_press("b"):0 `- l& j. q, m6 `
       mouse.press(Button.left)
7 K2 K. R, ]) X8 n! M       mouse.release(Button.left)
' q1 o6 K$ ]: f* t( K5 F; X; Z( ?9 |& B       mouse.press(Button.left)8 B" f% Y+ q$ [
       mouse.release(Button.left)
$ z0 |9 ~# `: v5 T8 q   if cyberpi.controller.is_press("a"):- F0 d; W4 n# Y. v' j5 b/ g
       mouse.press(Button.right)
0 z$ e, J3 `# H* t5 K+ J1 `! ^       mouse.release(Button.right)( u  n7 E& t2 M
    time.sleep(0.01)7 k* K. W0 I- f4 w$ ?  n1 O: J" e

; k& `6 k: p0 u  t) Z2 c- B3 g: @4 ~) M
語音打字器
- c, r" P  {  d
功能介紹:
) C* {' Y4 b% }" E2 A利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。7 V  r, }9 l3 Q: d' \4 {7 _, w7 j
將語音辨識的結果通過pynput在文檔中打出來。
& X( D+ b3 s; B- T; A- v4 _- [6 o該程式目前只能支援英文。
1 G3 a6 q) _5 |! x7 _
" n& X1 w2 M$ F/ q1 a/ Nimport cyberpi3 u( ~. d1 t$ R" C/ ]5 T
from pynput.keyboard import Key,Controller# w2 I8 m, _9 y, `  d
import time
0 E9 S) J; `' X0 H2 k " }; Q, K( s$ k: w
keyboard = Controller()
6 x8 {+ u8 D# H$ R4 @cyberpi.console.clear()2 B( A: H+ p8 x0 E
cyberpi.led.on(0, 0, 0)
6 c( J+ s7 |0 i6 wcyberpi.set_recognition_url()
3 D( R7 C1 [% O$ Lcyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得3 k8 {: U8 \% V. n
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
# n' y; l& z/ D4 s" {+ Nwhile not cyberpi.wifi.is_connect():
; ?5 X& d3 D$ b9 z. H6 R   pass0 K- l: g* I% c* V
cyberpi.led.on(0,0,255)
) d; `5 B( |# C( }, Jcyberpi.console.println("WIFI已連接")" O0 I: v2 D. y1 [
cyberpi.console.println("--------------")
. U4 X+ E+ R+ fcyberpi.console.println("按下A鍵開始語音辨識"): i5 O8 `, W2 M% T, d8 @
while True:( p: U4 a, L' T! g
   if cyberpi.controller.is_press('a'):2 |/ @' H+ Q+ H1 ^  f1 B8 d
       keyboard.press(Key.space)
2 f! \  n4 k( v       cyberpi.console.clear()
5 P# v- o- D9 g; Q' t6 y       cyberpi.led.on(100, 0, 0)% J& Q9 E; P: ]0 }! L  J4 ^& c9 N4 T
       cyberpi.console.println("開始語音辨識")% u* b  r; |, _& z+ Q& d
       cyberpi.audio.play("switch")
" B. J7 r4 T  E! x" I. q       cyberpi.console.println("--------------")
+ Y! r0 x2 k) z       cyberpi.cloud.listen("english", 2)( Z! m, V! B* l; a) i5 g2 Q
       cyberpi.led.on(0, 0, 0)0 ~, E6 ?- o9 z
       say = cyberpi.cloud.listen_result()* c9 }* O8 V0 _$ N% F
       cyberpi.console.println(say)
5 o; i6 o/ G4 v$ t       cyberpi.console.println("--------------")) m  M- T) B) E) Q
       for i in say:
' e+ @- G! g8 F* {( X6 _! C            if i == '':
) g+ ^* M- S' P3 U                 keyboard.press(' ')+ S( s% o" Q2 {6 Q0 R. O
            else:
, d; p4 V0 w0 D  {                keyboard.press(str(i))
9 Q5 P. _- x8 h7 I! u6 f! J' }! y# g                time.sleep(0.03)  ~5 `: l  D0 {8 z$ Y2 {% p

. ^  B. p! B' \5 F4 H9 M2 H) \5 Qmatplotlib音量柱狀圖
- F; y2 T! ^! L- y1 F# N
import cyberpi8 s, p# q+ N/ v7 d; n% k
import time
5 u. b& R7 c" X: c$ j& mfrom matplotlib import pyplot as plt
; K5 I4 _6 h; L
0 r: U( Y- _  J  jplt.rcParams['font.sans-serif'] =['Microsoft YaHei']
+ o3 Q' N# k9 J/ j  x/ cplt.ion()
! P- f; H& E$ }" m* D
8 q$ H) ]2 [. R) ~  x  P, Z+ @# Swhile True:& g- L0 v* Q) k0 _0 l5 }
   loud = cyberpi.get_loudness()
, b/ y: i6 K1 u; U5 I2 G. R! j   plt.clf()4 N+ n+ F0 p6 ?4 g0 p! l# V
   plt.xlabel("數據名稱")
8 |! ^9 s9 N1 d  f   plt.ylabel("音量讀值")7 ?, z, n. c) q  x
   y_locator = plt.MultipleLocator(5)
+ W4 e4 K; g3 n   ax=plt.gca()
+ H4 L8 l9 z0 L( r   ax.yaxis.set_major_locator(y_locator)3 Y3 x! x/ U1 V( J
   plt.ylim(0,100)4 F1 I3 a4 K! h5 h
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')- O* q' t5 y. v, ~1 j, w$ I! [
   plt.title('童芯派聲音感測器讀值'), M+ m% E+ w3 G) G/ [/ v: a/ x$ \
   plt.legend()
% m  b4 J  Z1 n) p; s   plt.show()6 d+ k3 K% |1 [/ q1 K- w- q
    plt.pause(0.01)( t' W+ K- s! K5 n( W* g/ m

" P6 d5 n2 P# ?7 e6 E7 l1 s1 W7 f* E. ?5 `8 C
matplotlib 多圖表顯示
% S% J' W: n" W* e0 a0 j

/ L  s) `/ H" t, X0 E# y, K4 S+ n  efrom matplotlib import pyplot as plt0 l2 v9 [# }2 B7 Z; t
import time+ t* C* F# Z8 E  y. Z6 h7 ]
import cyberpi
- g- j' a1 D' ~3 o
2 L: d" j6 v  q0 I, f: mloud_list = []
# Q1 ~) X0 s( K8 I/ tbri_list = []8 H7 _# c: y) i7 {
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體6 e" l/ m6 @' _$ z# Q
plt.ion()
- Z1 _" _& K& o& I* ?plt.figure(figsize=(10,10))8 y4 ?" C  F% z& _/ u& |
plt.figure(1)
# r  ~/ O/ W3 V+ ]3 N& M2 {x_locator = plt.MultipleLocator(5); |5 u: [2 N& B1 r) c- q
y_locator = plt.MultipleLocator(5)+ i0 Y7 H) ?" o$ H9 }+ A1 y% J
while True:9 D# Y! ~! G' z# T
   loud = cyberpi.get_loudness()9 T& k& }; j2 y7 [
   bri = cyberpi.get_bri()
7 V' X8 v: N9 b   loud_list.append(loud)
+ |  ?! w" q$ p- @; ^   bri_list.append(bri)
8 |7 H. d5 T* t: I   battery = cyberpi.get_battery()
$ Y6 o" J/ ]" l3 L: D- z1 S5 J/ I   size = [battery, 100-battery]
& Z" Z/ a/ [6 p   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
$ i: z1 Y# j2 p* e" J   ax1 = plt.subplot(221)' E7 w7 @5 c+ H/ C3 E
   plt.title('光線折線圖')" i) f# \1 _* b  O, R) n
   ax1.plot(bri_list)
% `1 h1 G* _* X1 e* q* R3 b   ax2 = plt.subplot(222)
- U* L3 \8 m( U( b& ]3 j   plt.title('聲音柱狀圖')
! t9 [3 ~# B" E# m1 X. _8 Q   ax2.xaxis.set_major_locator(x_locator)9 H7 z2 P1 E" [- _
   ax2.yaxis.set_major_locator(y_locator)
- u  q' L+ a7 ^   plt.ylim(0,100)3 V3 q, `; `, e4 x8 m$ b' f, E
   ax2.bar('sound', loud)8 W6 B. d$ r! X' d5 y
   ax3 = plt.subplot(223)
3 ~; y1 ?& O$ C( D0 C6 L   ax3.xaxis.set_major_locator(x_locator)
1 L  T* ~2 w! w! X   ax3.yaxis.set_major_locator(y_locator)& g9 h0 l9 R4 r
   plt.xlim(0,100)  U3 z9 }+ w1 e& y1 @
   plt.ylim(0,100)
% R! l& J: C( ~/ y   plt.title('聲音、音量散點圖')
7 r$ o3 M6 j6 H   ax3.scatter(loud_list,bri_list)# K  h5 S) N% |7 S% G
   ax4 = plt.subplot(224)
& i' K  v" I1 W2 M6 [   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})2 C$ V/ s9 M  X5 g* ]7 ^
   plt.title('童芯派電量')
2 X/ ^6 m/ n0 W% J( D   plt.pause(0.2)- `( f! Z( [6 N! ]8 A
   plt.clf()8 _6 ?0 o7 n1 f7 Q" c% S. j' ^2 ]
   if cyberpi.controller.is_press('a'):% T8 D7 T. J9 L7 z* w: Z/ v( |
       break- W) Z; a6 x: C- X( u; @5 {9 k
   if len(bri_list) > 500:
+ b9 Z7 a+ U% P9 V: b       bri_list = []
$ N8 Q8 L# A; ]1 A8 w. a' S1 k2 i        loud_list = []; ]7 g$ b$ ~3 k4 \
* n3 W6 A' x. }9 [" ?# L

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-29 19:29 , Processed in 0.026468 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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