圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 7769|回復: 0

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

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

! G- }. R7 Z: p* t1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。$ g6 U# i5 M) Y' C# {  X

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

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

7 G4 X( N" p2 M4 [& m) Y: K
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    ( d5 V! f6 s8 u
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    % \; L  {/ @5 k; Y8 Q
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。) f% w4 S5 ~; h3 E3 {8 o+ ]. h+ z; z! u( @

$ F2 E& o  Z5 h9 m- n
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)7 T& b6 A% F7 P) k8 {! o! h4 ]

  t5 J0 f; J# \0 j: X
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    7 D2 p' `8 c. \* J+ {
; i2 Q$ N) z9 I/ b8 C- H0 ]
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    $ {( x+ F1 ~, A! b& \

6 ]$ t  ~* x* v5 f" ]% R3.童芯派第三方編輯器程式設計準備8 t/ e# \6 O; U$ y' Z' k8 |  `3 I
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。+ f! z- `  A8 z: _( k' T; @" g. F
# o  |6 p) k* I% D) v  \
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    0 O" Z/ C7 a6 |7 s

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


3 \5 V9 q( O; W* L' `5 I) l7 _: ]
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    ! }" D3 [6 @1 p  B/ S

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

: N! y- Y7 I; y( m/ W( n8 V4 }
查閱cyberpi API文檔見:童芯派API文檔

% D5 r: H8 b0 `) d
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。/ f: w$ m$ v7 D$ h( ^. Q

  x% [* ^: _+ U/ j# F
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

4 c9 e4 K/ O9 j6 b$ R* O5.一些程式設計案例/ O, z6 E! c4 S; j9 p# @
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

; i9 [  X8 T" O% v9 {功能介紹:
% V, F) J* [6 R* {0 H; q利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
5 [( L1 \% Y- h- H9 D5 R* [通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。, h/ k0 w) E6 ]+ L
結合藍牙模組可以實現無線滑鼠的功能。# @5 X* ]' P; C4 g* b0 ~, ~/ w
5 w4 c% t+ n3 g: N/ p
from pynput.mouse import Button,Controller
& ?1 v9 H9 ~0 Vimport cyberpi
3 x, X9 b, I6 J7 simport time5 a+ _" k/ t# p8 n, E% J

. }+ R. Z; O+ p' `- b' \; `mouse = Controller()
6 Y$ t; Q7 b) u% [$ b% U( t % A2 g5 r) Y# N; b6 O& m; }# Y
while True:) `( u' Q: X: |: O
   if cyberpi.is_tiltback():% |: L# S6 s; V& Q9 U- i+ F$ r
       mouse.move(-3, 0)( z8 N6 M$ C9 ~. }" M. w4 [( G3 l2 L9 l
       print(mouse.position)
* q0 k6 B% l0 t& p, A4 }4 q% u   if cyberpi.is_tiltforward():  t- T, M9 f7 g0 n/ f  ~( T
       mouse.move(3, 0)( V# P3 r  e+ @
   if cyberpi.is_tiltleft():- }- @7 T" E$ i- A% C- [' S+ k
       mouse.move(0, -3); u. e$ V" f+ q, k/ }! A, w
   if cyberpi.is_tiltright():
7 h' j" P+ V! R- @2 T. {5 ?1 k" i       mouse.move(0, 3). z" l; L1 ~  `, G. T, Y9 V" l
   if cyberpi.controller.is_press("b"):
0 R1 \( m7 B; x8 y: H       mouse.press(Button.left)% m) K9 X9 G  Z0 c
       mouse.release(Button.left)+ F, T( _& M! m) i' X
       mouse.press(Button.left)5 r: {4 ?9 U, e$ S+ N. a
       mouse.release(Button.left)  z7 d  i+ f: F8 r+ f& V/ j
   if cyberpi.controller.is_press("a"):& k! y1 H. [. i9 V
       mouse.press(Button.right)
, C$ w. X8 n: C       mouse.release(Button.right)
$ L# ?+ {+ i' X( |# x    time.sleep(0.01)
) N! {4 P; j/ I# g3 h8 e
, T8 G9 r/ d- ?6 s3 @1 }! j: t9 _2 m  C
語音打字器
8 w, N) @/ ^) [) B( d) X
功能介紹:" |9 ~' D8 `6 V- ^
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
$ e' n4 u7 Q3 ~4 b/ u% x$ ?) @將語音辨識的結果通過pynput在文檔中打出來。( S! x7 O+ W9 a
該程式目前只能支援英文。+ q2 g0 R1 p& {; C

+ N: }6 V, C# P7 I- r! simport cyberpi3 h! k5 [" q8 _) s9 \7 x
from pynput.keyboard import Key,Controller" i+ K5 Z3 z+ M4 i$ D' @
import time2 X; ]* T4 s& b* }+ P" X( z/ s  a) r$ V1 B

