圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8509|回復: 0

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

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

/ d) h' y& ?/ u) _7 U1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。7 \) V1 {: s, O' L; [  G

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

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

  s3 ^; E' x! O% x/ T
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    9 S. W, G& R# @, s: }  r, \. K1 J4 B) Y
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    - j" o! I! i$ m
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    ! v  p& F$ D# o9 w" j
3 y1 I+ ?7 p8 I2 o
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)3 C* k* T! Q* H9 X( `9 G6 f8 D% C- L
/ T# L  b! v' @) f! r) c( Y; F+ z
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。: T9 R6 D2 g  N4 P# C

% G$ r$ \; ?4 ?
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    $ B* ~( W' ]( q
- H$ `9 a6 A7 Z, h- P) ^
3.童芯派第三方編輯器程式設計準備* P; `2 h7 I% ^0 |. }
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
      y  l3 |6 @" o! ?9 m- e3 T
2 s+ ?# M& _% M' e
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    0 ~+ L1 X# J+ \2 d" v6 E) p& W. Q

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

! [- c7 r7 x; J) n. |
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。. ?% u- L6 |) b+ a' P6 Y

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

6 c8 Q% B# e$ X) j
查閱cyberpi API文檔見:童芯派API文檔

& D. ^* T* H4 Y" T6 m( q  c
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。, L) V: M, ~- o3 q& ~1 f/ n) q; R6 `
& @% T# H( ^/ ^0 h8 w
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
) \5 L4 x# x8 L8 |: F5 A
5.一些程式設計案例
# n' M0 q0 w0 x童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

