圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8341|回復: 0

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

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

: w/ u8 K  m$ y) l& T% g1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。
    ( Q( Q  L& s2 x7 L$ ~

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

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


3 m4 K4 \0 G& o1 P1 ]/ Z% z3 K
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    2 g9 U" ?5 X7 B! n
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    + W, x! j- N# x) k9 `; p
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。. l  R/ n- S; |

+ F& E! R: _& H7 @, W4 J
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    ' o0 {. a* F* c: y

  y1 C' B7 r; B: [3 N1 D# _& p
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    4 w8 E0 |2 X: Y: Z+ F

! r: e- j  t9 N6 Q. e4 `7 g# L& n
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。( w4 l: D/ c3 J

& s9 o4 x; q9 A$ F3.童芯派第三方編輯器程式設計準備" \; t* J" i' W# E
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。8 [4 r8 S# N% y% }- w# s" B+ C
3 {6 |, T0 X# c* Q: x) Q% H
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。1 M' [8 m( b$ t/ B# d

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


7 g) D6 p& `( m  }1 h+ _
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。% v  X  F9 h) m; D! I( G! d

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

, ~8 l6 r- L0 X1 ^
查閱cyberpi API文檔見:童芯派API文檔
8 |' V) c7 e7 N4 A" i* x% j' U& R+ @2 E9 }
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。8 c6 R5 P) X3 L' w0 A& Q( |4 ^

+ j# O9 r$ K- m+ W5 w
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
; W6 g: T* K2 a' y
5.一些程式設計案例2 `# O7 r+ P/ `# q9 c, G
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
7 I2 S8 e( c& n" @5 ~5 A
功能介紹:8 V9 Z: y) H& ]& p' |
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
' J( u8 K7 n# e# a- V  O通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。8 F% f8 O1 P  b+ O8 N
結合藍牙模組可以實現無線滑鼠的功能。
% Y. d* |6 ?! Y. R  a& M$ d" b# G" v4 G5 V% p8 h
from pynput.mouse import Button,Controller8 |5 E' z2 s" t7 j: s7 a, U/ ^
import cyberpi# F+ G: G; f1 `5 B. l1 R! z
import time+ Y( k7 ]) A3 h6 I- g
. [% c' m5 w/ j1 U  d
mouse = Controller()
- a- m5 w& t4 `' }# S7 x $ m& C" s/ h# i3 o7 }6 A2 j
while True:( q1 F) m# R5 o4 ]" e; i
   if cyberpi.is_tiltback():; }; v. A9 U' K) \
       mouse.move(-3, 0)
! K" i$ o, h! m+ j2 c# V       print(mouse.position)7 `7 s" J* v: w& w+ b
   if cyberpi.is_tiltforward():
1 f" N4 F, a6 z; F       mouse.move(3, 0); s& m3 a, n/ k, Z  g6 E
   if cyberpi.is_tiltleft():
' k3 _3 Z' f4 J6 N& \+ x% J* {, x5 e5 M       mouse.move(0, -3)
, e$ g' E0 \8 g) T( e   if cyberpi.is_tiltright():$ R) z- r, b. c$ r
       mouse.move(0, 3)/ }, a: ]7 H3 c9 R: \% z; Y9 q
   if cyberpi.controller.is_press("b"):0 h0 S# X, Y! o) e; p( U1 h3 n$ m
       mouse.press(Button.left)
! T. E; l/ ]2 ]5 p7 i* N       mouse.release(Button.left). f! Y2 G  C' b
       mouse.press(Button.left): v9 l/ ^6 ?, M7 ]
       mouse.release(Button.left)
