圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8500|回復: 0

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

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

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

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


! G8 c% c/ g& V+ C$ w- Y1 |
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    : L( u6 K( P8 |: P, y1 t. \9 w
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    ' Q% X  O* Q' s! K7 H. o5 q
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    9 v0 x% }8 ?, `. N5 n+ l! ]2 Y  y
# x( n( V1 o# W6 q4 }
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)9 I: g% P( ?  Z) D

! D& \2 ~7 f9 Q+ |% i( t
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    $ d& s, x* d2 t4 u! v1 ]" l6 Z

' ?+ y/ G  n& q6 B
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。, j. ~% S5 K! L# Q- w( R4 A% ]0 T

1 f  ]8 [9 ^# @  V- }8 @! `3.童芯派第三方編輯器程式設計準備6 R5 _0 i1 {  v" p9 \
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    , [1 [1 h2 }. n# \+ M
) }9 q0 o/ j; N( j: X
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    $ @' c6 J6 n+ v# v( I- ?0 Q6 u

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

5 ^9 ]0 l  p; J" m8 S
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    + b5 G' D6 u8 w. C

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


5 N! G8 g  m" E  U7 e
查閱cyberpi API文檔見:童芯派API文檔
+ q! C: T( q' f6 U3 a
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    7 Y+ A. Y3 V% [" O: _* }

  M+ x% m: y. g$ ], C. D8 s
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
' h: @# g  q# O
5.一些程式設計案例
$ y& `2 n7 S5 [1 k9 q' v$ \' \2 c6 C童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
8 X  q" j+ B# {; V$ z
功能介紹:6 ]1 |8 ]& ]# K, c% P, D
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
  B: m9 K7 h. H4 `$ l+ C  n通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。$ C' t9 k- B3 M) x  u- d: s
結合藍牙模組可以實現無線滑鼠的功能。, m  f8 r; w* k- {

1 B' Y# G. y! u  W7 w7 L" Ffrom pynput.mouse import Button,Controller) b0 `: o) K1 Y
import cyberpi
/ t* h+ w* D# P3 Oimport time( p3 @( k' B6 V" D- z8 H

) I' k% I9 T' H5 u9 D, Amouse = Controller()6 p! ?9 s, R* x7 S! Z; f% h

4 b2 ^5 U5 T6 m* V# D* Awhile True:" `9 p. S. P. H0 L* Y! W9 a+ D! M) L
   if cyberpi.is_tiltback():
( w( Z) `) p( E: _: o7 h" X* V3 X$ p% y       mouse.move(-3, 0)5 n: m# T( A! C2 U) O4 P" j
       print(mouse.position)1 F5 }' ^6 h9 E6 p
   if cyberpi.is_tiltforward():! C9 O- K3 |2 q2 ]
       mouse.move(3, 0)
) a9 W8 E  y8 U7 M$ y! {2 h; B7 |   if cyberpi.is_tiltleft():; e, P3 a8 f- j' E
       mouse.move(0, -3)
% g3 |+ F, w8 `6 D) U8 t- @! [   if cyberpi.is_tiltright():
2 y  Q& \; ]: J; d& H       mouse.move(0, 3)
6 `6 e$ m: `5 D( N0 }. K   if cyberpi.controller.is_press("b"):
; {7 _) W7 `$ B) _. J+ _# ]       mouse.press(Button.left)
0 L2 a  \; b6 {0 F: n, r       mouse.release(Button.left)( f  J4 h: o- c; g' l
       mouse.press(Button.left)
( b% o6 c: H3 {5 s2 G, O5 a3 W$ @       mouse.release(Button.left)
; m- H4 y4 C; H1 `( V; E$ h   if cyberpi.controller.is_press("a"):3 s% [) C$ Y( m* M' N
       mouse.press(Button.right)
2 z& Y% H/ C# j" _       mouse.release(Button.right)
9 S8 r' i( M3 k/ R    time.sleep(0.01)
6 b5 ?2 J% H/ E3 J) p
  y. \) U5 i1 v4 W' z4 F6 G% N  H( {" d6 f
語音打字器
: H  f% D% X6 x2 [+ b9 t
功能介紹:2 j9 g+ ?5 o. q
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
6 L" y- o& m1 w/ _4 t- ?: I將語音辨識的結果通過pynput在文檔中打出來。; |- q. `# H8 g( D. O, j0 i
該程式目前只能支援英文。: F1 q) [- S4 G9 z( o

- A! k0 D' _# O: T, V- }$ ~import cyberpi
4 u% y' |2 w) }/ E1 B; v" W: |/ Ufrom pynput.keyboard import Key,Controller# P# Z; f" m/ u
import time( d, i" d& b) c
) e1 s/ [' F; N
keyboard = Controller()3 Y8 G' D" ]# v1 i% E  b6 x
cyberpi.console.clear()
  i& M4 k& F8 k, {3 kcyberpi.led.on(0, 0, 0)/ P& o0 q! b4 v9 p# }* A
cyberpi.set_recognition_url()" a7 F& S+ G; l; ^1 O
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得" O0 i; e6 b$ ?# t& e" y, r6 n9 B
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")" R3 k. E' o( v* Y
while not cyberpi.wifi.is_connect():
( k; U* M9 _# F( n0 k& C   pass) b- a- P# S8 y' y1 W
cyberpi.led.on(0,0,255)+ Q8 y- ^9 M/ d  n
cyberpi.console.println("WIFI已連接"); b9 _. G- x& Z: E3 C
cyberpi.console.println("--------------")# e0 `7 J3 s2 \4 E, }! g
cyberpi.console.println("按下A鍵開始語音辨識")
0 K  C4 F1 e0 {7 ]while True:
; k/ W$ P) I  A  k/ Z   if cyberpi.controller.is_press('a'):3 j8 k, \1 I9 e0 p
       keyboard.press(Key.space)7 j. r" V: T% s; Q" [: D1 g
       cyberpi.console.clear()
9 ~. \; s1 d3 q% m+ Y$ s- l6 [  m       cyberpi.led.on(100, 0, 0)
. ?6 E0 w) c, r- z# |       cyberpi.console.println("開始語音辨識")
5 a- A. x$ i% m: J) A8 |       cyberpi.audio.play("switch"). [+ ]! p0 Y1 q  B# y7 A6 T6 A% C
       cyberpi.console.println("--------------")
' N2 T1 z6 L# B* K" d9 R       cyberpi.cloud.listen("english", 2)
3 Y  E& l% ?: K0 S* O$ _, T, N       cyberpi.led.on(0, 0, 0)
% ?* e+ S- X4 G. h! l- S       say = cyberpi.cloud.listen_result()" m: i2 R) c0 }9 C2 M5 `
       cyberpi.console.println(say)
  `5 b2 ?0 @3 T1 n       cyberpi.console.println("--------------")
0 h; H$ ]6 j9 _+ n       for i in say:
& d6 \, i- Z* q$ N" s            if i == '':
, z, Q3 T6 R, Q& L& ~                 keyboard.press(' ')) w1 M8 W5 f6 K& q' J9 i# b: V
            else:& n8 y, v" F9 y& b
                keyboard.press(str(i))  s$ b0 r' p0 Q( f6 U
                time.sleep(0.03)
+ y# C+ J9 ~4 x6 w

+ n( V4 ]5 ~, z8 Wmatplotlib音量柱狀圖
" L: s3 L, U5 C  L) x
import cyberpi9 f- ]/ x- Q" j5 p
import time
! m- T8 t' C7 V1 T* J6 Efrom matplotlib import pyplot as plt
+ @5 k. z, E5 G- m. z( c  F6 d( k+ I 0 _5 V" `. R$ r0 p' k; u
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
& ]% C: n4 \' u3 E5 T, b0 @plt.ion()
4 G# G# f7 }; Y4 V; e6 r- C$ O
( [$ r2 U) C2 G/ r5 a: C- Qwhile True:8 v' i" f: A+ f' g
   loud = cyberpi.get_loudness()
1 V+ s& j# H9 ^4 P" C   plt.clf()
( `* |7 U% b# s" I   plt.xlabel("數據名稱")
$ t+ r4 B! s" `  ~8 C' |   plt.ylabel("音量讀值")* Z4 X$ K( G% A$ z4 T" i, k
   y_locator = plt.MultipleLocator(5)
4 k; y! V# }% p/ m  |& i   ax=plt.gca()
7 M4 m) n6 ~# \) N- U: B+ g+ b9 J   ax.yaxis.set_major_locator(y_locator)
- Y0 }. d6 Y% U& Z5 R+ k   plt.ylim(0,100)% A5 b& T# e" U+ y4 A- Y
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
3 J0 R* ^* h; @   plt.title('童芯派聲音感測器讀值')' Q- T2 s: X; g2 y
   plt.legend()
. \' K) h9 K8 j) K; a   plt.show()) h& z( ~2 L$ P3 v9 K9 @) U& i. ^
    plt.pause(0.01)2 s3 @. w! v4 k1 m* Q
; Z( W% A. U2 e' _, B' B+ ]; V. D

  h8 j! F/ O1 \$ b$ Z; y8 tmatplotlib 多圖表顯示
1 S( i8 y1 b" _' F5 S. v

( r' E+ z  i9 A4 i# _$ yfrom matplotlib import pyplot as plt
+ A; I0 ]5 X" W/ z6 E' nimport time% f! ^9 k" h+ u4 w+ I+ `
import cyberpi, A: a' Z2 R$ O
/ h2 j8 B) i5 W$ f+ }& b6 l
loud_list = []
# H' X8 @& P+ Lbri_list = []
; W/ B  D$ k8 splt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體1 o; o% H( R0 y9 S& D+ @, C
plt.ion(). A. n) \% \: B' }
plt.figure(figsize=(10,10))( l$ V( q; u$ W( `$ P
plt.figure(1)6 G- A% [- l6 g$ u# k
x_locator = plt.MultipleLocator(5)
, H% Q6 @. c3 \8 _y_locator = plt.MultipleLocator(5)
8 s! D" l& \- pwhile True:
+ y( L+ I; |3 g; X! K   loud = cyberpi.get_loudness()# z, _6 E* j- y
   bri = cyberpi.get_bri()
; G0 o2 y/ y2 i4 Y  y% G   loud_list.append(loud)5 t! v! Q2 u" W  T2 J! h' D
   bri_list.append(bri)
! e* f% a5 P/ U   battery = cyberpi.get_battery()
; ^/ I1 F# ?  g7 W$ N% ]   size = [battery, 100-battery]! L- w6 {. @8 j+ j4 h
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
' U% X+ R! }6 T' _# j5 O8 K! q/ q   ax1 = plt.subplot(221)/ \4 r6 w( F9 ~. F
   plt.title('光線折線圖'). ~1 K; v3 C5 L6 I1 y
   ax1.plot(bri_list)
% U, |9 Y0 o  h! G8 K6 k7 V, r   ax2 = plt.subplot(222)) l* e  g3 [  z  |) }' @9 b6 j
   plt.title('聲音柱狀圖')
2 B+ g2 p( Z, M7 Z   ax2.xaxis.set_major_locator(x_locator)% E& z0 L5 t. m$ i9 K5 U' _
   ax2.yaxis.set_major_locator(y_locator)
' E* k+ w# ]' i2 S6 q! s   plt.ylim(0,100)8 Q9 x* t+ Y* j# [+ H6 G& F" E4 e( }' i
   ax2.bar('sound', loud)
5 ?7 V$ I! `/ J% l" q% f   ax3 = plt.subplot(223)
: ?0 l% M6 |7 n* E   ax3.xaxis.set_major_locator(x_locator)3 s6 F' G1 ]7 r* n, ?1 [8 s: h8 H* ^
   ax3.yaxis.set_major_locator(y_locator)
4 i6 I7 F' Y4 l2 m1 J   plt.xlim(0,100)
( b2 i6 B1 n! z- H   plt.ylim(0,100)6 q7 Y  ?% _5 y, Q1 D: T# _/ ^9 G
   plt.title('聲音、音量散點圖')
" |  z) f% V1 ?) ~% h; @   ax3.scatter(loud_list,bri_list)2 n& y, t7 d# ^3 J# e
   ax4 = plt.subplot(224): e) f* Z) x( N. G# q& D: r
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})5 h2 I4 ~6 \# r7 E1 ^4 D* ^0 d- a- Y
   plt.title('童芯派電量')* X, w; p  G" a$ g- @& j
   plt.pause(0.2), [/ d, J; l7 n, }. [8 b5 I
   plt.clf()
$ U) z! N8 h" G! p2 Q. p; M   if cyberpi.controller.is_press('a'):) B! ?1 n- Z4 q# j4 O: \
       break
; p" ~, ?  O" _0 S0 e+ `+ o! X   if len(bri_list) > 500:
( O- z7 O! w3 Q) x  q1 T       bri_list = []8 D( X1 g  L: h9 W8 d3 a3 e  R& z
        loud_list = []. x% @- ?. ?2 T- Y' `1 K/ }# B2 H1 s! C

9 q% ?6 K: {* _( U2 Z

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-2 12:32 , Processed in 0.028536 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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