- j5 w4 E1 y- o5 s功能介紹:
% ~: z( K# G( ?. b利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
8 {, z+ Q/ S  v$ y通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
8 a  g9 i5 m" v( C+ \2 l- Y1 i- e結合藍牙模組可以實現無線滑鼠的功能。
% E8 P, T* g2 V
: N9 \2 ]4 t- j* w' \2 K6 N# _from pynput.mouse import Button,Controller! K- W! w7 g& n$ `4 k
import cyberpi
5 O$ W1 M% H0 zimport time
  p7 P  L6 p4 G& }/ b" L# H/ s+ b7 n 6 |# z" {+ {5 t1 n* L0 b# C3 T
mouse = Controller()
, w& P$ h9 p& t( M * u/ U, r& u  ^" W- J# L
while True:
/ b* b7 {" Z; @. |4 @# \& x1 `7 A   if cyberpi.is_tiltback():- F( B) n4 j" x. Q( d. _' t! @
       mouse.move(-3, 0)% t4 w" o- M) L% ?9 `1 g
       print(mouse.position)( |- J3 b, y, w
   if cyberpi.is_tiltforward():% Y. w  @9 E( b7 i9 _, S. j
       mouse.move(3, 0)
5 z* G( {. p  `   if cyberpi.is_tiltleft():
) b" r$ C# q# d) |" B. P5 i       mouse.move(0, -3)+ }' M( O  ~" l5 T2 Y( `
   if cyberpi.is_tiltright():
0 Z5 Z6 S2 L8 _' _' J       mouse.move(0, 3)
4 U$ \  p' t6 o% }   if cyberpi.controller.is_press("b"):' H# _( D) @$ R5 Y& C& w
       mouse.press(Button.left)
! f1 v( \; u- N1 a: J& }$ {       mouse.release(Button.left)
) d$ G0 s: @' ^/ @+ t% V$ G! D       mouse.press(Button.left), l/ n8 C0 V- b' X1 j
       mouse.release(Button.left), X5 e6 L! F% L4 {
   if cyberpi.controller.is_press("a"):+ F: Q# I' c9 e5 \
       mouse.press(Button.right)8 i3 ?9 v( u5 R# w& {4 a- Q  D/ `
       mouse.release(Button.right)
+ a4 ~$ @4 Y# r2 S/ @/ X/ i. q  e    time.sleep(0.01)
8 m* Z2 h9 V0 {4 N+ U! ^; k" {) Q7 E: b# H5 n2 L5 X7 x  k
, m) h- S: P1 W
語音打字器
7 }% ?7 i% n  K( F5 ]
功能介紹:) N6 r( n. h1 L. v( I/ r
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。/ X$ Q* s9 E0 O) c! u5 }. D
將語音辨識的結果通過pynput在文檔中打出來。) D0 p- `" n3 p) V
該程式目前只能支援英文。
6 o; R# E6 l, H" R" G/ }& H8 f3 `- B5 t) z0 m
import cyberpi
2 r: p3 ]* c- P- a& wfrom pynput.keyboard import Key,Controller# L9 G* I$ ~% x
import time/ r7 O3 M% O. ?- j
' a- u' E0 }( m% @2 N+ c" ]
keyboard = Controller()( Y1 _' f( H+ A) ^
cyberpi.console.clear()3 }) t3 a% S# x5 ?
cyberpi.led.on(0, 0, 0)
. F; ?3 K$ Z0 j+ X) B& P6 g6 Ocyberpi.set_recognition_url()
# H( ^4 F- d( P* ?8 Kcyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得! }9 l* S: C0 w1 b( K3 Q( q
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
" _- N9 x9 D+ c9 U8 t' p; b; H4 swhile not cyberpi.wifi.is_connect():
" D1 W* `. X5 a5 j- x   pass
' ^9 S9 l5 T3 u) Q# ocyberpi.led.on(0,0,255)
. Y1 J# Z' Q- Ycyberpi.console.println("WIFI已連接")% I7 x. S- I- T6 ?
cyberpi.console.println("--------------")5 q% Z4 e+ \) Q( N, L9 x
cyberpi.console.println("按下A鍵開始語音辨識")1 F2 r  n/ i4 u' _
while True:# S5 w2 h1 o9 x; h+ t: D3 t
   if cyberpi.controller.is_press('a'):
% D* e6 k/ Y! Q  p& U       keyboard.press(Key.space)
9 O+ N2 Q' \" _) ~# C; |8 h: Q# |       cyberpi.console.clear()& O) Z9 f) ?, x+ p- s! P
       cyberpi.led.on(100, 0, 0)  g* z" b; v& r$ o  Z  {
       cyberpi.console.println("開始語音辨識")
' u' d) L8 R6 A4 F8 R       cyberpi.audio.play("switch")
* d& [$ |* ^/ R" {9 q9 ~       cyberpi.console.println("--------------")
! \6 R4 Z5 b6 @. R       cyberpi.cloud.listen("english", 2)
* e/ ?+ w4 f* m& r       cyberpi.led.on(0, 0, 0)0 ]' `0 L8 l- ]/ s3 P0 h8 W
       say = cyberpi.cloud.listen_result()6 o; g6 n2 ?1 u; @* U; K
       cyberpi.console.println(say)
( E  u! S/ V, p& f1 c2 j1 D" X       cyberpi.console.println("--------------")
- J7 u, {- \: d5 R  c% v) P& t) C7 b       for i in say:( |' R/ J# T* n9 U
            if i == '':1 W5 `# \* }; m) a9 [
                 keyboard.press(' ')( N5 Z4 k; ^, @
            else:* ~/ D/ O0 h3 ^8 ]0 z; {; O; h6 E
                keyboard.press(str(i))
/ w1 {' X4 O& r; j7 p                time.sleep(0.03)
7 g& I7 G: q; w9 ^+ C& b
+ p! C, a8 B/ H8 f; _" C) e
matplotlib音量柱狀圖

1 I8 v  O0 w! L, n( f% j, E* c1 r; Iimport cyberpi
" J% Z- }& q8 t6 d5 n2 Aimport time
! g) `$ Y3 v, }( @2 cfrom matplotlib import pyplot as plt& N9 r. n8 S- V# J) g
1 O+ ?+ s' ], p& I- C
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
! g5 M( v' t2 e( w7 Mplt.ion()
+ P. F" h! I2 M ' ?- w5 p9 {; V! N( P9 f4 `6 M9 |
while True:
5 `: H. u7 H& x/ J8 i  L   loud = cyberpi.get_loudness()
: o# @1 I$ q8 h   plt.clf()! G& g# U" g. i; H$ Q
   plt.xlabel("數據名稱")
1 v# b4 @: N1 Y6 k! z. ]. ]   plt.ylabel("音量讀值")
% D; M2 u. G( t; H   y_locator = plt.MultipleLocator(5)
0 G& o5 n, ?& w   ax=plt.gca(). j, u/ i# n9 Q0 ]7 F
   ax.yaxis.set_major_locator(y_locator)1 J- @( `" I0 `! c+ Y8 i- f
   plt.ylim(0,100)( D' [, ?! O4 V5 E- u5 b
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')5 {! Z& l& G9 C# f
   plt.title('童芯派聲音感測器讀值')+ X. K2 h+ t! [
   plt.legend()
! y7 z/ R6 W" }. R6 T   plt.show(), s' ~8 X" Z* l2 v( r, H  m# g
    plt.pause(0.01)
, U% v/ E% y. d: h5 D8 r( |+ U$ y) E4 ]* m! M2 x

* u7 ?0 w7 }+ Y. `matplotlib 多圖表顯示
3 q8 d3 H  C  a4 R0 O
7 x4 H* |2 b! H
from matplotlib import pyplot as plt
' [( R* ]+ e, E) B: l8 yimport time
  s% |8 q; A; Oimport cyberpi5 Q% U7 L  f: r/ I( t' S
" u" T' l8 Q) C+ y
loud_list = []
/ T1 f; H3 l! {9 ]) u7 ~bri_list = []6 ^6 x, W& H' ?% R- G
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體2 g+ S/ {9 e* a2 P& L
plt.ion()/ l8 u4 C* l: q3 j1 }# z, o
plt.figure(figsize=(10,10))
5 P, {4 c/ r- M8 _- ?plt.figure(1)
5 N/ B1 t) X2 t+ I9 I$ ux_locator = plt.MultipleLocator(5)
7 e- C  q4 T$ r  Iy_locator = plt.MultipleLocator(5)
& E; S3 v9 X" K# xwhile True:
6 E0 a# h0 ]4 o) S   loud = cyberpi.get_loudness()# }2 B! [8 O- H# v, ?$ ~8 I
   bri = cyberpi.get_bri()( T2 W+ D. g  I! Z* G3 b( T
   loud_list.append(loud)# Q1 t3 ]6 b3 l7 @7 w' Q
   bri_list.append(bri)
* `: P& y9 F- o$ s, U0 w4 _   battery = cyberpi.get_battery()! V( ?: x( a1 T( h+ N8 `
   size = [battery, 100-battery]1 M2 M* s! v' E
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']/ v- F4 F5 z9 e2 C6 |
   ax1 = plt.subplot(221)
3 A  z7 c+ ~' D8 M3 @4 [   plt.title('光線折線圖')
% Y+ n  g9 n- F/ o% D   ax1.plot(bri_list)
2 m; A( X8 y$ B1 \% O) P' l' _# r   ax2 = plt.subplot(222)% k0 J; [6 \! L) {2 ~' d( X) K" ?
   plt.title('聲音柱狀圖')  k* W! v4 c' S
   ax2.xaxis.set_major_locator(x_locator)6 ]6 T, j. G' T! H
   ax2.yaxis.set_major_locator(y_locator)
7 f$ a3 f* c8 a* j   plt.ylim(0,100)
3 V2 k) `* G9 {" Y  B   ax2.bar('sound', loud)
7 s4 ]1 |6 j8 b% r4 @* ~   ax3 = plt.subplot(223)& o" e/ _' H. A4 `% [; T
   ax3.xaxis.set_major_locator(x_locator)
( W5 O$ g% \. \* }: l0 @   ax3.yaxis.set_major_locator(y_locator)7 Y. w$ n! Q- v, ]; [: b: C
   plt.xlim(0,100)6 k# X" y6 z) b- F: t5 S
   plt.ylim(0,100)
1 l8 z2 M- \- ^* i4 s+ d   plt.title('聲音、音量散點圖')
" |- b; w8 j/ T! Z+ r   ax3.scatter(loud_list,bri_list)
$ u5 r7 o. Y* T   ax4 = plt.subplot(224)
! K" t/ k) q4 Z% D/ g   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
0 J8 \7 R# u$ \' c$ Q; I$ U1 Z+ s' |   plt.title('童芯派電量')7 {) O% f; w) {+ _& o6 `
   plt.pause(0.2)
' e2 N- c" G- w9 e8 h$ D* H) a% F" A   plt.clf()
* _5 w0 O& g0 y4 [/ e$ X' x   if cyberpi.controller.is_press('a'):
" d6 Z' m  K$ C) [9 X- @/ s       break/ u: x" Z; u9 `# e: X. j2 t& o. L
   if len(bri_list) > 500:9 o; q- t- {  ?" L
       bri_list = []8 f4 {$ X7 M" k) v0 `  t7 C  G* G
        loud_list = []* G! |6 b1 ]8 [- c+ f2 `2 I
: g3 @" R7 Z) r' ]

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-3 03:17 , Processed in 0.027045 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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