+ `; n7 K3 i6 A  u0 f/ M# E! G) F   if cyberpi.controller.is_press("a"):
, ~7 _% f! W- F  D. @       mouse.press(Button.right)
4 }8 y, a  _5 H+ y# J) N       mouse.release(Button.right)
, C$ t  \7 u1 w8 o/ J2 X9 Y: i% e    time.sleep(0.01)- S1 P6 W" T2 Q* R; g  N5 y

# V- `: N; a1 Q8 u& W( k  m& `+ }, u% k& h& \# y" T  T! D
語音打字器

' A8 o/ r5 A3 K1 ?! F& f功能介紹:
. H! _( q7 H, O1 g, ?6 e' x利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。# g: j- v9 q1 W4 [
將語音辨識的結果通過pynput在文檔中打出來。$ Y7 B, X4 e* o2 R- Y0 f
該程式目前只能支援英文。$ Z/ B* [: x, P+ f* H! I. y; U

  l( I! h* d; jimport cyberpi- `0 y0 [- R  |4 R' X
from pynput.keyboard import Key,Controller6 r6 ^9 R4 P& i/ C+ M3 K, e
import time
4 C" K7 \" k: @8 k7 `8 e# c
. V% t6 l, ?( v$ ?keyboard = Controller()
5 X! C/ x( T4 X' I+ ]" `cyberpi.console.clear()
; o! m2 F# j' o2 O4 ?$ \$ fcyberpi.led.on(0, 0, 0)8 [# J* i7 F" }
cyberpi.set_recognition_url()
5 u  k( c# Q' I9 Z& pcyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
$ d. p9 I( o+ z* w" U6 Xcyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
+ p1 K0 R/ z/ R( T9 {while not cyberpi.wifi.is_connect():
1 _4 {0 ]( Y" v$ o   pass; U6 k+ g9 o" [* J/ ]
cyberpi.led.on(0,0,255)* p7 J/ ]2 j$ l6 q3 I8 V+ h
cyberpi.console.println("WIFI已連接")4 Y7 R. L0 g4 Y0 J# R' F1 d
cyberpi.console.println("--------------")8 f# D) V& q6 i
cyberpi.console.println("按下A鍵開始語音辨識")
) i, z) k$ z) pwhile True:5 |0 I; h$ P# ?& X" X- Q) ]" \3 D
   if cyberpi.controller.is_press('a'):" P4 d- U0 v3 M! c0 i' e
       keyboard.press(Key.space)1 `$ F3 v0 D3 G% W
       cyberpi.console.clear()' p$ k+ d* X/ J/ V- x6 y
       cyberpi.led.on(100, 0, 0)
* `# z; u7 d! l% m, A       cyberpi.console.println("開始語音辨識")
7 \: D5 x: T7 T% t" S1 z       cyberpi.audio.play("switch")- ?/ o- ^' [1 ^; A. D; F0 t
       cyberpi.console.println("--------------")
# i- N& f% L& \* z1 G       cyberpi.cloud.listen("english", 2)
$ t2 K* k- R/ ^- X6 H       cyberpi.led.on(0, 0, 0)
' T: K6 p9 \& b* `3 Q       say = cyberpi.cloud.listen_result()
9 Z( O: ~) J6 I; r" N       cyberpi.console.println(say)
' a$ ?2 t+ P/ u% `& n       cyberpi.console.println("--------------")2 a, J5 Q% @) b  y& b3 C
       for i in say:
( G  e% l& ]. n  X            if i == '':: Y1 J% ?) M$ b7 [2 C
                 keyboard.press(' ')
/ F/ `; }4 m+ T8 @% j. Q            else:
% g+ w4 m1 J+ X. M$ p% F                keyboard.press(str(i))
# c0 m' B4 d% g                time.sleep(0.03)
1 @, d; n% _; C. A/ j: T: y0 ?

2 h7 \9 w$ `# D. _6 Rmatplotlib音量柱狀圖
$ m, x% C, c! p5 z8 u# M% b; ?) G
import cyberpi
+ \  K( w- S5 P1 k% \) j# uimport time
; O2 ^3 n( Y7 E# \from matplotlib import pyplot as plt( E5 }4 `3 P* S! C' ^

6 e: a  x# A. R9 `plt.rcParams['font.sans-serif'] =['Microsoft YaHei']3 R* G3 u. j2 m- W) Z2 O8 c
plt.ion()6 e' k$ r. u. ?  J  r
& F! w7 N) k) u! F4 Y# N
while True:& f& ~! K9 Y  Y  Z$ v
   loud = cyberpi.get_loudness()
1 d7 [3 V, e7 X  K3 O  e" z: \   plt.clf()' w) x$ l+ e  A9 {* E, I" o
   plt.xlabel("數據名稱"), A; t# t  k) G4 U$ `! K
   plt.ylabel("音量讀值")# |% f, j5 v/ }$ }2 v/ p5 I
   y_locator = plt.MultipleLocator(5)  g) {/ ?# X1 B: Z4 d4 T2 ~3 D1 c
   ax=plt.gca()
5 k, Y3 @3 B* }' y' _5 n6 W   ax.yaxis.set_major_locator(y_locator)
* Y9 W) d% K8 ]7 `6 v3 c   plt.ylim(0,100)
/ X1 k/ }, W, w% T   plt.bar('音量', loud, align='center',label=f'溫度{loud}')9 `, e/ f$ D2 a1 I2 a. m
   plt.title('童芯派聲音感測器讀值')6 C; P& d1 P0 c: M" _
   plt.legend()
* @# I( B& J' e4 F   plt.show()
7 b3 n6 n$ O5 L# _    plt.pause(0.01)
; w4 m. C% ~% J! y6 \; ]5 d  Z8 }% @8 t9 s; G, B
* v: N% _2 W. I( W  z# Y. {& D
matplotlib 多圖表顯示
! ]* }+ Y5 Z+ p+ J- e
6 e( ~% ^5 H, |9 c
from matplotlib import pyplot as plt
' G* n6 J  b. W+ \1 h3 }import time# y5 h) h  _+ _) N6 j' J
import cyberpi' D, I4 W: }. |9 L# Q' s

. Y& w% s" F/ b2 b! Rloud_list = []' M* \  E9 z/ I$ ~* s% e* E
bri_list = []
" s! N, O; A1 ^/ Dplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體5 L% D% T; ?5 P
plt.ion(): M+ m/ g  M( h- P( _, E
plt.figure(figsize=(10,10))
; t2 t1 Z7 {: w1 h1 t6 pplt.figure(1)
8 C7 t3 J3 e3 [x_locator = plt.MultipleLocator(5)
1 H4 z0 k' p% ?y_locator = plt.MultipleLocator(5)' H( B. h& g8 W9 _
while True:- M  y5 ~6 m2 \3 h
   loud = cyberpi.get_loudness()" h6 z) K0 X: {0 W: p
   bri = cyberpi.get_bri(). r+ ?5 ^0 q! Y7 f  ?
   loud_list.append(loud)
0 O/ A6 @1 e" G   bri_list.append(bri)* Z) d, |5 Q- I0 w
   battery = cyberpi.get_battery()1 _& Y  W, g8 N" r
   size = [battery, 100-battery]
% A$ N6 t- |! n5 z1 H   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
) \+ t" t1 B! V: M' m0 O   ax1 = plt.subplot(221)) G* Y2 S8 `, |4 N4 A# J
   plt.title('光線折線圖')) r# P, i/ C' h/ p! o& ?$ ]: p' L
   ax1.plot(bri_list)
5 @% n6 \2 f& I0 e0 t( E. M   ax2 = plt.subplot(222)
. z* Q- v  B7 f/ [0 [   plt.title('聲音柱狀圖')) {  b4 J3 H0 a0 m- w
   ax2.xaxis.set_major_locator(x_locator)
2 f# c7 u/ _" h   ax2.yaxis.set_major_locator(y_locator)" E. S" R9 q, e) V6 I2 ~* v' s
   plt.ylim(0,100)" ~) O! ]$ y6 @* O6 ~2 }/ b
   ax2.bar('sound', loud)9 r' i2 k2 C, b+ N
   ax3 = plt.subplot(223): H5 f9 I! i8 E
   ax3.xaxis.set_major_locator(x_locator)
4 g8 _+ M9 c3 y# ?5 C5 ]   ax3.yaxis.set_major_locator(y_locator)* q0 ]- h* B4 y8 l) F
   plt.xlim(0,100): ]/ N( L1 w. T  ?0 u6 r  W5 r
   plt.ylim(0,100)
& N0 ~8 h9 A  P- u; S' @   plt.title('聲音、音量散點圖')
; p" r9 w7 B8 J; G! H- U- v  C   ax3.scatter(loud_list,bri_list)0 [0 u$ k& }( o3 i# m
   ax4 = plt.subplot(224)9 ^7 r* _. X) q$ `( b2 u9 J/ B! K
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})% d5 V2 L3 x9 S/ i. Y0 E
   plt.title('童芯派電量')
+ z% A9 }& y3 y+ R   plt.pause(0.2)% ^" G+ ?4 Q8 N* M$ R
   plt.clf()
. D1 s) f3 n- W. ~# T   if cyberpi.controller.is_press('a'):
6 U/ ~+ u' V3 O, _& V. R       break6 r" j/ g& X2 }* H' q
   if len(bri_list) > 500:
9 H2 s' v! C# i6 L* D1 l1 Z( v       bri_list = []0 V0 [. X0 Q) W* N
        loud_list = []
! g; X8 q) }/ ^" O: j& \9 q& ~# z$ _) ?4 C9 |

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-16 02:06 , Processed in 0.025853 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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