圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8486|回復: 0

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

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

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

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

" k2 H/ U6 H& w  ]$ W' Z
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    3 t. c. |$ V& o+ Y# O9 t! n( W
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)9 }+ J& h1 |9 m( f+ G
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    * @0 f$ J  F4 W
+ L- _; F% X. V) P- Q
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)5 y1 ]% P" n2 ]/ Q
. N3 e  z9 l" v2 p+ X2 s
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。6 \& L# m1 s; I. f- {
# s  @2 n. Q4 Y# b
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。' L4 F4 A. M+ {0 p
! T4 n0 p  L. w+ x, C$ Y9 S
3.童芯派第三方編輯器程式設計準備, o- x, r. s- Z8 H: a; ~7 ?
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    : I/ `2 G& V# F4 }  L
3 k7 c- Q2 W0 A
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。6 l& M& Z8 i8 E, I) \: z6 Z2 C

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

9 Y- P% D0 ^. E( A
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    8 o( S# V* U+ u. G2 t6 t/ v/ n- ^

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


, ?* J  e4 ^: l: l# W
查閱cyberpi API文檔見:童芯派API文檔

' c8 B/ e( O, l  }9 m
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    ; Y) R1 v. i6 q/ N3 G% [4 w
+ g6 M3 @. N9 w# V
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
0 l, b* ]: z) Q8 d
5.一些程式設計案例
5 Y9 O# `; S5 W( l: }童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

: E* |9 k) d- r功能介紹:* |4 K. n5 f0 q3 ?7 `
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。. v) Z2 {' W; v# |
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。5 c) R) ]; Q7 c  U. [" G
結合藍牙模組可以實現無線滑鼠的功能。
( C0 e. Y- r, ^; T: ~2 l
! n3 e2 u. H* H. U  ]from pynput.mouse import Button,Controller; v2 G. X0 i! {( L0 X/ \  U
import cyberpi
9 k" J, E+ A$ Z8 {import time: U- u+ N: Y& K+ }9 i' }4 X

, _/ y, e, x. a+ m  O& r( ^mouse = Controller(), d- y0 s- m6 D

1 g5 r3 V& S. h3 Q9 n" ewhile True:
3 K# D4 t' p' k   if cyberpi.is_tiltback():! {6 e/ `, n3 q& d! t" e
       mouse.move(-3, 0)
0 f9 n+ e" s# e! l+ n( s       print(mouse.position)
  X7 t' }  O6 l   if cyberpi.is_tiltforward():; r, x$ ]: W1 J: Q; |7 F8 U7 N- R
       mouse.move(3, 0)' y. w& I/ t+ ^4 q0 v6 U
   if cyberpi.is_tiltleft():
8 e/ a! f! |, E( M/ R% G4 d       mouse.move(0, -3)" p$ a% O4 W7 Y$ ]
   if cyberpi.is_tiltright():
4 X* d) u, i8 ~. Q: X4 {       mouse.move(0, 3)
7 s9 D8 u7 {6 n0 t, e( }   if cyberpi.controller.is_press("b"):7 n% i+ P! Z& ]
       mouse.press(Button.left)$ u' Z- }% |5 h7 ]
       mouse.release(Button.left)& p9 V, c$ g: M4 y/ P
       mouse.press(Button.left), o. Y. A2 C* E5 i- C! j% C
       mouse.release(Button.left)3 n$ l3 ^5 O' A: z
   if cyberpi.controller.is_press("a"):+ C* h2 }2 N; j5 |! Z* r3 }% M) B
       mouse.press(Button.right)
