圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8446|回復: 0

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

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

! O/ O! S" i. b1 A" x* f0 y6 u% Y7 C1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。
    # }  I" x6 p- i$ R5 }% {2 I/ s

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

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

% i1 q9 U. V/ P
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。8 ^3 s! m8 a& i7 ]
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    / e% h- F3 m2 ^& d) X( u* A
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。" T; W, W5 g( V4 q0 u3 n

- Z  N( C, {: b3 V* }2 X8 `- r
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    ; P6 ^  x: x  U4 _1 X8 j

9 X/ O' e# t# |# L3 _- D
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    1 P8 ?5 i1 G5 W; a* f
1 E# b4 Q* m% z6 }8 X/ O
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。) ]% m$ h/ F+ m/ b! O

8 T, z8 r+ ~1 _& q+ n" d0 p3.童芯派第三方編輯器程式設計準備9 y% ~$ ~5 W2 y8 x' U# H1 e
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    6 `8 E" i: u# n* I
! V& x8 T# s# X0 Y- t9 i' j, j# J3 N. O
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。3 \4 j) t' f# [! q5 G

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


  z9 h2 ^2 S! U0 M
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    * n3 D: A( b5 T, m+ A3 }

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

8 A, g: }4 A& E- F+ T! a8 l
查閱cyberpi API文檔見:童芯派API文檔