+ C' |$ ~0 a! Q+ ?5 Y+ Q! Y. Ikeyboard = Controller()
. m: Q- J+ G6 s8 Pcyberpi.console.clear()- X7 x$ K7 M! Y% H
cyberpi.led.on(0, 0, 0)4 {3 p# L$ {7 R. O# `7 b
cyberpi.set_recognition_url()
3 X* t( m% q& }cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
" V# {; m( y4 n& U# Ecyberpi.wifi.connect("WIFI名稱", "WIFI密碼")5 _* o, I% ?7 Y/ R: `" l2 V! o2 R; P
while not cyberpi.wifi.is_connect():' q( Y7 }; G. c- g' y
   pass4 ^9 o9 S- X4 R0 J( w
cyberpi.led.on(0,0,255)
) O3 [1 D. m$ d' a& I. r6 Q6 Vcyberpi.console.println("WIFI已連接")
3 V$ L9 I& H* b0 D8 n0 Ccyberpi.console.println("--------------")  r) {6 w8 H# A
cyberpi.console.println("按下A鍵開始語音辨識")
8 K2 O7 X; z' n. N5 i( lwhile True:
$ U- x# f7 [9 T   if cyberpi.controller.is_press('a'):. Y" c( b: ^  g3 y* X
       keyboard.press(Key.space)
, T+ @: K3 O6 y# K" c, W; g! ]6 e9 J; S       cyberpi.console.clear()/ m& Q  ^2 v! h! c8 U0 @2 u
       cyberpi.led.on(100, 0, 0)
7 _. E& v- C! ~; J       cyberpi.console.println("開始語音辨識")
( k! I$ [) \0 k3 j" J2 n       cyberpi.audio.play("switch")' _0 m/ c! C$ }
       cyberpi.console.println("--------------")- N- G) `1 ]4 P
       cyberpi.cloud.listen("english", 2), t7 P: j8 N: h4 r5 L4 k4 I8 M2 E
       cyberpi.led.on(0, 0, 0)
+ o# i$ @4 [+ W0 W. B' @  K6 ^       say = cyberpi.cloud.listen_result()- u/ E1 i7 u, a' L/ x7 u& t
       cyberpi.console.println(say)
: s" H, }# n8 s7 A( V  d7 N3 D       cyberpi.console.println("--------------")
2 J) q' r5 N9 P0 ?$ N8 N' r       for i in say:7 n$ }. S- D6 r- K; v9 I9 a  X" N
            if i == '':
- h. I: O# i& C                 keyboard.press(' ')
% `  _; U! [% K1 W$ i% V: p( m; X* c            else:
* _& A- h6 q, ^2 v. D% F* h* T. e                keyboard.press(str(i))
& ]& w5 Q) }! ~1 D1 x+ D                time.sleep(0.03)3 F$ U0 G: i+ y2 w" i
9 ]4 [# s/ W+ C1 b' w
matplotlib音量柱狀圖
% {3 @" k; b2 B+ R+ Q( n  @  h9 `7 q
import cyberpi
6 H/ y9 J7 l+ {  fimport time
* w& ?. N, t% s9 ]3 Gfrom matplotlib import pyplot as plt8 s) Z, \! E' X8 h

  n; E# b9 b; V% L/ c/ `4 A7 u7 \/ Zplt.rcParams['font.sans-serif'] =['Microsoft YaHei']+ E( w. |; o/ M5 p  Q
plt.ion()
/ W; E# y/ S, Y8 R- w( ~  q
/ ^! b5 N- X: k, B/ swhile True:
" q( N. `* v( }2 ~. y( c$ o' p   loud = cyberpi.get_loudness()2 Y9 B) u. T& c  b2 O
   plt.clf()
) Z" Y7 u' k7 G   plt.xlabel("數據名稱")
; ?8 n) I" `" w& l0 b1 O   plt.ylabel("音量讀值")
2 A1 N9 b6 d% Y/ u1 `: H4 T. x   y_locator = plt.MultipleLocator(5)
* Y  m: [# J3 J' Y& d( |   ax=plt.gca()
( F/ D5 u, j' Z: }! b3 W   ax.yaxis.set_major_locator(y_locator)
6 i6 p" V7 `5 t% j1 E# e   plt.ylim(0,100)
! @9 J8 E1 x; P, j7 W! i+ Z   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
  f6 H4 z* u6 g4 D  S1 ^# a   plt.title('童芯派聲音感測器讀值')
