圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8519|回復: 0

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

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

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

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


& G0 A7 N, n+ B" |5 @& j0 Q
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。$ {" j* @2 r% r/ K, x% s
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)) L9 ^, U% @5 i5 O1 j9 J
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    5 X0 P! f& Y$ E) }. S7 [$ W, X# Q8 Q

. A& ^3 k4 h6 E  c( E1 _
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    0 \! V4 w, Z. G

3 L7 v3 \) y7 r4 ]9 X
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。$ A) ?% l/ r! s8 x1 R
5 k8 E/ [' A  W6 e1 F7 T  [2 w' n
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。) r& W% u/ a) V: E
1 F4 J  e* k2 c" V
3.童芯派第三方編輯器程式設計準備
/ ~1 K9 M1 d6 E+ C, Q
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    & O' s" }. y; U. _

% L  O. _" f+ @' G
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    - L7 Q& g2 s) r5 @6 V

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


, Z! G7 X8 b8 v7 s
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。. a/ X  l  V7 \) z* I

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

6 t$ P/ ~+ v  D. Z' i
查閱cyberpi API文檔見:童芯派API文檔
& M2 h: ~' p) d8 C. u- k3 e
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    7 w4 N/ _: ^9 c! g! I  f2 ?

3 x  s( D. I- u% H# F: W3 y
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
  s6 o% ^' }% `1 W
5.一些程式設計案例7 d/ A* e' v$ B: Y
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

" ]% h  M0 ^* I) g功能介紹:
. ?" P/ g2 J7 Z+ n8 V8 e( l利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
5 o. @" H3 K: p8 g$ y通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。$ U% p0 l5 [7 I  E; L/ \) u1 t
結合藍牙模組可以實現無線滑鼠的功能。
3 s" U* B6 D  n8 e7 c' Q& d4 Q8 y+ d1 y
from pynput.mouse import Button,Controller
2 d. l% @- h% h$ u: Limport cyberpi$ y- P: M+ A6 }3 J- e! I) [# B
import time3 x  [% o: m% {8 Y% L% x
$ Y  T; g, ~$ @
mouse = Controller()
7 ]+ F8 F* ~( o  k) R5 F" M
2 W$ `0 O& v4 D3 p6 ewhile True:3 I# G1 k% @4 e2 s' d: C
   if cyberpi.is_tiltback():5 ^  T* t/ r/ R0 h; G7 S* X) B
       mouse.move(-3, 0)' _% s7 s0 ?+ X% L$ q# ~; T
       print(mouse.position)
$ r/ [. A& t0 Z& y% J7 U5 g. |   if cyberpi.is_tiltforward():: }4 Z6 G* y7 {% [% B) N
       mouse.move(3, 0)
' ~% A* m. R/ b7 S4 }   if cyberpi.is_tiltleft():# V, n' ?( |! o) }! }
       mouse.move(0, -3)
% \+ f3 E$ ?0 e   if cyberpi.is_tiltright():$ ]( {( q8 P; r/ h
       mouse.move(0, 3): ~/ x/ g( x6 E7 S: ?( N
   if cyberpi.controller.is_press("b"):- x1 w  U9 W# T; Q! @% `- S
       mouse.press(Button.left)9 r0 u8 |1 z. w( }! d- ?  R7 `
       mouse.release(Button.left)
3 C: M) K7 Q# a+ C7 ^% s& g0 p       mouse.press(Button.left)5 ]" q" f9 m, \. y- _2 q; A4 e
       mouse.release(Button.left)
) S( O& Z  U" ^2 o2 x   if cyberpi.controller.is_press("a"):
9 ^2 X9 K" V3 [- y0 a8 @9 `/ f       mouse.press(Button.right)
3 M8 W: {7 R/ Q6 d: a2 J3 B/ b2 x1 k% D       mouse.release(Button.right)7 \: ~) K; W! u, S
    time.sleep(0.01)
7 _& q$ A5 }; Z8 C9 Y/ o% s/ `1 L7 @% p3 J" F. k3 W

' l' y) O8 h8 j( Q
語音打字器

) V* f: i0 R2 ^4 W功能介紹:
$ h! A) [6 n$ F  ~利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。( L. L  V; f- \/ z) |! o
將語音辨識的結果通過pynput在文檔中打出來。+ z# `# \2 m( p% q
該程式目前只能支援英文。8 r! U' J- ?3 M6 P% [
  b9 ~, e2 R0 R
import cyberpi+ u6 a; `4 E: q& R4 G
from pynput.keyboard import Key,Controller
4 T  U+ o& W( J! n7 z! w1 ~import time1 ?# t. n8 }" E

9 Q! f& f# O5 c" K" |& I5 _keyboard = Controller()% J, C5 B% g" |; T" M/ C. Z7 l
cyberpi.console.clear()
0 _* F# ?( W+ d% F3 {2 zcyberpi.led.on(0, 0, 0)
7 q9 i+ \: ~0 d4 u) |; Gcyberpi.set_recognition_url()
: t" @( p5 K0 fcyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得: J# ?4 J  h% Q9 X
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
7 g/ D' I/ m$ c( @. G. Cwhile not cyberpi.wifi.is_connect():
6 Y5 t2 `0 e" a: s' B   pass) A9 y7 i6 |* s2 u  q
cyberpi.led.on(0,0,255)
" r: i' K# _9 K+ _8 bcyberpi.console.println("WIFI已連接")2 O# e; S! @0 @1 f. S, A
cyberpi.console.println("--------------")# e. g4 I/ U6 K1 y1 ]& R
cyberpi.console.println("按下A鍵開始語音辨識")
+ o" B3 H' `/ Gwhile True:9 ]6 e( {% }: w
   if cyberpi.controller.is_press('a'):
/ J. A& T$ v4 s       keyboard.press(Key.space)" w% V# X- ~" j+ |
       cyberpi.console.clear()
" E! E) q4 v; R1 N' V       cyberpi.led.on(100, 0, 0)
' J# K4 f+ T. K2 b. i       cyberpi.console.println("開始語音辨識")
1 T$ S6 Y9 Q' g# S4 d! v2 c/ j5 x+ {4 f       cyberpi.audio.play("switch")3 s% c9 j0 z9 b- z* z: ?+ i
       cyberpi.console.println("--------------")
& C: S, ^2 ?# j! N" M% s  _# C       cyberpi.cloud.listen("english", 2)) L( l: ]# n! v3 p* P/ J! N
       cyberpi.led.on(0, 0, 0)
/ I! B& q/ X# U$ Z. U2 i( Q. Y/ y       say = cyberpi.cloud.listen_result()2 t* `0 v9 z8 i* c1 H) r$ ^1 n
       cyberpi.console.println(say)
, h# b2 \0 ~7 k. E/ ~+ z/ B       cyberpi.console.println("--------------")' V- s6 s/ u+ y! Z$ p
       for i in say:( d; P" ?$ u2 h: F* E, J1 ~( b4 `
            if i == '':
! z" C3 v5 R1 B) f* Z7 s& }; e& q                 keyboard.press(' ')7 |* m/ D" N( P6 u6 X4 |
            else:8 n) g1 z/ \2 i& S, t2 c1 X  B5 U* U& w
                keyboard.press(str(i))
6 k$ m% M8 Z) a  @                time.sleep(0.03)  v4 y6 B- E& M( A

, c- Z; {& s: t/ X; v4 |6 dmatplotlib音量柱狀圖
, T+ U3 F* G9 _! k7 n
import cyberpi# ?* j2 m: s: v: L
import time
. R* q6 p# {1 ?, ?3 U6 e  ofrom matplotlib import pyplot as plt8 k' S0 c8 y: K& d

: d: [2 o, S) k+ ]  U' `0 Vplt.rcParams['font.sans-serif'] =['Microsoft YaHei']" f& G' S6 m$ E7 }# A
plt.ion()# s4 D9 I7 `( P: V- j
8 L5 ^, H9 j1 w; b9 X4 B
while True:) S# {$ y6 _. Z9 \; j  `
   loud = cyberpi.get_loudness()
) s; ]/ h: E1 N; f1 a$ f   plt.clf()7 ~/ q! s5 V" ^
   plt.xlabel("數據名稱")( [+ @8 e3 l  {( I: f
   plt.ylabel("音量讀值")
/ _/ a; e: [5 P0 e3 _  D  T   y_locator = plt.MultipleLocator(5)1 y5 k) e+ [) C. _7 C) @. g% {
   ax=plt.gca()4 N% t6 `- ^# i0 O# o: [
   ax.yaxis.set_major_locator(y_locator)) D  ~/ T( m- T& k
   plt.ylim(0,100)% n* k. c/ ~. Q9 B! K3 G
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')0 U5 I1 j+ `' M5 F
   plt.title('童芯派聲音感測器讀值')3 n  e4 X2 B7 x- p, H
   plt.legend()% j* V7 u" b% Q0 z6 O' O1 u
   plt.show()
7 I4 @( c) t. `" H2 B" |3 s  M    plt.pause(0.01)
) q) ]  |2 b: R; x+ V' [& L/ e& C4 i

" I' @; U& Y& _) Z" r, Ematplotlib 多圖表顯示4 z9 t. W- m5 q  b
- o4 j2 }; I/ ~2 b3 t
from matplotlib import pyplot as plt6 n4 c+ F3 @( K, g4 }0 k; O2 G) I  e3 A7 ~
import time' i# J! w+ o- J% |
import cyberpi
5 U! x8 u/ X0 q$ ?" K% H
# a3 N4 l0 B/ W; P- N' ^! }loud_list = []4 f, J: F- K2 H3 Q) x
bri_list = []
, V$ M* g3 k/ u. x" k, N& Aplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
8 j( t7 u6 S8 ?( zplt.ion()  r: _, K# r8 T( ?# ?
plt.figure(figsize=(10,10))* @( i1 W) V  _  V/ _; R6 Z) ^
plt.figure(1)3 b2 I: z% t, v* s: Q% v
x_locator = plt.MultipleLocator(5)5 l! K8 O8 a" w5 C6 L5 ^6 h# K- [
y_locator = plt.MultipleLocator(5)
7 }) r. v4 J# Z9 w" F& T5 qwhile True:% N" D" Q0 [. B- M
   loud = cyberpi.get_loudness()
* G( U; n8 F: N/ X! `5 O   bri = cyberpi.get_bri()# q! h6 O; c4 u2 x
   loud_list.append(loud)
7 C! z& B; J& P* q$ ^5 n   bri_list.append(bri)4 W  ~: i$ d9 H) _2 j9 k- Y! b9 e
   battery = cyberpi.get_battery()* }/ q8 Y  v! _" V( l( |
   size = [battery, 100-battery]4 L: L" o1 _* y: ?, w2 V
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']+ H4 A1 C- D; b+ f5 c* p7 s
   ax1 = plt.subplot(221)8 v" z( A  [8 [3 I4 d- M
   plt.title('光線折線圖'). ~, U" C9 Q4 [; [8 M
   ax1.plot(bri_list)
4 s9 a# C3 C$ y! B0 [. c! r   ax2 = plt.subplot(222)
# `- ]/ K: u1 w: m   plt.title('聲音柱狀圖')
' X4 y7 W$ z5 J6 j) i   ax2.xaxis.set_major_locator(x_locator)
3 p0 a8 G+ o/ y, c5 q9 D1 B   ax2.yaxis.set_major_locator(y_locator)2 }2 `. F: T" A, q
   plt.ylim(0,100)1 j8 }% n; G( k: V
   ax2.bar('sound', loud)9 x9 s; Q, U% L$ M
   ax3 = plt.subplot(223)
& H- H0 q/ k9 C8 O- q   ax3.xaxis.set_major_locator(x_locator)7 H# X1 S& c  W2 e. v; x2 k
   ax3.yaxis.set_major_locator(y_locator), `+ w% f  n8 G1 e! v9 ~& T
   plt.xlim(0,100); f/ P2 Y) y' ~  V: o
   plt.ylim(0,100)* H1 U0 f* c1 w
   plt.title('聲音、音量散點圖')( R5 q* s0 p5 k+ K# h  ?5 B
   ax3.scatter(loud_list,bri_list)
& }4 I5 c( C* q0 h   ax4 = plt.subplot(224)
0 h( B. J5 F( t- F% h9 a* {   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})9 P4 v0 q) ]+ K" }
   plt.title('童芯派電量')! B, `- P. [2 M7 i5 l
   plt.pause(0.2)
/ y% D: Z6 V- l. V1 M6 I- V   plt.clf()# `" m/ B0 V, L" R
   if cyberpi.controller.is_press('a'):
) H* Q( D5 ]. ~8 B; R7 J+ R       break( x$ O5 e3 a* X) `1 y  f7 L
   if len(bri_list) > 500:( d1 h* ?+ J- _, L5 X7 ]
       bri_list = []5 h8 O$ ?  L" Q
        loud_list = []2 C  @1 F; A9 ?% I1 h" u
+ K) p& f/ v8 T" X! w5 R* M4 W

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-4 00:21 , Processed in 0.027169 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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