圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 7710|回復: 0

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

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

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

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


! ?+ H) n5 o6 I3 y
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。$ n6 i+ T5 B! d  u
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)/ X6 B, m& N: w2 B( h1 ]7 T! k5 M( L5 `
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    6 d, s% Q; U5 N- L# U

! P' K' _3 {. Q1 ^! A- S, {; W
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟): A9 {. t5 u% d% [  z0 Q5 {
0 c" c1 I! @3 U/ T. I/ O% v# v
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。& E! ~0 @% g7 c1 L# {

; E3 ]+ o1 E. K% R
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    : o2 h" G7 w' ?) J

! v3 u' a6 ^% u3.童芯派第三方編輯器程式設計準備, I0 s8 g+ C2 t- O9 S
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。% M& W. J2 A8 v* E$ G" ~$ v& ]
2 F! c) R0 U* P7 C- j, R. p
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。/ F. n+ x+ f2 r& a

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

2 h$ ?' F4 i0 G1 ~6 V
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    4 O7 Y, x) a3 ~6 I/ e

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

0 A$ G( Y, k6 P
查閱cyberpi API文檔見:童芯派API文檔
# R! U' k- n( [: B
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。- p% N) W6 L& A3 P! W

! n( O8 x5 r7 `( `4 w, A4 H
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
% n+ J% u2 D  d9 T/ `
5.一些程式設計案例
8 n2 I# M6 b" R. j" q童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
+ R! w6 e4 J5 g: `% ~* z+ j5 A6 `
功能介紹:3 W& V5 j/ M4 _  _  ]
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
* N7 n: |. K6 Q通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
$ P9 M, T+ _" A結合藍牙模組可以實現無線滑鼠的功能。# K+ }5 N% o) r% H
% S9 ?3 M, q7 e! D- h- @' U
from pynput.mouse import Button,Controller; f' a1 M. i6 Q1 z. j
import cyberpi! u# {5 d8 O! [$ j0 [6 K1 `
import time4 V. j+ i- d; g& L( G& W' V, D5 m# O

+ C, O% u; F! X/ o+ rmouse = Controller()+ x9 Z* P7 A6 V
: d/ r+ a) R' _* [% @
while True:/ z- `6 g9 O3 `
   if cyberpi.is_tiltback():
4 p- V8 M: K0 S8 r$ D       mouse.move(-3, 0)( ^7 A1 U, [6 }" a- w
       print(mouse.position)! Q3 q( h( s" e9 y4 Q0 `  P$ P8 Q
   if cyberpi.is_tiltforward():
3 g1 o" v* s/ {: _' n. W& y" u       mouse.move(3, 0)
$ x/ B" ~" _4 V0 ?' G6 u   if cyberpi.is_tiltleft():" X0 b4 L, I% n' l1 ]0 k
       mouse.move(0, -3)
7 F5 I/ }# y5 A3 h1 @1 Q   if cyberpi.is_tiltright():
  T, [) `: b8 w! g; q       mouse.move(0, 3)+ b+ l9 K% K# J5 K( a2 Q4 A3 [
   if cyberpi.controller.is_press("b"):
; x- c6 p- F$ b; D. r/ s       mouse.press(Button.left)
- d8 _8 l, L' a$ i& S/ W$ p6 j       mouse.release(Button.left)
! M% C( {/ ^9 J5 j( F- D7 [( i       mouse.press(Button.left)
; S" w' t7 M8 g8 _* L. ^       mouse.release(Button.left)
1 W. U$ ?2 {% I  b! u   if cyberpi.controller.is_press("a"):6 D5 k7 N5 E  G' v+ m4 I
       mouse.press(Button.right)
4 w8 B- w( @" _( i0 t" y9 U  P       mouse.release(Button.right)6 t( `& D; x7 l) Z: B: Z
    time.sleep(0.01)4 e3 q: E6 t9 Y( T" P# Y) K

$ j3 \- Z6 ~% X: ~1 K) h. e) G" a0 ~
語音打字器

