圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8038|回復: 0

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

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

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

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


% e; O) S: _( @9 ~' |8 S; f- x
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    ' [7 d) I6 f3 R; Z9 Y: Y8 }
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    . o1 y6 ?4 P% z# d. [/ R
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。& c& ~, y9 S7 ~" U8 W* R! c

3 c  g' U7 x( N0 ?, K
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    7 v) T' _- P& ]1 W2 M# Y

# o+ s8 T' c- t$ m! t$ x4 h
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。, w# `- X, @) N1 E! h
* f2 Q% i! N6 R9 B
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。1 Z7 B5 ]7 m( z( G2 d, i; r; j
5 J% {& u" Z" E8 z0 j# S: ~
3.童芯派第三方編輯器程式設計準備- x# I% V5 A7 n- R/ Z
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。3 b  d( @2 j% J! q

  ~/ ^9 ^. K# Y6 V% U# U/ L
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。* W! _, N9 a# R/ G* Q3 P4 @

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

& v% B7 f0 J' E3 e
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    " H4 v  }! D2 \+ Q! H

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

! O( m- f  G3 n: q9 S" Y
查閱cyberpi API文檔見:童芯派API文檔
+ r# y- h' [3 g3 D* [8 K
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    , E! q! t8 F5 n/ N
, o/ ]6 Q  x  Z* P
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

7 G: C6 K5 m3 L  V! `  s5.一些程式設計案例- N1 y! @1 W: m% r4 E
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
: m. ?) d! Z9 q- B
功能介紹:9 c+ ^( [" F( S- U$ u$ o
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。; v; X" T, o8 ], _/ D3 S
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
. D0 ]* H+ ]& m/ B/ ~7 J結合藍牙模組可以實現無線滑鼠的功能。
5 p5 h: _9 a7 n- d" D! @$ H+ }' V( r; R5 ^* E: U: Q2 s6 i
from pynput.mouse import Button,Controller* V( k" a+ {. D0 R
import cyberpi! ^* B; u, q* V4 W( `* ~8 T
import time
) H9 Q% v; N% p8 x
' F& |7 d: e& o5 Smouse = Controller()
- E( I% X/ K6 w% B: Y2 m9 _# p0 `
' \8 L3 N( L) `8 M9 }while True:
- S; w% x& ~, h" D* e   if cyberpi.is_tiltback():
  J( @/ n4 {; f; d6 k! j       mouse.move(-3, 0)' H) x! F6 E! l8 P
       print(mouse.position)
, l8 k/ N  h3 u) i6 l9 M5 u* G   if cyberpi.is_tiltforward():' M* H2 s. V+ e4 d% ~# V$ T1 _
       mouse.move(3, 0)' q0 o2 _: ^' I
   if cyberpi.is_tiltleft():
% F) v5 F% p5 x0 L9 }0 K  L) d       mouse.move(0, -3)
# d" @2 ~' e9 W, c2 `1 S. ~; L   if cyberpi.is_tiltright():
9 c/ c- W5 _$ t" H0 g       mouse.move(0, 3)" h' k1 ?2 T/ s
   if cyberpi.controller.is_press("b"):
6 E- W4 T- w2 U% z( l5 M       mouse.press(Button.left)6 u8 G$ C1 E/ X2 [
       mouse.release(Button.left)
. {0 f# D; m1 G3 Q# P6 u& A+ @       mouse.press(Button.left)
! ~! \7 K6 [  H0 {; }1 j       mouse.release(Button.left)4 E  U0 V& n  X3 q. ]  ?
   if cyberpi.controller.is_press("a"):$ \8 d% l6 [1 Y: D5 a0 I& p
       mouse.press(Button.right)8 C3 \7 m) v2 k9 V" u5 {6 n( B
       mouse.release(Button.right)4 Q8 T% l! h; O- r2 G5 |; q6 x( a
    time.sleep(0.01)2 d9 z. z, t5 \, N2 m
0 r) E$ [: z! Z6 Q' R

8 m# G+ w- M1 X2 L5 f
語音打字器
+ D- n+ @, P' C/ L; m6 F
功能介紹:7 ]8 w* e4 @) L0 }/ {
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
9 ?* y. d+ Z+ {! `( p- g將語音辨識的結果通過pynput在文檔中打出來。1 @" d) C  p+ ^1 K+ A8 E" h
該程式目前只能支援英文。
' o( h+ H/ ^+ K% I) V! {. i% Q/ x5 a+ g- O" E9 W, ~; w% U/ M
import cyberpi
& R8 w- g0 {: |! g  B  [from pynput.keyboard import Key,Controller
. O& x7 k( j. ], Y: U4 d3 L: }7 D1 Zimport time% R  w  R' ?  i4 ^% P2 W
) j6 k3 ?5 f% g% M9 A( _
keyboard = Controller()
2 v/ ^) r7 r! g- P4 E* r9 [( r+ Hcyberpi.console.clear()
- c( J- T& ~! b; d7 rcyberpi.led.on(0, 0, 0)
5 G2 g' h8 i  p! Ecyberpi.set_recognition_url()
' g4 ]# t( f" \+ h' z8 [1 bcyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
* r8 W- A- _' X- ~' H/ L$ q1 P2 pcyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
$ K" i% I1 e4 L$ n' d$ Vwhile not cyberpi.wifi.is_connect():' x7 k( [  W: R( J3 `
   pass% X/ s  x2 I9 f2 Z3 k& w6 F% o) o
cyberpi.led.on(0,0,255)
% l3 A- w. H* R5 u) C' g4 o" F$ T( Hcyberpi.console.println("WIFI已連接")
; c, s6 [+ Z% Y7 G1 {/ h+ Lcyberpi.console.println("--------------")2 D3 u1 B+ v- m! f
cyberpi.console.println("按下A鍵開始語音辨識")
; s7 z1 N  R3 u6 }& Kwhile True:% v8 D0 |; [3 Y: _7 z& k, o8 k0 n
   if cyberpi.controller.is_press('a'):  X/ n& K+ `3 L0 b
       keyboard.press(Key.space)
& i& ^1 u  \6 B0 B+ a0 Y       cyberpi.console.clear()
) J6 I2 X, O% S$ j3 I, W# w       cyberpi.led.on(100, 0, 0)
1 c' D( A" d8 E       cyberpi.console.println("開始語音辨識")9 l0 `+ t2 G" R7 L/ ]
       cyberpi.audio.play("switch")
4 y1 y6 }& Z) |* e       cyberpi.console.println("--------------")8 q: Z+ d( w) K: a! \( V( s
       cyberpi.cloud.listen("english", 2)+ P) I6 g: r1 H% N. i
       cyberpi.led.on(0, 0, 0)6 |8 S6 P# a$ {. ]) K
       say = cyberpi.cloud.listen_result()
5 N4 A1 U9 O* v. ~; O* n+ H       cyberpi.console.println(say)
* V% }; {5 M& U# O: T9 v1 ~       cyberpi.console.println("--------------")  i$ s% ]' L5 d" L! Y
       for i in say:8 k/ [6 z- H- k3 C8 t; o' V. D
            if i == '':- I- \9 {- O4 @% o! ~
                 keyboard.press(' '): d- B: [2 ?  C5 x! Q0 z
            else:( H& Y; |0 |4 f" P% v' c8 |
                keyboard.press(str(i))
6 g3 O3 p% r# |0 C: o6 Q0 J                time.sleep(0.03)
; T$ q. U6 S/ _- P  |1 y
. ^% D- f, a* g' _5 O. D
matplotlib音量柱狀圖
7 ]) X3 T  x- C4 a5 @# @8 J% V' t
import cyberpi
' K9 y( x) H/ L( b! T7 {) zimport time& b* m9 p, U" W+ j( q0 S$ q
from matplotlib import pyplot as plt6 g; g" A9 n6 |% @9 d' }
6 E  P4 D- h- U! r5 S) A
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
/ R, @. b$ P: S+ zplt.ion()
7 r9 u; T. s9 E. d- L3 I 5 R9 z' o3 [0 `; i2 k
while True:
2 p) u$ i3 B# s" g# C8 v$ d7 c% z& W   loud = cyberpi.get_loudness()
5 m3 h# s. r) x- U- A   plt.clf()
; `& w4 j# N6 H% h8 ~/ n& ]   plt.xlabel("數據名稱")
8 Y' v# F/ d3 U8 R0 L5 [$ c: B& R   plt.ylabel("音量讀值")
) O& r( |" ~6 V, Q   y_locator = plt.MultipleLocator(5)
+ H/ a  ~4 Q1 z4 |   ax=plt.gca()  F8 q' X& {) s; z7 _3 S3 r/ I' Y
   ax.yaxis.set_major_locator(y_locator)
  Q& |! t: l4 I! j   plt.ylim(0,100)
! J/ h; a9 b9 I  J0 K   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
/ k  A/ M, D3 _: N   plt.title('童芯派聲音感測器讀值')1 [4 G7 h% c2 o( n5 ~
   plt.legend()
1 L7 |3 E5 t$ A. U   plt.show()
. \# L6 Y4 z! U7 N7 U& V  h- b# o    plt.pause(0.01)' W( v; g4 ]* \( s1 Q
( I9 s% @# a* B$ ^5 C7 R, E
4 |) I- o- ?/ B9 }
matplotlib 多圖表顯示
6 x3 [8 A- x* |* h  m% E9 P; L. W8 T

9 z7 G; k0 t) D- Ufrom matplotlib import pyplot as plt3 e1 l* {5 {/ D+ C8 u2 _
import time
. O5 Y( P! p2 f5 Qimport cyberpi0 x9 X  J2 I' D3 Y6 ?$ k# J* `" \3 z
+ P/ d$ f2 F0 ?# h
loud_list = []
6 l4 c0 ~8 }* n+ U- V: Obri_list = []
, z& \9 @8 j6 S1 M9 U3 _6 E1 Tplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
4 V  c. \. ?, E. |9 o' v5 F1 E( Zplt.ion()
& L. G' h! m1 rplt.figure(figsize=(10,10))
. O; k6 x7 m# ?/ A1 F# Y. Yplt.figure(1)
" |' V" u  n: d- z" vx_locator = plt.MultipleLocator(5)# z3 {2 ]8 b2 E4 R( V, ~8 D
y_locator = plt.MultipleLocator(5)- T; \( x$ C3 Y
while True:4 D) @- `- r$ D+ [0 X4 t/ W( m
   loud = cyberpi.get_loudness()
( M/ {+ h5 @; j   bri = cyberpi.get_bri()
3 Q1 j4 t2 u2 P   loud_list.append(loud)/ q( U# w, O/ q6 K7 Z$ @0 W2 p
   bri_list.append(bri)) [: e+ v: W" e( `2 \4 _
   battery = cyberpi.get_battery()
+ Y# ^( J0 F5 ^6 `   size = [battery, 100-battery]
1 v) o6 U% U6 N! T* c- k   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
) ~* u- c0 E* R: `   ax1 = plt.subplot(221); v# E7 f! }' O( B" c' m
   plt.title('光線折線圖')8 j5 E* A4 N7 A' T5 \+ F+ M5 k
   ax1.plot(bri_list)3 P; w4 Z2 z! l; i1 e
   ax2 = plt.subplot(222): b& s8 c  \. \1 f2 j! I2 z
   plt.title('聲音柱狀圖')
( q; ~) K* F- \- O% s: g   ax2.xaxis.set_major_locator(x_locator)
3 v# a% Z" _8 i. q   ax2.yaxis.set_major_locator(y_locator)
$ O2 l+ t. k1 a% J7 O/ Z   plt.ylim(0,100)5 }1 \# k! q% z3 R' O
   ax2.bar('sound', loud)2 K- I  m# E/ J, ^+ H! _  V. `
   ax3 = plt.subplot(223)
2 t& ~2 R0 h1 X: D# |. L; w# |0 t) o   ax3.xaxis.set_major_locator(x_locator)% O+ T/ X, P$ P$ {+ T/ `
   ax3.yaxis.set_major_locator(y_locator)
1 d$ V8 n% `& T' P   plt.xlim(0,100)" Z* E& [; X% Y* t, l; Z1 F" j4 c
   plt.ylim(0,100)
# k# U. [6 A2 g' P( _( c   plt.title('聲音、音量散點圖')2 K% \: X# B! U5 W" ~
   ax3.scatter(loud_list,bri_list)
' r0 R& [5 E' k" ]/ M/ l! @   ax4 = plt.subplot(224)
# N: `" `" ~4 N" [3 j   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
; l$ z( r" n( L/ P3 N" }: {   plt.title('童芯派電量')3 `0 t+ R! ]. w+ a$ h7 A
   plt.pause(0.2)
1 p6 x" g* T6 D   plt.clf()/ y$ P! w3 E3 n0 n+ o' @
   if cyberpi.controller.is_press('a'):
8 d8 y* d( i# c8 W% {. k       break
$ N+ W; L- T! D' t+ e0 Y- Z0 R   if len(bri_list) > 500:0 Y' h- d" X) t$ t9 b7 j1 z# |
       bri_list = []: @4 q" K) R: s
        loud_list = []- N1 o' w7 a, D* `
: v+ m$ g, X) g8 Q

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-9-7 05:43 , Processed in 0.028304 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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