9 l, F5 d4 ^! z2 S: d6 x4 t       mouse.release(Button.right)( y- |7 S% c! b$ D
    time.sleep(0.01)7 y# u6 l5 O7 i% H! S& x8 @1 R
2 _$ e. S1 u' V8 k1 t

8 z& j1 _  A2 T( v0 t3 S  v0 I
語音打字器
/ G: C& q0 v7 Y% w
功能介紹:3 z  b, A6 S: {* j, l4 L. u9 d; O. X
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。) ?4 u! I' q: @0 ?" O
將語音辨識的結果通過pynput在文檔中打出來。1 N' c8 G& ]/ V" M
該程式目前只能支援英文。
  v( [* v/ \% v0 L. Y& G& |0 b" @6 C
5 R% j6 Z% \3 e0 t( g; ?- c6 x1 h- Bimport cyberpi
! \3 I8 U5 C0 |  D' ]from pynput.keyboard import Key,Controller
; A; L4 V& S4 J9 pimport time5 y  r1 m$ _1 p* {
' e  D+ X# P/ N* A
keyboard = Controller()
4 {- l: L( J7 ~6 |# G' P/ kcyberpi.console.clear()1 q5 U* m4 `. \. {9 p5 B' A6 N
cyberpi.led.on(0, 0, 0)
+ h# |5 \* w$ Kcyberpi.set_recognition_url()9 O* @6 F. S6 f( A" `+ Y. L7 ^
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得6 _, O3 d9 z* r' \* J, `
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
/ y0 r  S5 ?. Hwhile not cyberpi.wifi.is_connect():
1 B+ ?& u' [4 W# J4 s* W3 S/ ~1 G   pass
1 A0 l  F, v( P; j9 F) n/ W/ qcyberpi.led.on(0,0,255); Y7 A% ~& Q! V
cyberpi.console.println("WIFI已連接")  J3 l( t$ J' E% w( y7 N
cyberpi.console.println("--------------")7 h7 Y6 ]0 A( g, g
cyberpi.console.println("按下A鍵開始語音辨識")
4 p  c# t% s( j2 B! F* t# a" t: Kwhile True:& I1 F( Z& }2 O8 D" k2 z
   if cyberpi.controller.is_press('a'):
: P1 M: k. D$ E. B5 T- p       keyboard.press(Key.space)
+ v$ ]: G# r& Z) N0 j: R9 z+ F6 ]       cyberpi.console.clear()
* h) v; E# H" l       cyberpi.led.on(100, 0, 0)
8 ~# D( B: X& h# R* B       cyberpi.console.println("開始語音辨識")
! w9 w) |1 _5 l" Z5 X2 u' k# Y& L5 ^       cyberpi.audio.play("switch")
/ D$ o& A" t5 g: [( B5 Z5 X       cyberpi.console.println("--------------")* B( o: G1 l4 Y* z0 q/ T% B  ?
       cyberpi.cloud.listen("english", 2): p$ ~# V/ Z. D; X. g  K
       cyberpi.led.on(0, 0, 0)! l9 ~3 M- {% j1 m7 u0 S$ x" T9 W- @
       say = cyberpi.cloud.listen_result()
' T6 l( \# u% n6 H  Y       cyberpi.console.println(say); F/ {! j  z& A% w. T
       cyberpi.console.println("--------------")1 Y% z8 N3 n+ L
       for i in say:
3 W# K6 v" D  S: ]6 J            if i == '':
1 I4 l, W, b) Q& W( ?: [                 keyboard.press(' ')- }" n+ q! B& {4 @5 D# t
            else:+ t+ F8 E2 {. t7 |
                keyboard.press(str(i))/ g8 t' A1 @5 c3 v! c+ _
                time.sleep(0.03)1 A5 d1 ^  G" O' ?  g

3 F1 `2 k2 a& ^matplotlib音量柱狀圖

6 V0 I6 A7 R1 Wimport cyberpi9 M3 K. d; i3 Q6 J4 \+ w
import time
9 \$ S" R, B' I/ B6 Pfrom matplotlib import pyplot as plt
4 [: Z" u. N7 X& Y4 h  M  Q " m' v$ ]6 [! N: \( a) X% v
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']% H6 o0 c# D/ W5 ^0 ^5 `
plt.ion()3 j3 q2 w# E# Z3 [
! N7 |+ }7 k$ a) E7 w
while True:
- J' W: K% E8 L) Y   loud = cyberpi.get_loudness()" }1 h! V0 O  S+ A8 @
   plt.clf()4 w, N" s% s# O% {2 i
   plt.xlabel("數據名稱")0 F; f- B+ M- n7 G$ P
   plt.ylabel("音量讀值")) D. m1 F3 o/ b  H$ W& n
   y_locator = plt.MultipleLocator(5)! ?" P- r3 r9 d0 \/ O6 v
   ax=plt.gca(). }, I6 U# j6 I% Y( u
   ax.yaxis.set_major_locator(y_locator)9 ^  V8 j9 i6 x$ f$ j/ Y
   plt.ylim(0,100)$ _8 i! M. @! e2 Z
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
* ^# |; T9 k* @0 R0 F   plt.title('童芯派聲音感測器讀值')& A% u, s" \: F
   plt.legend()  [7 A$ V2 u* j0 h2 s, O
   plt.show()
0 r' Z. I6 z! e5 ^' `, Z5 G    plt.pause(0.01)" I8 Z/ K: [0 W. @  p$ ~' u# Q
+ Y" H1 w/ Z6 ?4 b
. r: k* a4 M1 |$ R/ l3 ~- Q
matplotlib 多圖表顯示  X% |" `- v* w* Y6 w" o. k

- N: Z% q' e; s; j+ g$ y5 B. ~) xfrom matplotlib import pyplot as plt
; q( L- R7 j+ A7 `/ C- Gimport time
, j9 Q; y7 w+ ]" V: K: ]import cyberpi  R# K! `' u1 X& c1 _
9 y2 S3 |7 z# N  R
loud_list = []
: ^# o2 A9 t( i* s$ ~0 g; L) s- [bri_list = []
6 X7 s( Q; I/ j( d, F' g3 {: N  zplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體. w. ], x0 O, r" r! X( {6 v3 L% V& C- W
plt.ion()" a& }& D# y8 O; a" A- m
plt.figure(figsize=(10,10))& e. z- ~! J5 Z3 X) F, r
plt.figure(1)
- D1 O8 U0 {" I2 K! X8 Zx_locator = plt.MultipleLocator(5), M2 ]1 {% H0 z
y_locator = plt.MultipleLocator(5)
8 D# \! f, }! n# kwhile True:
& X" F, Y1 `8 h, B1 Y3 @2 E   loud = cyberpi.get_loudness()
0 q! J7 I+ J: D% }   bri = cyberpi.get_bri()- G0 b1 J7 X; @% Q  l
   loud_list.append(loud)  ~* H) s1 [. s- z, Q
   bri_list.append(bri): H. R9 v8 v$ S+ n. a! n
   battery = cyberpi.get_battery()' f4 L/ y6 I# e% O7 z
   size = [battery, 100-battery]8 O. d$ I6 F# ~7 G
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
2 c8 T  I( T' q. M   ax1 = plt.subplot(221)
$ a9 Y/ Z3 S! |5 P  A: Z& d   plt.title('光線折線圖')
9 c! n. v. [/ v2 H( r7 L5 C   ax1.plot(bri_list)8 d+ r2 B, i- s; N
   ax2 = plt.subplot(222)5 U/ L0 }% C4 O5 W9 {! O/ _
   plt.title('聲音柱狀圖')
: z2 a4 O7 P! o, w3 [/ c   ax2.xaxis.set_major_locator(x_locator)
0 S0 T7 ~6 ?$ F1 t$ R4 L   ax2.yaxis.set_major_locator(y_locator): V5 z4 E- }3 F* W5 K
   plt.ylim(0,100)
' R! ~! Q* }9 Z( J' D4 k# {   ax2.bar('sound', loud)
. @7 S. [: V9 T( `. n   ax3 = plt.subplot(223): t" J) j+ f# x
   ax3.xaxis.set_major_locator(x_locator)
  d/ O" u3 G# i; N, V   ax3.yaxis.set_major_locator(y_locator)
( F! i) q3 H& ~7 H$ v+ a# y, p4 J   plt.xlim(0,100)  k+ [9 C! j6 {: ?( T: D1 _/ \
   plt.ylim(0,100)
* }0 [, u$ j- U2 v+ s+ g+ x   plt.title('聲音、音量散點圖')0 B, m0 g6 ]6 J7 G8 d2 N8 m, I
   ax3.scatter(loud_list,bri_list)
, `5 U6 v1 N4 g- J+ N   ax4 = plt.subplot(224)2 Z5 }! H7 h6 A  v
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
- Y" Z0 e" \  I: }& W   plt.title('童芯派電量')+ j+ }+ Q0 L- x& E$ b& q
   plt.pause(0.2)' ?  F& ^( `( [6 K
   plt.clf()
  G4 p; I3 z3 o' V( r' Y) x3 Y! R   if cyberpi.controller.is_press('a'):4 F2 b7 Q' @- S; |! M
       break+ ^, L+ M# L: u. f: M9 V' M
   if len(bri_list) > 500:, ?. |- N! Z/ M0 T5 \9 b7 Y
       bri_list = []
2 c7 g9 O* J; o1 D5 t+ ^: ~        loud_list = []7 e, [" ^; [, |, ~: z

" T0 j6 M# {# k' o

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-1 04:44 , Processed in 0.028485 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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