圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8458|回復: 0

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

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

8 O0 N  _6 i% E7 v, c1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。8 S& E, _+ t5 q# A9 P% ^

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

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


4 p2 K8 E5 y- b. ^2 b
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    $ Q7 x2 x' Z) c. p! d2 Y* s
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)4 [6 h* ]- ?' M) z4 n* J" L1 y7 k
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
      F7 @" f1 y. |) s. O; R0 Q

) x  z  }" j4 g! J
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    0 d( g& E) A7 k: Q
- U1 ^1 e- r0 W: p
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。. |8 o! d. p! c. G9 K

  L9 ^1 }: ?- L% ]/ u/ M5 X- ^
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。0 B+ H' x6 V5 H/ U
4 Z  b) S, C+ n" u3 e) T
3.童芯派第三方編輯器程式設計準備' t8 X' M* Z8 l# J
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。" d  ]2 e; L; m1 y3 c

3 j' B9 E: K- K( t" H& p1 P" P+ t8 Z
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    4 X5 g& j  M5 t) Y  S

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


: p' f! i6 S! j9 ?9 I! ^
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    , M' K/ |4 c) n$ `

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


+ @# R5 \9 ?$ Y3 A$ R& t2 d6 x
查閱cyberpi API文檔見:童芯派API文檔
$ `9 [: U5 [6 z
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    ) P3 g( r% M4 Q% W

" H: a4 H. b: ~, b8 R# X' P
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
6 o3 \  o2 |" ~5 |
5.一些程式設計案例" S) N- ^( ]1 e' B3 |
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

& K& |5 s0 [3 O2 |% ?% t功能介紹:
" J5 }8 Y: M) y2 O/ l2 R5 V' r利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
' o3 t% T" u" i$ ^通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
( i8 j$ T7 I; I( X4 r結合藍牙模組可以實現無線滑鼠的功能。
! G+ k5 Q; ?, f. ]6 E- C' ]/ g7 _0 f1 n9 b' e1 ?
from pynput.mouse import Button,Controller
- I+ {% ]' z% Y. timport cyberpi
$ f2 c) s- P2 x/ X. Aimport time" d3 ^- F# R- e* }% J8 _$ D! \
4 ~* l# v" I% U$ b) V: s
mouse = Controller(). V8 |6 U; P$ W
0 {, O% A# M- `- f# G4 b
while True:
& Z' w, a: b2 c$ p: f4 P7 L   if cyberpi.is_tiltback():/ ]2 v& O0 K8 \! j5 X  I
       mouse.move(-3, 0)
0 q4 ~# n0 U, `% {# }* s       print(mouse.position)
1 w# n6 M! g/ O2 R) t   if cyberpi.is_tiltforward():9 ^3 i  c) }( N7 \8 C# ?
       mouse.move(3, 0)& c: B; d" z: y* u
   if cyberpi.is_tiltleft():8 c2 q$ ]  q) ], s, F: G0 v
       mouse.move(0, -3), z1 L- P* l- i) M! X
   if cyberpi.is_tiltright():
& V$ w' B& E' e! B1 ]: S$ ^, n       mouse.move(0, 3)
1 j$ V) |! L# }* m7 P, \) \   if cyberpi.controller.is_press("b"):
! w6 G9 H+ E# c" V: R) x       mouse.press(Button.left). M+ p& b. H8 x/ L" s0 N, F# `9 V* u
       mouse.release(Button.left)
6 A# N& @/ v0 i. D2 D( Y3 o5 B  L       mouse.press(Button.left)$ [2 Z  M" j3 L  v  V, K
       mouse.release(Button.left)4 {/ @, I6 l/ k8 D) l9 a" D, P
   if cyberpi.controller.is_press("a"):
8 _5 l" x  w: I" e9 ~       mouse.press(Button.right)9 d9 v* L" z  A! w! k+ {7 l1 `6 X
       mouse.release(Button.right)
