圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8512|回復: 0

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

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

) c6 Y# D" T7 b" e1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。2 z1 P; v+ m  T- Y: A; h

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

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


+ L# u1 D* n6 b9 e1 E+ W
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。. A) m# `. v9 f$ X# s
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    # ?& h. i4 f8 T2 d; E
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。- f) B3 X4 M3 V; d% R5 d1 {
- p! \  [, ]1 Q8 E/ ]0 u3 R" Y
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)/ @. f4 S, O' J# ^
0 s3 P* y+ }% z5 J* \  Z
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    + t- [8 r/ y3 S) c1 I% {3 w" q

2 m- H  R/ |% n. @% w5 U
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    ; J$ p" y; d; E3 D( \

1 g7 s- i' |1 @! [4 E3.童芯派第三方編輯器程式設計準備
# m& w. H/ }2 u9 _% O: m
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。) I. h2 R, Z- n6 n# h& X' E

, k/ K6 P) t! a4 F$ t/ R) m+ \1 r
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。7 E- h- K6 K# p' b

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


$ u4 [+ I+ _" I; K6 `
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。/ Y4 N7 Z: @, `9 P% v8 c0 A% m; o

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


& c1 x- l' l7 T2 G
查閱cyberpi API文檔見:童芯派API文檔

% S) M2 }& U) N! C+ S2 C
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。8 W7 O3 Q) _" }0 N* p* q6 y+ o

! T+ Z- e( Z4 G: i6 @
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

$ K8 @5 g% E  A% U$ _6 a5.一些程式設計案例
& a) I) t8 `7 a1 M童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

* ~" h7 H! i6 G0 S2 Z功能介紹:
7 U! {- \7 G: f) r/ ?1 M. E, {利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。' n) W0 T) A* C- }9 T1 f7 u
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
: x4 @3 m2 w  s* {( F/ \9 t) B結合藍牙模組可以實現無線滑鼠的功能。% K2 K3 K8 L9 }' D+ I

6 M6 n3 U- x- e4 S) z5 }from pynput.mouse import Button,Controller! S' t# }) I6 ?
import cyberpi
7 j$ _- b6 K9 Vimport time
! f+ `2 F0 {6 c2 H+ g
4 h) X% W. b  m4 B8 {1 @mouse = Controller()# {  R. m  H6 p) I2 X' b8 y( n0 @

" [1 M4 c6 s$ c5 T: Qwhile True:- b8 ]0 g. p' m) q0 ]2 H$ M2 k* `$ `
   if cyberpi.is_tiltback():; H  F" T5 F( e& [$ d) L- {
       mouse.move(-3, 0)! F# e2 R' G1 Q8 Z6 C
       print(mouse.position)
9 F( _  }' a& ~7 U/ u" [   if cyberpi.is_tiltforward():) A) w) G* k- U9 J$ W' G0 g# O+ y
       mouse.move(3, 0)
  j: O! S; q/ a   if cyberpi.is_tiltleft():
( X* p) O' [. _! H       mouse.move(0, -3)1 M" ~1 j( H3 ]$ A; ]9 c. Z# ]
   if cyberpi.is_tiltright():
( n* Q+ x' ?6 p) v3 x2 j       mouse.move(0, 3)$ u0 d/ g( i( `
   if cyberpi.controller.is_press("b"):8 A8 C3 B6 h6 u* d+ t: P
       mouse.press(Button.left)
, Y" A( h. }% q/ @- u# M# Z/ i       mouse.release(Button.left)% `* s% s2 H3 a
       mouse.press(Button.left)
