圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8221|回復: 0

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

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

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

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

, r2 V  n6 |/ H
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    - Z& \3 ~) \: s! L, P# N9 z
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    * V' m# `8 O7 D  b! |! R% d
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    6 \) M% x) R: K. b# w5 `. Y( a5 c

: ?5 R1 s* M, f- p
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟); `% x* `% E0 A: ]4 _0 P! z9 e- q

) W; v$ B; u. ~6 W1 R' l/ t: d
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    * x0 J9 F7 X; |4 R( d6 b0 M7 ~0 W
( }; ]8 e* |  w
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。  ]1 t! y0 A0 T& [" T! `
6 X! H$ l, z; L& i: S+ M
3.童芯派第三方編輯器程式設計準備
& P: R1 G! z- @" o3 v1 U
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    7 ~- k. a9 [! z, ~4 g5 ~. z" _
! D3 w) i4 q% p) G
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    9 N- B# v+ s1 }

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


. ]8 _( ?. G* t, y9 `3 U
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    9 v* w, B. x8 ^: P8 A# F. C- L

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


5 r- H  Y1 d8 _
查閱cyberpi API文檔見:童芯派API文檔

# W# ~6 j, @, w. N& O, N! M
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。6 S2 c. t* ^: G# G& Q

/ G# R2 _- T& Q& V" S( t& f
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

( j- K% l& L# B  Q- W9 m: n* R- Z* e5.一些程式設計案例8 i7 k4 d' K* ~3 d8 [7 B& s) B
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
/ V6 U4 `' ?4 h1 J
功能介紹:
, D0 \( x0 N4 J$ R! r) L! [+ M利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
1 a  Q3 D" J. \$ J% I4 Q) w通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。- L3 Z7 j5 n, |! r
結合藍牙模組可以實現無線滑鼠的功能。
+ Y( c4 a8 h" @4 c& P' M  Q7 w# s' E5 h6 `- I$ B
from pynput.mouse import Button,Controller
" a; I  i! X2 B. m% W4 c" Gimport cyberpi
- N7 V% V' X" q, D. R( P3 r1 gimport time
4 X: y9 o1 v( q$ K* N& m
4 L; S& O- @4 n7 D& Z2 ~" Cmouse = Controller()
( U3 ^) q4 ?. Q" }3 U " E9 A  }: Z" Z3 D
while True:
7 |( C( F: Z. ^0 O: f1 r) @2 `: e   if cyberpi.is_tiltback():
1 e/ P0 P- @% W3 r4 a' i: J/ S       mouse.move(-3, 0)
& ^; l+ C7 v' Q& k3 R       print(mouse.position)7 C8 K! j1 Q6 n8 z( G: J
   if cyberpi.is_tiltforward():* Z' m) |$ L; ~# d8 P- {
       mouse.move(3, 0)+ j3 |6 |) y6 k1 S' i& \  Z. z
   if cyberpi.is_tiltleft():6 \3 |. c. n% k. p" I# ?5 D& l
       mouse.move(0, -3)7 t6 P2 M$ u$ v, |4 d
   if cyberpi.is_tiltright():9 Z* r+ ^' _+ a1 J% ]" d* a& l
       mouse.move(0, 3)3 d4 H. E) s$ w2 t" D# e
   if cyberpi.controller.is_press("b"):, D5 u% t: ]+ Q: K0 ?
       mouse.press(Button.left)( ~2 j" e& }8 M" U: L1 ^  u; A
       mouse.release(Button.left)7 X* j* ?- @' V! l
       mouse.press(Button.left)7 U9 \1 ]/ y% k& N, E) @
       mouse.release(Button.left)2 h( E& ]6 Z' O7 N3 V
   if cyberpi.controller.is_press("a"):7 P$ {1 U. E  u% n- ?* ~* y
       mouse.press(Button.right)
' A4 C/ c2 ~* l& J: `: {* F       mouse.release(Button.right)
; \; p3 t" @! R# p& T" ?    time.sleep(0.01)
9 C  h3 J$ U9 b1 ~+ m% h) @
) b: }# @! g+ m) C+ N  @9 r7 N5 V8 z+ M3 B1 ?  y+ W" C
語音打字器
! t, Z  q! r  d* C
功能介紹:
" J# j! n  \0 \$ K  J利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。. C' p, i: h4 [
將語音辨識的結果通過pynput在文檔中打出來。/ r- K: N1 s" ]$ n* H! d
該程式目前只能支援英文。  ]3 ?' w8 n2 n# N4 b/ n: y
& G8 i* y) N5 H( c$ Y7 c9 [% ?
import cyberpi
' Y4 P4 S6 V" V& Yfrom pynput.keyboard import Key,Controller) m. [6 C) ?: b, T
import time3 M+ ^& V, \- H$ U
# D, I5 D- u( ]' n! `
keyboard = Controller()
- p0 k( @6 v% t  `3 ycyberpi.console.clear()
* `! G# v1 J' H, ncyberpi.led.on(0, 0, 0)
) d9 f4 j1 G, }& A5 ocyberpi.set_recognition_url()1 c- B; j4 R7 a
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
" ?2 c( [, H/ v  }cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
; m* p: T! A' x2 Uwhile not cyberpi.wifi.is_connect():: L$ w$ q" x3 W3 d0 @3 K
   pass9 j& e; H* w. W
cyberpi.led.on(0,0,255)
, j7 r: _: V: [: L0 \: |cyberpi.console.println("WIFI已連接")' q, G( U+ r# ~' D( w5 R  o& D
cyberpi.console.println("--------------")' w; T3 c  e: C1 k- I/ Y5 t/ |6 A
cyberpi.console.println("按下A鍵開始語音辨識")
- u& f1 ?) z5 e' _- Hwhile True:
; d2 t6 K6 r+ J/ D   if cyberpi.controller.is_press('a'):+ z6 f4 q7 g2 j1 y4 S  u1 n
       keyboard.press(Key.space)
8 B$ K! d$ W! h( `: k% I' A       cyberpi.console.clear()$ X8 K( ?. j' b) V& G5 ?% l
       cyberpi.led.on(100, 0, 0)
7 _8 t. `8 m3 G* B5 o       cyberpi.console.println("開始語音辨識")
6 Z' c' Q- T0 k! |% t0 ]% k       cyberpi.audio.play("switch")" K' x5 u- ]$ X  e
       cyberpi.console.println("--------------")
9 j5 Z& Q- i/ M9 |$ ]. t% D       cyberpi.cloud.listen("english", 2)* Y: \  P( x! I+ U0 F: z' E0 p
       cyberpi.led.on(0, 0, 0)8 O  _9 H0 o5 v4 D- g6 ~( Q
       say = cyberpi.cloud.listen_result()
4 p5 b' j1 e. F& T* f) I       cyberpi.console.println(say)( e( U& ?( ?1 j$ Z+ h# V
       cyberpi.console.println("--------------")
9 G3 v  W9 v& Q; J2 T+ _       for i in say:; e: _( {: X* B
            if i == '':
, X! c: G1 ~8 L1 s                 keyboard.press(' ')
- A; W9 S! V8 y8 @6 |            else:; X% M' j  e9 O+ o5 v
                keyboard.press(str(i))
- j+ m5 i3 q  ?+ w                time.sleep(0.03)" [0 p" Y' \, P5 t! [

6 y- P: J! {' B5 K) ^1 B* vmatplotlib音量柱狀圖
$ H( a, C9 O. M+ w: p
import cyberpi
! r/ Z8 u+ L) q+ M! ]9 n8 G3 ]import time! c2 g1 k# m2 G& {
from matplotlib import pyplot as plt) Z) B) N( J8 F

* y. m+ L5 k, H7 S, S" d* fplt.rcParams['font.sans-serif'] =['Microsoft YaHei']7 y$ Q# O8 s% m. O- Q% p8 y8 r6 Y
plt.ion()
, u5 F% n, P3 E  G 6 |+ D  t$ Q' h. n
while True:  f6 Y' G6 @- c2 l& m
   loud = cyberpi.get_loudness()
* O2 p* M0 R1 L$ p8 ^5 H- N# d3 z   plt.clf(). l! _1 @( d& ~
   plt.xlabel("數據名稱")
7 `+ h2 N2 {  p, t/ i8 t/ |   plt.ylabel("音量讀值")% J0 n  i: a8 j0 g  o- k: I5 h' O% \
   y_locator = plt.MultipleLocator(5). g& \8 Z1 c+ i+ x* W1 I
   ax=plt.gca()
! S9 b+ j/ k. ^5 k( r5 a   ax.yaxis.set_major_locator(y_locator)# @: M1 R& }4 a5 p; j; I( M4 f
   plt.ylim(0,100)
/ [6 Y+ X: }7 W2 v) M/ a: v% ?( o0 ~& Z   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
8 N+ e! L# h+ J, K7 `& `9 U9 h   plt.title('童芯派聲音感測器讀值')6 t; Q  M8 n" I: {3 m
   plt.legend()
& {1 O9 A7 C2 D* }0 T# F   plt.show()
6 F, n, e+ m/ i. T1 h7 q    plt.pause(0.01)3 I' u2 X$ {8 l/ r9 }5 \
6 \6 [. W" q# h8 P
- q: f6 w. ?- J1 `9 v( v
matplotlib 多圖表顯示* r9 i4 R; j+ M: T8 [

# X3 V) k- m# F$ \from matplotlib import pyplot as plt
+ N& O# T2 A$ }" E6 h$ uimport time
. t3 k8 l6 x* ]/ f, O2 z' bimport cyberpi
- E9 L! [+ @3 i; [, Z- b
7 ]4 y8 Y& H. o& C. l; }loud_list = []
; ]3 \( U+ i( q) Q3 tbri_list = []5 m& V6 e1 t5 R, T: U# Y
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
# E% `5 ?9 u$ g- Yplt.ion()6 Y( C( o) H) J' M1 G! w! S) f  k
plt.figure(figsize=(10,10))" R7 {- [) R- |
plt.figure(1)2 C2 l8 C3 t# z; R
x_locator = plt.MultipleLocator(5)- b( V% @% y" H6 v
y_locator = plt.MultipleLocator(5)
8 Y8 ~- l7 H6 N7 g7 R# t6 {# kwhile True:7 L/ @  f9 Q2 l% C
   loud = cyberpi.get_loudness()
5 }" H' J0 s3 N, t3 u   bri = cyberpi.get_bri()
( E6 U  u7 y# m! @5 S   loud_list.append(loud)+ ?4 i: p: V( O3 e
   bri_list.append(bri)
, W; Y* f8 f* r6 k; @  x% X  [   battery = cyberpi.get_battery()
- k5 G4 Y' K) k6 b% A8 Q* ?6 Z   size = [battery, 100-battery]) D) v9 O, R2 Z6 Y  {
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']8 [2 ]2 Q9 ~% ?, k
   ax1 = plt.subplot(221)
' q3 y4 }; y& p( {, l8 ?   plt.title('光線折線圖')
8 P3 |" F# M9 z& }   ax1.plot(bri_list)6 K# @9 b4 y: r7 P5 y- S
   ax2 = plt.subplot(222). y- k, D+ V( j/ ^7 `3 t
   plt.title('聲音柱狀圖')9 d" ], S9 h* Q( |2 B( z
   ax2.xaxis.set_major_locator(x_locator)
; u$ K; i- |7 w   ax2.yaxis.set_major_locator(y_locator)
: R* {6 y" u$ M* q5 D6 B   plt.ylim(0,100)1 S' S- p% ]* B" l$ v% C$ {
   ax2.bar('sound', loud)
. f1 v+ v5 |! N   ax3 = plt.subplot(223)
$ ~6 l' a+ g& P% V) I  G$ \   ax3.xaxis.set_major_locator(x_locator)
! K" M5 u9 X  ^7 g- f2 H- y   ax3.yaxis.set_major_locator(y_locator); q' {- G% z7 C) u/ A; T6 Q
   plt.xlim(0,100)
7 y) j0 G2 u- e1 [; N   plt.ylim(0,100)4 r: h  A" E: F0 G3 S. I
   plt.title('聲音、音量散點圖')
* Y) i# J, F1 P; d9 A   ax3.scatter(loud_list,bri_list)
" |5 }/ e9 {* w; R2 r( P! }   ax4 = plt.subplot(224)& B0 r* ^) D7 F  q/ Z0 L
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
3 Q  a8 f* h; z) g. F1 a4 P   plt.title('童芯派電量')$ T9 S2 U9 [3 _' l6 W+ }3 f0 Q5 Z
   plt.pause(0.2)
3 V. A. J' e' N& L3 n7 s; ]   plt.clf()! ?# [! X7 M5 e. q& b5 r. D; p
   if cyberpi.controller.is_press('a'):; S. i  v3 H/ O
       break
- a/ w1 p- [8 J# g" {   if len(bri_list) > 500:) f1 w' E2 x7 E& k3 M
       bri_list = []/ r0 h# z/ N: \9 M% ^
        loud_list = []
2 ~- L& u, Z1 l" i$ C. d0 O/ A: v5 O+ e* k# Q' j$ I

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-10-25 23:51 , Processed in 0.028507 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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