& B$ I. ^7 m7 E    time.sleep(0.01)
5 a* |* z4 q6 Y* R6 F$ O$ ^, q3 }  v; `8 ?& t& o& x! A+ [; s
8 j1 \" v, O- G, l
語音打字器
0 M  w- j: @9 i: D. b' }7 T$ H
功能介紹:
) l8 m0 |( j1 U7 |% `' E% o利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。; B4 b8 y  M, U( H! G( @' c2 I: z
將語音辨識的結果通過pynput在文檔中打出來。
5 y3 i0 z. Q- K3 d8 a" G該程式目前只能支援英文。
$ \2 \( z, s6 w- b/ a
4 g, C: X# ?9 U0 b& Wimport cyberpi& c* ]3 J9 m$ \# P; p6 v  g
from pynput.keyboard import Key,Controller: K' h0 Y- u% u% x  [
import time
) I% W6 p/ U! T: A" ^( O4 Q
1 ]( Q! C6 m: Y0 H; v+ a7 nkeyboard = Controller(): [/ K" l( T- ~6 f
cyberpi.console.clear()7 E. K8 j: M$ _4 ]/ J
cyberpi.led.on(0, 0, 0)4 x/ p( s& I! A$ L
cyberpi.set_recognition_url()* I$ l) C, b' L  |! z" K5 D
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
) U+ b: k& \& U5 p! G: j0 Ocyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
2 ?" ?' B4 Q" ~/ x- k/ J' P! Cwhile not cyberpi.wifi.is_connect():* L! Y* D) q5 R0 d. B5 M4 a5 f
   pass
  n& K! R& B. Ncyberpi.led.on(0,0,255)
7 X* d+ x3 r9 W2 J# Ecyberpi.console.println("WIFI已連接")
# W7 w3 g  @( a; F8 V; Ycyberpi.console.println("--------------")4 Q8 l- ], }) z2 B6 W+ ?7 G+ @
cyberpi.console.println("按下A鍵開始語音辨識"); ]# S2 h, b/ x: c# j' s- x5 J9 S
while True:) f" f, u; s! Y( A
   if cyberpi.controller.is_press('a'):
5 D# H8 K6 \  i9 R) a3 V       keyboard.press(Key.space)( w; w! O* Y+ I4 K4 S* Y7 h! ?
       cyberpi.console.clear()