" ^$ c- y1 s9 h9 Y       mouse.release(Button.left)3 w/ M* r4 C* [$ ], o; {& C6 I4 G( g
   if cyberpi.controller.is_press("a"):+ o1 X- _* }9 ]; _' A* ?
       mouse.press(Button.right)" {, m6 _7 q8 V1 A6 {5 {$ c4 h
       mouse.release(Button.right)7 B3 y# j# j& s$ n  \# O1 Y; G& k1 ?
    time.sleep(0.01)8 o8 L% [9 v( R; c8 ~8 Q4 b5 `

1 y3 o. g% _  }0 c
) v( q# H  T" m/ M; c/ n
語音打字器
, [! _: y2 N- P8 f2 g; ?1 j$ N
功能介紹:
5 x  {! j$ a) E' K  [+ d# y- Z- d利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。, z) o+ Z6 q1 I, K/ d2 p# C
將語音辨識的結果通過pynput在文檔中打出來。
% y: R5 }- O, A. p1 x該程式目前只能支援英文。
) G6 R4 K6 x% h7 `& ~. k# O( L, x5 ?, i& k
import cyberpi
$ Y9 T  N1 o! a: e2 e) x) [  qfrom pynput.keyboard import Key,Controller2 z( h* X& h0 q+ X& a! [
import time& E, {: p, P# X4 ?, V
4 ?) X: q' x& o7 p' X9 M1 p
keyboard = Controller()+ t, e1 @( R! g8 ~5 Z; D9 W
cyberpi.console.clear()
, D. s8 a% j* g9 B/ Rcyberpi.led.on(0, 0, 0)
* Y* k; T( Q" Rcyberpi.set_recognition_url()
, ^' f, t& F/ E* o: Ccyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得2 P% p3 S# t# O7 n
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")3 q- P- q) W& o
while not cyberpi.wifi.is_connect():
# P5 B) ^  i( }% l/ }: z, u5 z   pass
3 X0 J* K2 ?6 i1 z7 ccyberpi.led.on(0,0,255)8 `/ B7 l/ m; ^7 i9 Z5 a/ @
cyberpi.console.println("WIFI已連接")) G/ ^3 c" b! a* j" n# A
cyberpi.console.println("--------------")7 B8 u7 l5 E( v# ]7 H4 O! Z* V: V
cyberpi.console.println("按下A鍵開始語音辨識")% x2 _1 q( Z- E# v, G8 d  h1 a
while True:  l  }# G# N: `' q' ?( A; b
   if cyberpi.controller.is_press('a'):
, X% z8 z; T) K5 @& R& B3 k4 l       keyboard.press(Key.space)
/ u4 z- f. `( ?' Z0 L       cyberpi.console.clear()# j. V; @( X3 J* N
       cyberpi.led.on(100, 0, 0)3 Z) n' {. U' \7 a- G
       cyberpi.console.println("開始語音辨識")
2 _" k% Z9 X  k8 `" l. k" t5 \! b  i7 t9 G       cyberpi.audio.play("switch")
* P: X) |) N/ ]/ S8 Q/ Y' k: q  y       cyberpi.console.println("--------------"), v, U& J3 R8 X6 B
       cyberpi.cloud.listen("english", 2)
+ w; i1 z/ ~* \+ v' D7 y# x       cyberpi.led.on(0, 0, 0)$ {1 ?- y6 p/ k: N2 D
       say = cyberpi.cloud.listen_result()
  M4 s) J( s+ T4 ]       cyberpi.console.println(say)
, l* L8 i* `0 f' Y       cyberpi.console.println("--------------")0 p# K% e) G6 E. i, }: a2 l" F
       for i in say:, I- z) S5 z* a
            if i == '':
/ I" U+ W- H: l3 |/ T- U                 keyboard.press(' ')
6 r2 S+ [7 X0 ]! f$ q9 ?3 u( G            else:5 u% B+ w' H9 h2 |" X
                keyboard.press(str(i))
: W+ k' b( H' a8 L                time.sleep(0.03)
& e7 ]6 v+ \1 Q( E
9 v& M5 e; M* z$ ~: |
matplotlib音量柱狀圖

" h* y' K6 e: K% h+ K4 U) _0 I+ Qimport cyberpi
8 ^9 o5 f0 K: s9 O* Aimport time
1 O& U: ?0 _8 g+ ^- }1 Rfrom matplotlib import pyplot as plt; z- O( I4 X6 ~9 E6 R+ J, r

0 `, N7 q! N7 X# M8 F, Z9 }plt.rcParams['font.sans-serif'] =['Microsoft YaHei']+ z* K0 ]9 S/ n& O6 _. i4 F7 s
plt.ion()
. {4 d6 Y- |, Q* @4 v & f1 \6 m1 f- s' c! {# I
while True:
# \- ]# q( i. `, K$ _   loud = cyberpi.get_loudness()0 Q- g5 d: i1 n7 C
   plt.clf(): o! \1 i. x, y& w$ y2 f' T9 A
   plt.xlabel("數據名稱")& f) Y# c( Q& D8 }
   plt.ylabel("音量讀值")
: t4 ]5 d2 k9 p- V  g( d/ n3 }   y_locator = plt.MultipleLocator(5)
& ^2 y$ k, B- J8 J: y& G   ax=plt.gca()& X9 s4 O) Q8 X  y( ?6 r$ o8 N
   ax.yaxis.set_major_locator(y_locator)
, B- A2 @! S% i2 V! G1 ]. u   plt.ylim(0,100)
' |; A- v* s2 T. k, n% U   plt.bar('音量', loud, align='center',label=f'溫度{loud}'), O4 i8 T, [4 R3 b" @
   plt.title('童芯派聲音感測器讀值')' S% I) z0 [' p, |
   plt.legend(); Y/ {" L8 {# V+ Q2 c/ E. i& z( P
   plt.show()
( L5 C4 Z' N( [5 [    plt.pause(0.01)
' R6 ?" J! F+ `% u* X1 J) [2 P  |2 b) a' ]

+ L+ f1 Y2 @& k. J: Z& _8 jmatplotlib 多圖表顯示
' t9 g! ?' c0 p8 A6 h4 s

$ k6 t1 J9 F) K8 v# afrom matplotlib import pyplot as plt
/ Z7 \; r( S8 K( wimport time
6 P! t7 K6 b- j- ximport cyberpi: b+ z- a4 \9 B; I

; l* ^( p* n1 l, ?# q3 Y6 Y  qloud_list = []; |; L' P1 p) Y/ g+ d( w
bri_list = []5 y+ V2 u% ^( o$ G: |6 z! c
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體8 _% v3 U4 t% I& T: B. `' Q
plt.ion()
/ W% h+ E) n) E2 ^plt.figure(figsize=(10,10))( F! m1 G5 ^% r- M. O8 d, s1 _
plt.figure(1)
: m5 }' ]( j6 g. e" Wx_locator = plt.MultipleLocator(5)
# ^3 q" o. H1 @+ |* d# i+ \3 D) Ay_locator = plt.MultipleLocator(5)$ a6 s9 e% q. |( X9 Z7 Z9 P- o0 e( W
while True:/ t. R4 @* Q, x
   loud = cyberpi.get_loudness()! D' {2 g8 t, e) m- K% V
   bri = cyberpi.get_bri()6 Y. [9 h- @5 B+ w; H
   loud_list.append(loud)
5 B1 V( m) ~  E0 I0 L   bri_list.append(bri)2 s0 j2 r' N( L" `( C
   battery = cyberpi.get_battery()2 ~7 ~- e6 G; M& F
   size = [battery, 100-battery]
" m3 r7 s: ~+ B7 r, F4 z, k' y   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']" u1 u7 L6 b  s4 X- R9 T
   ax1 = plt.subplot(221)
$ Y1 p9 c; x$ p- p3 ]' u   plt.title('光線折線圖')
; ?' }1 G7 _* A, j3 [4 z$ V# T8 u   ax1.plot(bri_list)
3 t6 a) e5 `6 G1 `   ax2 = plt.subplot(222)0 N) P, i* P$ m& \, T5 G
   plt.title('聲音柱狀圖')3 l- D" h9 h: ~% h
   ax2.xaxis.set_major_locator(x_locator)8 x0 }# }: e3 g4 S
   ax2.yaxis.set_major_locator(y_locator)2 ^# D$ q& _3 V# K  e) J
   plt.ylim(0,100)( J7 b1 W& y* v
   ax2.bar('sound', loud)
5 L& i/ S9 a  {' K0 h   ax3 = plt.subplot(223)6 O9 {9 O. a$ j! H) ^
   ax3.xaxis.set_major_locator(x_locator)
4 Z1 y8 O: A( k$ H0 K   ax3.yaxis.set_major_locator(y_locator)
3 J/ w( @6 @* E! q   plt.xlim(0,100)/ g. i! W2 S: f* i; h6 C
   plt.ylim(0,100)
( _5 r4 a, P$ ]- r# J  U   plt.title('聲音、音量散點圖')- N  Z$ N; n9 B: _! c2 v/ O8 a
   ax3.scatter(loud_list,bri_list)
9 e; ~8 q( x2 S( J- G5 b8 f( }, v   ax4 = plt.subplot(224)
, b& L; ?; G. P4 r   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})- q; z& u, m! S
   plt.title('童芯派電量')
- Q/ }# l& b; r, }, |1 P   plt.pause(0.2)
3 [' [, J, ?* t5 q# j' @1 G8 f: S   plt.clf()/ Q; }: h5 m7 }( G3 P% D" u* a& ^+ i
   if cyberpi.controller.is_press('a'):
7 |7 T' f* J- w6 ]3 }; I       break6 C5 X; I/ H& a6 O2 a3 Q# ~2 r' a
   if len(bri_list) > 500:" u! n3 r  p7 h( q0 f
       bri_list = []
, h, ?' v/ `+ a7 _7 q) C        loud_list = []& A% }7 Q3 ?% ^& U! s: ]7 _+ Y' g

& Y4 A% q8 f2 v4 Y

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-3 09:10 , Processed in 0.025723 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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