1 N# u, D" E$ q0 v3 g& q   plt.legend()
: j& b, N2 m& `4 |7 W% z   plt.show()" W4 d" [1 z3 E: T1 p: `2 X
    plt.pause(0.01)2 u$ k* s6 w1 X

/ S1 h. u8 ^1 p3 }) [$ S7 Q5 C$ G! w/ }! \6 W8 e
matplotlib 多圖表顯示
- q5 A# y1 h) v. x0 A" B
" b9 l; a6 M, i, H% O  C
from matplotlib import pyplot as plt; J( V" p5 e/ n2 ^% X/ P: Y
import time! X' ]5 L1 h, u9 ?0 @9 [
import cyberpi
4 I1 G- r2 a6 ?  F  ~6 o1 R1 M
. i. v$ Q# w' j9 z1 L# {# Y. N; Ploud_list = []* E" ^6 Q7 ]$ N. G9 b2 U' X0 J0 J
bri_list = []
# l* b3 o$ X9 N2 {plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
/ H1 t& Q- q; e0 s' vplt.ion(), K! h' I: }% F* O" p+ o6 S
plt.figure(figsize=(10,10))
6 y1 j- ]+ m, P+ ]' e1 d; dplt.figure(1)
$ K- P. `4 ]* o1 t2 I' Ax_locator = plt.MultipleLocator(5)
7 m* s, c) S, G' E/ D( ^y_locator = plt.MultipleLocator(5)1 d* [5 [- b5 M$ D. s
while True:* ?4 Z' X, v# G' [4 D, R
   loud = cyberpi.get_loudness()% s  X1 e2 Q$ e( F4 C' [+ }
   bri = cyberpi.get_bri()
* U2 M2 r- V$ Y6 P5 v) k5 b   loud_list.append(loud)1 a1 H4 k( y6 }* e6 A
   bri_list.append(bri)
& k& s% X9 ]5 C1 u2 T% k% S9 |/ l   battery = cyberpi.get_battery()
" A3 a& J0 Y: T" ?4 B   size = [battery, 100-battery]
3 V/ ]* g/ G1 k4 p1 L- d, z   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
, V3 m+ L. }5 o) o2 q, e( h   ax1 = plt.subplot(221)
$ @( Q0 w5 T/ r+ n. j. b: U  w   plt.title('光線折線圖'). k- f( I2 e& f6 w
   ax1.plot(bri_list)6 K- M! L4 X" I6 I
   ax2 = plt.subplot(222)
+ `: o* D. K8 h/ P' }& K' H   plt.title('聲音柱狀圖')
; T6 `$ Q7 ~6 q0 s   ax2.xaxis.set_major_locator(x_locator)/ A/ V# G' q; \9 X. C4 c
   ax2.yaxis.set_major_locator(y_locator)' \3 G: Q' \8 `8 H. \( G' `
   plt.ylim(0,100)& N9 N+ m0 u* X
   ax2.bar('sound', loud)
& F# ], N5 v. Q  S   ax3 = plt.subplot(223)
0 g- r0 ]2 S9 G   ax3.xaxis.set_major_locator(x_locator)- {7 @( t. g, {0 {" U! u
   ax3.yaxis.set_major_locator(y_locator). Z9 v3 P6 X# \" s) W' a0 j
   plt.xlim(0,100)8 `9 m1 c4 u& T) f
   plt.ylim(0,100); z# r* x6 h; ^$ A8 U
   plt.title('聲音、音量散點圖')
$ L8 l: B; Q9 o1 R   ax3.scatter(loud_list,bri_list)- `: ~* ]1 o0 c
   ax4 = plt.subplot(224)9 ]  c) N8 p' d& G4 |- \# Z
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
4 [7 o& [: P7 }! z1 ^. l6 a   plt.title('童芯派電量')
9 u$ I# Y9 Y, l, Q: O% l& f0 @" F0 U   plt.pause(0.2)
8 E. |# i. [; ]0 S! z+ u   plt.clf()
- D, Y4 ~5 o' }; T% g2 |: z! d   if cyberpi.controller.is_press('a'):/ H( g  x7 w& S1 g0 K
       break
: b9 o4 W' Q. G4 u+ r; W  C   if len(bri_list) > 500:: ^% i) H& X3 h. a9 J) D
       bri_list = []
! P* J1 y+ o2 r9 h& H8 _- u        loud_list = []
! B. x- q+ C1 ^! J' m- ?
$ Q3 y2 g8 h4 X1 [  G3 M9 v9 `

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-7-11 07:34 , Processed in 0.028219 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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