- B5 ~* m/ e( c. F- [       cyberpi.led.on(100, 0, 0)( Q) @5 T+ C0 y
       cyberpi.console.println("開始語音辨識")
( Y( b4 R1 |9 x% [+ }) S. i5 [7 M       cyberpi.audio.play("switch")
. c, O. O, x2 d       cyberpi.console.println("--------------")
' S9 m, C: H7 A       cyberpi.cloud.listen("english", 2)/ E" K2 I  R: ^+ |9 u; X
       cyberpi.led.on(0, 0, 0)! _0 a' o* L  t. v+ S$ H' ~
       say = cyberpi.cloud.listen_result()$ g' q1 n: w) M  w0 ^. r1 c+ w5 E
       cyberpi.console.println(say)
5 [' i( y  Y! F- ]( p! Z       cyberpi.console.println("--------------"). e5 J& Q0 b, [8 E3 D' t
       for i in say:
( H7 G& J1 ?1 |& i            if i == '':$ y$ @  ~+ w2 V, z* b: ^
                 keyboard.press(' ')
) x3 |; D$ m/ E( S2 w; N3 L$ N$ ~            else:
3 W2 {* n" M0 t! H- c7 x" V                keyboard.press(str(i))  W' B2 c" u& M0 c
                time.sleep(0.03)3 A( _( n: x( h  A

  m( Q9 i! f* \' N+ Ymatplotlib音量柱狀圖

& Z* i4 i# E! m2 P. n" Nimport cyberpi
8 Z. u* g- `4 s7 r7 a7 Rimport time
/ i, l" D8 @" l* pfrom matplotlib import pyplot as plt
9 q. q6 Y5 o* {3 R0 F! ]0 D 6 j: H" r" p" v0 G7 ~8 R& y
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']: R$ m: C+ P( W6 H" `9 G% V
plt.ion()
7 n2 w) k9 k/ J
+ ]# j" W7 U$ @" A: ^/ G: lwhile True:
3 }+ j) w% P# e2 F   loud = cyberpi.get_loudness()
9 A2 M) v2 k4 `* `0 ]   plt.clf(). |& l8 E& |8 j1 g* D, Q& e2 H" c
   plt.xlabel("數據名稱")6 `. m4 o, r- k( `3 I, E7 U
   plt.ylabel("音量讀值")
! C1 B( }( g- U% Q! S! z& b   y_locator = plt.MultipleLocator(5)
# T( b* A1 q2 z' [; K   ax=plt.gca(); M5 Q2 ^, m/ T* i! U0 n8 ^! u6 _) X
   ax.yaxis.set_major_locator(y_locator)
' X" S; [' R& d% ~6 {   plt.ylim(0,100)
/ q  o8 ]0 Y0 @' f" v, Z* a   plt.bar('音量', loud, align='center',label=f'溫度{loud}')/ _3 ^. O0 F' S
   plt.title('童芯派聲音感測器讀值'). _& A8 w( P' `" t2 P5 z4 s* E
   plt.legend()
' D! @4 Y- u& U   plt.show()
! |. k- p# _: A# ?! B    plt.pause(0.01)5 k6 H1 H  S" Q( f9 I
- g2 x# V% N/ e+ k. h+ a
& y8 U) ]5 |" H. a
matplotlib 多圖表顯示5 t, G7 f& `: p3 ]9 E& `

# I7 t" B; y  K' xfrom matplotlib import pyplot as plt
. k1 s. R' ~$ v" ?( Qimport time4 A- h+ g! ~2 `& d
import cyberpi
# k* o4 z5 O5 M* R- Z3 Y0 J, ^
- m4 u( O  I% }7 W1 e0 F( floud_list = []
9 m7 @$ x" S" z( |: p6 J& rbri_list = []9 N/ `5 g0 m. V$ `; l
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
7 W$ o  q  Q# oplt.ion()) S2 U, w; H: T( R, S
plt.figure(figsize=(10,10))4 z. k: Q+ P5 A. B: x% |
plt.figure(1)& j5 P) n; |# B: b8 z1 Q- \( U
x_locator = plt.MultipleLocator(5)
6 J5 \( i2 M3 Q% m1 zy_locator = plt.MultipleLocator(5)
# c) R* j2 }5 V2 A6 T1 r2 ~; [while True:
+ L, `% E9 t$ m   loud = cyberpi.get_loudness()
$ `0 I! _9 J6 w+ v3 a: c3 w4 u   bri = cyberpi.get_bri(). z1 m; Q" ]% j/ X' Y
   loud_list.append(loud)
2 h2 J( O+ W, C$ Z% s: Q6 J   bri_list.append(bri)
) _8 l* a: y1 z5 A, e- ^   battery = cyberpi.get_battery()) a& ]4 h  K4 C  y
   size = [battery, 100-battery]
, s* B8 {5 ^( W   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']$ ?6 y2 C: b( I" Q8 R
   ax1 = plt.subplot(221)6 {- i; }$ o) W7 Z$ z" c( M4 e
   plt.title('光線折線圖'). E. a5 K7 m: S& Q
   ax1.plot(bri_list)6 m* Y- p* N8 n
   ax2 = plt.subplot(222)
" g$ ]2 ~" S1 x   plt.title('聲音柱狀圖')
* @/ g4 e8 c# Q   ax2.xaxis.set_major_locator(x_locator)
4 R. _* x0 S, H& }- J4 J( t   ax2.yaxis.set_major_locator(y_locator)
  z  y. z+ a/ H4 G   plt.ylim(0,100)
" F- `8 g& {( p7 m; E   ax2.bar('sound', loud)
# B! X" u& ]% \- C$ k5 ~/ A% J   ax3 = plt.subplot(223)
5 C" j- F# t7 K4 B5 L5 a, x7 f   ax3.xaxis.set_major_locator(x_locator)
" o+ x5 \7 q& F4 O  Z) [# N1 r" B- t   ax3.yaxis.set_major_locator(y_locator)
- }* x# |3 ~4 a. m& r: p$ h   plt.xlim(0,100)
; d% U  P3 ~, o6 m. x5 P9 t   plt.ylim(0,100)
7 \2 H4 D0 T" P) |7 w6 }   plt.title('聲音、音量散點圖')
% P0 n6 ?# f; g8 Y& \) v; S% |   ax3.scatter(loud_list,bri_list)" q8 `+ ?9 P& v3 }5 f5 m. N
   ax4 = plt.subplot(224)
2 `* O' d1 X* S6 b7 p! I4 G8 M% T   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})% t- T9 X4 ]) j' ?) J& L# ~8 x
   plt.title('童芯派電量')
( U' a5 ?/ B2 c. L0 l  S   plt.pause(0.2)2 t+ `: _& x" n9 C: t
   plt.clf()
+ [! Q8 Y3 D+ O% ?( m* Y( v   if cyberpi.controller.is_press('a'):
4 h2 W! o: i' r       break
$ j* C- q! A& f   if len(bri_list) > 500:
7 _, O: ^) E( B/ g* @1 V       bri_list = []& O4 _9 H: D& J
        loud_list = []
! j& J% K; Z6 V4 v, n9 P5 |/ r. f* ~3 m

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-29 23:20 , Processed in 0.024968 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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