圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8540|回復: 0

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

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

/ X2 a7 a6 D1 H- y8 x1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。
    ) i. k" g9 f* U1 i) T: s3 [& J

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

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


5 c$ F% n8 _" r
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。( c9 {. N$ M5 Y# H; l
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)1 u# y+ v. G. Z: J2 }
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    9 N% K0 @' n$ g% B; W7 j
! a- b6 I$ s, Q& m; J0 L
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟): w. m% ?( l4 n, t" g) ~

4 L3 _; c6 D2 D7 T+ _& z& K: y
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。0 o7 W0 g- ~+ u/ p. X. U: x
& c7 A' l; U: [8 F( h  x
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。2 |- V3 ~& D3 z+ i! Z) U5 w

- K; w+ T8 ]" G5 D/ y. B* Z7 A0 q$ \4 e( v3.童芯派第三方編輯器程式設計準備( t# {& [  t( [+ x1 {
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。3 [7 k/ v$ S" Q* l: }
) i0 K' W: U) ^7 A  V, W
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。1 o: G* ]0 O5 n

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

  E8 @% C. C9 r4 P6 P& `
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    # x: M+ L! G/ M( F9 |8 {  Q4 q

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

1 C8 r, o1 p7 L, {
查閱cyberpi API文檔見:童芯派API文檔
  _1 C- |. P$ b* L: v; Q8 V
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    ! v  y6 `8 n5 d  [- u+ q5 |
) j3 o$ [1 k$ g  F
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

1 j7 X; Q6 \! P5 K; [5.一些程式設計案例! J4 b4 Q/ w0 }8 S+ |& G
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
! K: }/ q8 j- [! I: @
功能介紹:
& B, Q+ Y4 d7 `利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
  s4 u5 j. A9 o: n0 x  U通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
/ L+ H' T: b, K/ e結合藍牙模組可以實現無線滑鼠的功能。- B8 B" P' q# G( _' T1 t
1 y* ?; f$ z& j/ p6 n3 f' j" V
from pynput.mouse import Button,Controller
7 O# A: u9 d% y' ?/ Zimport cyberpi
- q4 K% i" f; H9 M9 R2 r. D. ]/ Qimport time
5 b- R' N4 k) `  k$ r& b( l $ F6 s: d) z5 Q, k
mouse = Controller()7 H. P1 G) `# q: e% B/ d
! x6 Y! h# F6 W
while True:
7 R" `6 A/ b6 J0 r" `' `   if cyberpi.is_tiltback():
& s# ~3 k4 H) l% N5 ^/ R' h       mouse.move(-3, 0)- m+ M. X% D$ i4 y) s" `  _/ a! a. ^" n
       print(mouse.position)
; u4 H8 V# m; C5 N9 x% u  _   if cyberpi.is_tiltforward():
5 f- x, u8 H; L$ T3 h& H0 ^       mouse.move(3, 0)  g, a, j1 D( e! S+ W3 n
   if cyberpi.is_tiltleft():4 D* E0 N7 S8 s0 x0 ~2 o5 k* S4 t
       mouse.move(0, -3)
0 _0 O% f) Z# L   if cyberpi.is_tiltright():: z% W4 B+ S/ h* J/ H8 B- N6 w
       mouse.move(0, 3)# l1 C' q, z) n6 A
   if cyberpi.controller.is_press("b"):7 K( t. b1 P2 k9 }0 O. o) }
       mouse.press(Button.left)
" \. K& _$ p) _8 o1 C  h: i0 _5 g0 I       mouse.release(Button.left)8 u  z# m& U- c" L0 O/ ~# q. \
       mouse.press(Button.left); o2 B$ T' a4 Y" }/ O( }/ t2 |
       mouse.release(Button.left)
# U) V$ q, |+ g0 y+ n1 B+ {3 W/ M   if cyberpi.controller.is_press("a"):
% T& v' i: U  K2 [  t; _2 U1 O' k       mouse.press(Button.right); g# G$ U& M/ X
       mouse.release(Button.right)) J- v8 h, e) @
    time.sleep(0.01)