8 }( K2 k! {4 I
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    + D6 u* q( x. f5 ]( P

& w# T7 _3 S5 \1 z+ D
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
  F: N0 P, D0 t
5.一些程式設計案例- C6 w9 p( ?$ g3 \5 O
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
9 ~1 F4 S, i0 F2 M: T0 |+ k
功能介紹:# ?9 H  D. Q# w' N: y. Y
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。1 ]( V% F( i! w4 M* a1 o' _- b% ~
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
+ P7 d. n6 M# X! n1 E結合藍牙模組可以實現無線滑鼠的功能。4 p. }! g/ m+ h; }* Z# H5 W$ Z
1 S3 _, g5 r' K3 {  K) r
from pynput.mouse import Button,Controller" U5 T& E; x) ~
import cyberpi
' D3 ?- l, F& F# A6 Ximport time/ X# B( o( `" Z$ ]/ S- q# y- U( w
3 [+ y) `- B2 p$ w/ a
mouse = Controller()
4 E) a* G  e3 V' K& }) _, a+ D % M3 S. p8 S1 {0 I4 J& |
while True:
% m  ?0 S$ I" E   if cyberpi.is_tiltback():" ]: E: ]* h2 Y/ p
       mouse.move(-3, 0)
! @4 ?) `3 [& C2 I) u4 u/ @) C6 V; q       print(mouse.position)
& l/ {6 i9 m/ r6 q) b" j   if cyberpi.is_tiltforward():% x9 F, {+ J' p! g
       mouse.move(3, 0)0 `4 t6 A/ y' y1 `0 h1 I. J- z
   if cyberpi.is_tiltleft():
1 C2 C$ W; ^1 I       mouse.move(0, -3); }, ^6 K- L3 \  n: c* H
   if cyberpi.is_tiltright():9 \; i% t9 Y) S% \/ D+ H6 L; g
       mouse.move(0, 3)
" i. T3 Y. z( O7 V   if cyberpi.controller.is_press("b"):
+ c- I3 J9 T9 d: r! k$ u# s/ T       mouse.press(Button.left)2 o" `: }, Q) j- T* l
       mouse.release(Button.left)
. W9 K. W5 T' i, K0 x       mouse.press(Button.left)* U$ E* ?+ ^4 e) Z0 D4 G6 k  k
       mouse.release(Button.left)
8 X' g* w4 p2 t( M" D   if cyberpi.controller.is_press("a"):6 V$ F/ k+ n# G+ p" I6 N4 Y
       mouse.press(Button.right)
$ p" |. E, k7 a" X4 @6 t, K: h       mouse.release(Button.right)6 H% {7 J/ w) p4 I
    time.sleep(0.01)# p1 ?* n1 i" i! \0 j
' K$ v4 f' y$ C3 `; d* a  B$ C0 j( V

2 j# {4 @" Q( b! `$ b
語音打字器
3 w3 Z, z8 R( P  y
功能介紹:; \3 J3 f8 a# b$ m9 p4 X9 w
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。8 f( Q2 t( U$ x4 m" K
將語音辨識的結果通過pynput在文檔中打出來。6 q$ A. d9 O9 m' }/ B  R
該程式目前只能支援英文。
* h5 s6 m% k# L5 E0 S0 h& y
  H' K* A, M0 P$ V2 V- `import cyberpi
& R: T4 ~6 W% [3 A" M/ @from pynput.keyboard import Key,Controller, O. ?  ^1 ~: i$ g$ ]6 J+ z
import time) z2 |; L9 T2 ?; C- }1 @
9 a4 ?) d2 m7 E, m. k
keyboard = Controller()/ T0 m( s& l* G6 n4 v- S& a
cyberpi.console.clear()
' {+ ], L+ f9 E* }3 l7 U6 ]cyberpi.led.on(0, 0, 0)0 a4 B3 `' z0 n. v' j4 U
cyberpi.set_recognition_url()
9 l: _  I" |1 h8 Z" }cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
9 i8 l3 H  x1 E& w5 ncyberpi.wifi.connect("WIFI名稱", "WIFI密碼")% e4 P5 G4 r9 D# I
while not cyberpi.wifi.is_connect():
4 B/ K# h/ Q( h   pass
4 P, y! ^+ n: t: ecyberpi.led.on(0,0,255)
3 b2 y; A- v' P% H% y% x8 ?1 hcyberpi.console.println("WIFI已連接")# U8 T; K+ Q1 b3 Y
cyberpi.console.println("--------------")
" {0 J' F- F. \8 \cyberpi.console.println("按下A鍵開始語音辨識")1 X+ A; G& M( K3 U& R; I0 L
while True:
! f, q/ J- E. ^# M/ }: r" i   if cyberpi.controller.is_press('a'):
: e0 }. n1 }  R( {  ^       keyboard.press(Key.space)
7 M3 o  }+ L2 g( e; {! \       cyberpi.console.clear()
4 X/ h8 e; F+ B- Y- K3 [* X. ?4 M       cyberpi.led.on(100, 0, 0)
- z" g/ L- {* e$ E0 s) w  |       cyberpi.console.println("開始語音辨識")2 B: T3 w4 R' E
       cyberpi.audio.play("switch")
6 t8 Q0 w$ [* _. x       cyberpi.console.println("--------------")! S7 `, |5 a1 ]2 I) A- \
       cyberpi.cloud.listen("english", 2)
% |# V& \  \/ F4 D       cyberpi.led.on(0, 0, 0)1 i; G9 n2 a/ t+ }; x2 j
       say = cyberpi.cloud.listen_result()
9 m; u' e$ M! ~; ?! c       cyberpi.console.println(say)
4 `' c+ [% `8 V5 W) m- |       cyberpi.console.println("--------------")
: E8 r$ J: v: _1 R0 N/ o2 e       for i in say:
5 q9 }. G* m  x4 X+ j6 b            if i == '':
* L: O; Y3 g3 d+ X5 x* a2 Z- N                 keyboard.press(' ')3 L* d2 v+ o4 a% U" H" Z5 ]
            else:1 |& x  f' N- S6 ]3 @7 f
                keyboard.press(str(i))2 `+ A: O: }7 x) F9 h1 ?; e
                time.sleep(0.03)
" d1 O+ y, O! |1 y+ ]& J' u/ ]. W- [
  {. _' t# W$ P0 _3 y
matplotlib音量柱狀圖

' T! V5 r' b' K7 {3 {! S8 @+ f7 Yimport cyberpi
4 I  @" h. |; nimport time1 a1 h: B& f( _) Y0 O6 b
from matplotlib import pyplot as plt" t" T5 j* Z: j1 n) ^: B

! Y* p& ], q4 |) v" mplt.rcParams['font.sans-serif'] =['Microsoft YaHei']- z. ]3 M% @5 C/ N! e
plt.ion()
* b5 e4 w; G! a! I4 f" s7 x5 T1 n 3 n: U- ]. u8 S: s- k
while True:
! |  H- T, j& ?1 S2 _# r   loud = cyberpi.get_loudness()
( N/ }  {& ]( S8 D   plt.clf()% ^. v; M  q2 N# P9 f
   plt.xlabel("數據名稱")
; _( G! M6 M- P) P3 G   plt.ylabel("音量讀值")
6 o3 f" T% O7 l4 R$ F) j& o' ]   y_locator = plt.MultipleLocator(5)" x3 Q; {- @- g: x( Z
   ax=plt.gca()
' p+ }" i! h& S* a$ [   ax.yaxis.set_major_locator(y_locator)
$ l. a$ s: R" }3 Z% P% B6 t! Q   plt.ylim(0,100)' k9 S! I  L- @- q
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')  y$ S3 |, x! V6 ?# O
   plt.title('童芯派聲音感測器讀值')7 q& H# |+ ]9 f3 F6 {) H. _0 V4 ~
   plt.legend()
% _' N3 F$ N8 f8 a   plt.show()
0 A2 ^" R) D/ U: j- X* `8 z    plt.pause(0.01)
" I6 a! v" K3 X' N& l, [. Z8 T
, a0 o4 p7 Q. I2 |1 d
1 O5 M5 G! \! O# ?! amatplotlib 多圖表顯示
" d: r& H* E9 X: `

7 h6 B) p  f2 Z" Q: ?6 e" hfrom matplotlib import pyplot as plt' j) D1 C0 V4 p( S
import time
5 q2 G) q" _0 T1 T% ^7 z! |1 bimport cyberpi
0 ?2 `9 \: Z! p" P1 }. ] ) P" d  q( K* L! z) `/ P
loud_list = []
, ~. d6 W9 t( K# qbri_list = []
7 i9 C& O7 a$ q9 gplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體5 ?' r& _0 @5 D- V, ^
plt.ion()
/ J* q7 y2 y0 J: ~) hplt.figure(figsize=(10,10))
! p9 m4 b9 p- Dplt.figure(1)
6 J. {% s# ]& |2 Z2 [: i* ]- Zx_locator = plt.MultipleLocator(5)
6 D+ H% H- @: C; V7 ly_locator = plt.MultipleLocator(5)* l6 j0 _" c; @! w; d+ ?
while True:0 P8 O+ L; b' }) W6 y4 L6 U3 l2 }
   loud = cyberpi.get_loudness()
. X$ }; E+ X; Y4 R) i# N( O   bri = cyberpi.get_bri()
) {% k( A- m! L3 a  I0 ]1 r) L   loud_list.append(loud)( W- J. _& L) T/ u
   bri_list.append(bri), K) `! M5 V* T& ?$ a0 j* ~
   battery = cyberpi.get_battery()
* t- _' F, l. n  [+ S; v) V   size = [battery, 100-battery]: t: }/ y/ a9 [' @+ K
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']) ~  X3 W: v% ]6 {1 E3 a9 K
   ax1 = plt.subplot(221); Q  C" ^% U; |$ G9 |, a1 h0 x! d# @
   plt.title('光線折線圖'): f6 ~& D7 ]6 c, j! R
   ax1.plot(bri_list)
; f( C8 H* [" H9 J: y% E5 H   ax2 = plt.subplot(222)" D% d5 Y+ |. f) t6 ?
   plt.title('聲音柱狀圖')/ S: g' K- ~5 Y! u* l1 a
   ax2.xaxis.set_major_locator(x_locator)' D" H8 i5 u9 p% V" g
   ax2.yaxis.set_major_locator(y_locator)" D- p' ^+ |9 i; q2 ]1 B; G
   plt.ylim(0,100)
2 C& K5 [& f' y# {* O9 O   ax2.bar('sound', loud)
( Z8 K% z% `/ ]  P6 @9 N  J   ax3 = plt.subplot(223)0 f9 u8 Z; W9 _+ j
   ax3.xaxis.set_major_locator(x_locator)