+ E" D' T! n9 Y9 @功能介紹:
4 [1 A- M5 D' e: s- M" M) q利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。$ O+ C* h" e; E
將語音辨識的結果通過pynput在文檔中打出來。- M0 l8 B! m- u) T( K2 d$ r# g5 ^! ?
該程式目前只能支援英文。$ y& `) }2 B6 |2 z* t

6 v  Y! Q: r: U! X" t% Bimport cyberpi/ L) C9 k! E/ f$ H% [
from pynput.keyboard import Key,Controller
0 ]5 Q# C, e$ s( x6 `) bimport time
2 _' `1 k$ T0 l* y0 H" S& U( O
8 h2 D0 z2 m* o5 G) Ykeyboard = Controller()
9 n0 U) \+ Y. I# Ecyberpi.console.clear()
' Z! A# W) e4 e8 o7 ~cyberpi.led.on(0, 0, 0)
/ ~) Q! U5 [* J9 ^cyberpi.set_recognition_url()
! `$ H3 q; f$ T- R/ jcyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
+ k: O$ j. q' Q8 w2 J: S* \! acyberpi.wifi.connect("WIFI名稱", "WIFI密碼"); c* h2 u- Z: a$ o5 G6 U. C
while not cyberpi.wifi.is_connect():- e2 P0 X9 g% r5 {) q' ?% T/ e
   pass# s) j( u5 `& Q8 _8 ^! T
cyberpi.led.on(0,0,255)" F0 A; Z$ @4 {
cyberpi.console.println("WIFI已連接")
3 S  k% i. ^+ R( e4 K* n: Hcyberpi.console.println("--------------")
& g$ O- G1 s; ]! f1 e7 ccyberpi.console.println("按下A鍵開始語音辨識"), @, X3 ~( }+ K+ C
while True:" y* t; E! @! ?" J
   if cyberpi.controller.is_press('a'):
0 ~5 B# S9 r8 f       keyboard.press(Key.space)
9 X) z! Q, m' A9 J4 {       cyberpi.console.clear()
# n+ Y1 @$ l8 Z5 |       cyberpi.led.on(100, 0, 0)$ K6 n  @" I+ @: c8 L9 s- i  N
       cyberpi.console.println("開始語音辨識")% [1 }4 D! s' C; L) s: |: f/ F4 ^
       cyberpi.audio.play("switch")
8 ]0 \0 y9 X, z       cyberpi.console.println("--------------")- Q, b. G+ l" o1 i
       cyberpi.cloud.listen("english", 2)
5 a! O  F( c9 B* h2 N+ u, N: w       cyberpi.led.on(0, 0, 0)
) q) h# _0 {/ h- m; s8 `       say = cyberpi.cloud.listen_result()6 Y) r9 P4 }- o( p
       cyberpi.console.println(say)
5 S: D+ d; j$ z2 i1 v* p1 f+ x) \; r/ y       cyberpi.console.println("--------------")+ S7 `# i$ H3 c$ \* e% E
       for i in say:
( l, z: T' R: }! i0 c( p( K! Y5 A( n            if i == '':
- m, l" a, a% C1 g! g3 P  q                 keyboard.press(' ')
0 ^' N4 I, s* M8 X! E% w4 {            else:6 `  w" h9 L- ~' r, X1 I" |
                keyboard.press(str(i))5 ?) Q1 S! z; W1 Y9 p
                time.sleep(0.03)4 K# j  J7 e1 t  F& y2 a: U0 ~8 e

' ?2 J" D/ f6 S8 l9 fmatplotlib音量柱狀圖

4 ^& M& u+ d! f- q) yimport cyberpi
" D4 g. N, b3 `2 d! u( ^2 aimport time
+ W  i$ l4 n- X4 L1 v/ Y) N1 H" Dfrom matplotlib import pyplot as plt7 P7 H+ `% Q' r% T- A4 F