# j, P( |  E3 b! x8 l  V
7 G7 v2 s6 n2 Q
/ o( M7 i' P5 E7 k+ u% v3 C4 R
語音打字器

7 Y) p+ U3 S# p3 c功能介紹:8 k. {8 ?8 a3 o6 |$ a  \
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
1 C4 D& n( ]& w( A: Y將語音辨識的結果通過pynput在文檔中打出來。
! w; `) N' T& X, d) K. a" z該程式目前只能支援英文。
2 ]& y* n8 S- v) O: g! S# j. ]6 f% }- Q
import cyberpi
6 j$ j. Y6 v2 k2 [3 n+ c/ qfrom pynput.keyboard import Key,Controller
, ]; j( {$ s6 q* yimport time7 f4 a& t" X, I. p6 N6 S4 q$ S

. G# ~- H, b% x% o& e+ @" J/ f3 X& U1 ^* Ukeyboard = Controller()
& o  `- J2 `* A2 ocyberpi.console.clear()3 a) M5 f0 _: z) j
cyberpi.led.on(0, 0, 0)
; p2 T) n  p- ^, Wcyberpi.set_recognition_url()
0 N* U7 r9 O# D: F; h7 `cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得8 [- h  U/ }; R$ {
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
3 P- B% q, Z% t1 A5 ~while not cyberpi.wifi.is_connect():2 G* y9 R' u$ Q5 Z/ [- K* X2 [
   pass1 V0 [5 s7 E! l- [4 o7 R
cyberpi.led.on(0,0,255)
; K- `( L6 ~2 H0 `* _/ V, N/ Pcyberpi.console.println("WIFI已連接")
* U+ s9 I% W( k- c7 V" Icyberpi.console.println("--------------")
  @5 c3 v0 |. a6 f) acyberpi.console.println("按下A鍵開始語音辨識")
" M. Y+ A3 A. H' iwhile True:
' g0 v0 v9 e' J3 @/ Q% M. r   if cyberpi.controller.is_press('a'):9 @; r+ |+ m8 _: c1 `5 T
       keyboard.press(Key.space)
1 v9 x& z0 h- T8 j9 u* h6 Q       cyberpi.console.clear()* R, [9 @: s3 P" q* ^2 X' V
       cyberpi.led.on(100, 0, 0)0 I) W' v6 @9 t+ J- s. O1 _6 r
       cyberpi.console.println("開始語音辨識")
' f  n4 M, o# s! ^  R% C9 P# j       cyberpi.audio.play("switch")
# m" p6 p% [5 v3 [       cyberpi.console.println("--------------")
: m- N8 ?! O) a       cyberpi.cloud.listen("english", 2)1 s7 n( r% q8 A) m* C
       cyberpi.led.on(0, 0, 0)
" t/ r4 W5 u( A; n6 P       say = cyberpi.cloud.listen_result()0 b5 h/ n6 J6 k& @1 m
       cyberpi.console.println(say): [4 I8 G7 \6 h5 b
       cyberpi.console.println("--------------")
7 s, R0 a  n1 m  j' k- m! M       for i in say:+ f9 f9 }, m) B  z. U2 d' P: `
            if i == '':# Z  D! u- a! R9 V
                 keyboard.press(' '); x" i$ l; d4 S, y
            else:6 |& o6 ]8 _! R( \: q" a8 _; k  x
                keyboard.press(str(i)), O# a/ i$ x  M
                time.sleep(0.03)$ V6 s0 X+ q1 v3 w8 R* h0 `) s; K
. d- o% Q7 U" U
matplotlib音量柱狀圖

7 ^- D+ h5 Q6 z7 iimport cyberpi
6 r. ?; U6 f, Z8 |8 \7 q  fimport time4 F& L: \& M8 l# O, u9 v
from matplotlib import pyplot as plt8 M& o" r8 V% A5 p& Y9 y: G

8 i* b$ Y8 F# U  b% h  zplt.rcParams['font.sans-serif'] =['Microsoft YaHei']
0 N( r2 g6 j& t' H2 R* Hplt.ion()
/ D& T6 N! y, o7 Z; i  l( W
0 S% R& _) j! Q* t* Z: q1 cwhile True:
) G; ~# f* {- e# H7 u7 ]   loud = cyberpi.get_loudness()
6 k0 ?8 V$ K0 F   plt.clf()
$ V% Y6 M! k) R   plt.xlabel("數據名稱")) ?/ B. t% U: O' U+ h
   plt.ylabel("音量讀值")
. o  x0 [0 M# q# \; o% M* b   y_locator = plt.MultipleLocator(5)
- [1 u5 n! J- ?( b, ?$ Q5 A, b   ax=plt.gca()6 U* e: v$ O5 \0 d
   ax.yaxis.set_major_locator(y_locator)9 d. D1 |7 [9 W6 {
   plt.ylim(0,100)6 s9 Z4 `/ k4 k2 T; Q8 W
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')) K5 K8 T% q' T- P- G6 q
   plt.title('童芯派聲音感測器讀值')
  u7 e% x7 K  T1 L   plt.legend()
1 R* [  {% \8 \" ~   plt.show()
/ f$ ]  c% v) }  e( k& R7 P    plt.pause(0.01)
; M5 o2 z: B2 W. u  J
: u& P  u' R3 q& K& N, O1 |& r2 m: S4 F8 d  X0 G# ]
matplotlib 多圖表顯示5 B- r. d) l7 p/ ~) b0 X
5 h5 G. z7 z0 q  D
from matplotlib import pyplot as plt; j+ r. x8 c% F" w) F! G$ J
import time# O8 q& k0 y; m5 z
import cyberpi! o7 ?& o/ n, y4 Q+ v

& V  W5 O. t) n% |loud_list = []. N6 {% U" z! Z) }- ~0 ]8 ?9 `
bri_list = []
( k# X0 {! l: f) J, aplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
; t% {  u! g0 t: o7 u- eplt.ion()+ P- P3 Z3 @/ U! b/ T# G& m
plt.figure(figsize=(10,10))# T7 f5 X2 V. D3 }% T7 R, q4 D
plt.figure(1)
' T6 l) F9 ~6 }3 Kx_locator = plt.MultipleLocator(5)
& C3 Y3 V7 n( H2 D: C: R, F  O5 ]y_locator = plt.MultipleLocator(5). x* J. v$ ?9 E$ p" C
while True:
) w4 E9 I* V- W6 `   loud = cyberpi.get_loudness()" c9 v$ w. }2 O/ ^$ a
   bri = cyberpi.get_bri()& a1 P' _6 H: _4 P
   loud_list.append(loud)
( w% A& o; Y* X, g" n   bri_list.append(bri)
& W: o2 }& d0 w4 g. L, l# ]   battery = cyberpi.get_battery()
/ G8 C- t$ w3 t# x   size = [battery, 100-battery]
  v8 g! X, H: @6 X/ E6 M   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
9 u% q3 M1 `8 t/ _. o8 s9 P   ax1 = plt.subplot(221)
& ~( B4 V9 Z6 X' a  ?8 ^4 P* @   plt.title('光線折線圖')
/ k, p9 x! P3 C5 E) g, q* y   ax1.plot(bri_list)0 Q% r* g' x5 K0 N' {* g" {, t+ J
   ax2 = plt.subplot(222)
+ E( C9 R; j3 u   plt.title('聲音柱狀圖')
: C" e5 v6 z0 a" ^" i$ l   ax2.xaxis.set_major_locator(x_locator)5 j, y. d6 \. M* P! P) X
   ax2.yaxis.set_major_locator(y_locator)
; ?$ T7 H) f& n# K$ ]   plt.ylim(0,100)
% U5 ^5 H( x2 s9 t9 e5 B   ax2.bar('sound', loud)
+ J$ ~! c4 }. B7 y2 C   ax3 = plt.subplot(223)0 V0 C! e5 n" e- V' s$ t
   ax3.xaxis.set_major_locator(x_locator)2 `  a1 n) ]' Z- y; F7 ?
   ax3.yaxis.set_major_locator(y_locator)$ W0 S3 L5 ]* ?0 M, K
   plt.xlim(0,100)
! i% s7 ^8 u# U   plt.ylim(0,100)
( H0 R/ E! m- q) F& q   plt.title('聲音、音量散點圖')
! O) U% J* U) z4 d4 ~   ax3.scatter(loud_list,bri_list)
5 A7 P/ N. l6 j+ `   ax4 = plt.subplot(224)
5 B0 l/ Z$ R# n8 B   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
! S" p% r3 i* ^* D/ e   plt.title('童芯派電量')& @* ^0 x0 P, E  S# z! k, K/ i
   plt.pause(0.2)/ P& b3 O' z  }  q: F3 O
   plt.clf()! Y1 m" ]# {& ]" o& t0 Y  T
   if cyberpi.controller.is_press('a'):" B7 P/ U; A' [$ T7 d
       break- h+ o: r+ ]9 z/ z% H
   if len(bri_list) > 500:
- ~* ~: J. y6 h& G) q" J' U       bri_list = []8 i" Q& c2 R, X( g
        loud_list = []
0 v# v! _9 X5 O6 C
8 ], j2 M$ d* i3 @

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-5 05:17 , Processed in 0.028904 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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