; \' N: Q$ r+ Y+ I" X( F1 g   ax3.yaxis.set_major_locator(y_locator)0 d) x% }) Y/ l) v9 g
   plt.xlim(0,100)1 u- F. J3 _% o
   plt.ylim(0,100)7 \1 z- A  t6 E0 S
   plt.title('聲音、音量散點圖')
. Q& X8 a: g, `; R" b. R, _   ax3.scatter(loud_list,bri_list)
: c! M# s9 F" c8 K/ T! T   ax4 = plt.subplot(224)4 `2 U3 n; N0 K1 |! k
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
8 d  Z* b4 E5 `' m, _4 x( }   plt.title('童芯派電量')( ^) }0 T, Z0 B4 L7 r; U8 H
   plt.pause(0.2)* w: p' A3 F1 _7 E
   plt.clf()4 v+ m3 P4 H$ G) Q9 [
   if cyberpi.controller.is_press('a'):
% _4 |+ r! {0 [2 g' }8 t       break2 o& ^% S0 O/ L4 _& n
   if len(bri_list) > 500:
( C6 o) k) Z4 Q; l0 o  R       bri_list = []
7 k" f# U8 _: \        loud_list = []/ v  M+ a: P+ d9 J  t

* h: f6 P1 ]/ v' c: ]0 l

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-29 00:39 , Processed in 0.026650 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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