+ s9 O; ]+ a6 @( @2 s) c5 M7 X% S  Xplt.rcParams['font.sans-serif'] =['Microsoft YaHei']
6 f* |& u6 N% P" t, {9 aplt.ion()
$ j5 g9 R6 \2 {9 W* y" b
! m% U1 U  R( ~$ @7 Z: }while True:  u! \! }# }8 C
   loud = cyberpi.get_loudness()) }: z1 S+ Z1 S. o  T" G: y1 ^7 u
   plt.clf()
  o9 ~9 D. W0 }9 I   plt.xlabel("數據名稱")4 z( L, H! f* I% r' L
   plt.ylabel("音量讀值")
  F) y% Y. n# H1 q   y_locator = plt.MultipleLocator(5)
  K( [6 T; {8 R3 n  h   ax=plt.gca()
9 y0 a8 o' {3 W% ~6 c, {   ax.yaxis.set_major_locator(y_locator)/ J1 U! V" m- {, W# @+ u% G
   plt.ylim(0,100)
6 c+ H& Q/ M0 y/ I8 s9 j- C( `   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
7 _6 S( H+ b- x# A2 T   plt.title('童芯派聲音感測器讀值')
" }/ e& T. \3 W5 s4 Z) l   plt.legend()
) ]; |7 I, x2 Z! Y   plt.show()
  c2 K  f4 k0 b/ W" v6 E1 }! m8 [2 R4 O    plt.pause(0.01)8 |1 \1 M! ~" o6 G3 ^2 ^  a' _
' N( m, i# P; b. b- O; I

5 N/ Y; L: D8 I9 O. O- k1 w$ cmatplotlib 多圖表顯示
! s& p# |" q0 i1 ?% m3 F

0 y( W% Q3 v0 W- m$ {" {from matplotlib import pyplot as plt3 O+ A$ v( {! H: \
import time
6 y" ?" y: \! y, E: vimport cyberpi
6 h# Z/ b3 N. F9 S9 s$ q8 M 7 p* @5 C6 m8 w; i* G0 @6 O( ~
loud_list = []
) I2 g0 N+ F- S6 vbri_list = []
  O0 D, Z6 M# o. W4 w4 V' _2 Rplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
" Y: b+ m6 V8 l: p" ?plt.ion(): X/ C: C8 ]' w
plt.figure(figsize=(10,10))6 c/ Y0 e) M1 o1 n% |' C! }
plt.figure(1)
! I$ t& t4 A. ]" rx_locator = plt.MultipleLocator(5)" ]& o% M/ G( T9 c; Z
y_locator = plt.MultipleLocator(5)
5 Y' }, J( X! R! y% U+ M- Lwhile True:( ~' ]5 }5 e1 C# ^5 D
   loud = cyberpi.get_loudness()
/ I: h  T/ v+ v( j   bri = cyberpi.get_bri()6 B3 W7 c4 J. Y" E1 H
   loud_list.append(loud)2 S- k* s2 `% m7 [! I( q
   bri_list.append(bri)
) J' x! o1 G% F! k! t  E   battery = cyberpi.get_battery()
1 {! R, j" U$ `5 d! C9 G   size = [battery, 100-battery]
- J) E. k  R; }8 x. c+ i   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
( ~6 v) H0 H2 i3 e1 ?, s/ A   ax1 = plt.subplot(221)
4 V: z" F3 b0 O- R3 [! v( E   plt.title('光線折線圖')
/ f! d  B3 {# ?, @$ {* U   ax1.plot(bri_list)' m" E( y6 X: W! H  J& S
   ax2 = plt.subplot(222)9 G& |1 L; W6 A0 m) f% Q0 @$ V
   plt.title('聲音柱狀圖')
2 k: R5 g8 O- }' f$ l3 ~+ w   ax2.xaxis.set_major_locator(x_locator)
, O" t9 e! k6 u/ `" a* k   ax2.yaxis.set_major_locator(y_locator)8 M* c" E) K+ Q( o1 s7 S
   plt.ylim(0,100)
$ H- Z6 \% J  [   ax2.bar('sound', loud)
" R7 e' }# i+ }/ O1 W$ J% T9 ~   ax3 = plt.subplot(223)5 J4 Z' b& S& r
   ax3.xaxis.set_major_locator(x_locator)
4 h0 L& Y3 L; U) v   ax3.yaxis.set_major_locator(y_locator)0 r/ p1 _. |& L8 j; @& J- J: y- z
   plt.xlim(0,100)4 V  }1 Q" Q2 \3 C8 j8 J- M( }& Q: |
   plt.ylim(0,100)
. ?2 _3 H# R. \2 k   plt.title('聲音、音量散點圖'). ~# O5 Q. s- T/ C4 v
   ax3.scatter(loud_list,bri_list)
5 x- d8 U: o5 @( S. h' b$ k" }, w   ax4 = plt.subplot(224)
5 ]5 H+ X- V3 x& }1 F" }   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
. D: y2 z9 Z6 ]* s   plt.title('童芯派電量'), e) f% q4 k  X3 t, E$ I
   plt.pause(0.2)
# e& l) b( G7 {' J0 M   plt.clf()6 r% }5 G- @( z! w) G8 @; X2 g
   if cyberpi.controller.is_press('a'):$ f  y, s* b- P" Y! J9 h
       break" S! ~: O: B6 O8 y' |- A, o2 k
   if len(bri_list) > 500:5 Q0 n. U2 X1 A# f
       bri_list = []8 H0 j; s2 ?6 ?! h# ~5 j
        loud_list = []
( B% p( \& N& ]) k" `( P
$ {3 H! N) C, J" }- I

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-6-28 01:05 , Processed in 0.029526 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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