圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8295|回復: 0

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

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

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

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


2 N+ S" l9 ^" [1 m/ M' g; |
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。8 j# ^6 B! Y1 x& ~: |" D' Q
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)* H: J: C; `) \+ @$ q
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    , h5 M2 d/ H4 Q5 k4 r
8 t$ z# ~  o& d; n1 S6 \& u/ a
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)7 I% N' H" m5 i5 i

% I* q, ?# u! u
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    9 J. F8 H4 a( h! n/ N

+ m+ n! F! f! I4 ^2 c$ ?0 b! z
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    ; `# _; @. t3 C/ e
# ^/ F2 v1 O5 u4 {, S0 w8 F5 t
3.童芯派第三方編輯器程式設計準備0 i6 {3 y7 p8 i% U+ v
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。8 g: ]# G2 B" V' e% C0 ]8 V* s
7 `: Y3 ]" W% q* J+ X# M5 T
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。: I8 q2 w( k0 S+ l4 e" A7 A0 }6 @) r+ |8 ^

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


. Y7 m- a8 l0 t' G' K( [
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    2 i+ D' A" v6 C& e

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

  @3 F" u) Y) I8 p3 N3 y
查閱cyberpi API文檔見:童芯派API文檔

* G; |% W/ }0 n& y* p, G
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。( o1 Q; y8 p/ W. J5 x; h
) p) }% W0 O* `) M6 m! d
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

$ i" l4 r( q6 v& z5.一些程式設計案例" U$ H, x1 n' D/ }/ f1 K2 ?) T
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
& M+ ~! Y& G, r& l
功能介紹:
' B. q& m0 B; g0 r# o6 O( Y6 h( V2 J利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
2 D$ u) e" U1 B0 l9 _7 i通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
" t5 {1 V/ N( `: p9 j: _: ~結合藍牙模組可以實現無線滑鼠的功能。
% B9 E7 n$ L. O1 w8 M, o4 G' N) Z, Z4 \
from pynput.mouse import Button,Controller
% ]: B2 r4 S5 O+ Eimport cyberpi
$ o2 m8 k, p% H- y, w/ b& i# H: Rimport time
6 O" k* w1 f" g# o
6 q; R3 V4 e3 J0 B- r' Y0 Emouse = Controller()# h+ w; R& t6 L6 U! o

. X3 J  M9 Y- Q2 v9 r, l+ @) Gwhile True:
* }% ~9 X% v. i4 Y2 ?: R   if cyberpi.is_tiltback():3 G, b7 G, Z5 X/ `4 h
       mouse.move(-3, 0)# y6 V: G  S5 `  ~: v
       print(mouse.position)
( W6 a: @( u+ K" ]% @  }* D   if cyberpi.is_tiltforward():
  S! v0 f3 X! M: T       mouse.move(3, 0)  l3 K& D' P+ c$ o6 ~2 E
   if cyberpi.is_tiltleft():; H+ N3 R' D- D9 u* r0 k
       mouse.move(0, -3)5 ?8 a9 j) L9 v/ Y# h: V( H
   if cyberpi.is_tiltright():" d  Y4 c  h) w% j1 }
       mouse.move(0, 3)' o% o6 `4 E, b" u6 r! n! t
   if cyberpi.controller.is_press("b"):, i3 S6 G! x9 {5 D0 _
       mouse.press(Button.left)
; k6 u; L' U3 W       mouse.release(Button.left)9 P& T7 r: r, c
       mouse.press(Button.left), _. C) v8 t" C* q0 L+ [! @
       mouse.release(Button.left)
: X$ M: L$ p) p4 m   if cyberpi.controller.is_press("a"):( x7 E0 \. x; k& G5 E0 T
       mouse.press(Button.right)/ X6 a2 G, U/ I9 u9 y2 U# L
       mouse.release(Button.right)
* I8 K, P( x3 l" ~    time.sleep(0.01)
% U% T: j" r9 \) Z& {2 H+ w# A7 W# k" O6 j8 X% g/ X

0 @  |7 d4 X: k4 r( K/ F& |& ?0 J
語音打字器

) [2 S! z% ]/ y9 X& N" w功能介紹:
* o. X8 ~/ R' Z, S9 x2 ]; A利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
8 y* H' \. D2 Q$ [9 T' z. N7 U將語音辨識的結果通過pynput在文檔中打出來。$ J6 f9 }% p. s
該程式目前只能支援英文。
3 ~' h  k+ Q. ^! I4 [9 _+ v& d2 k2 v  c6 k0 t
import cyberpi
) G* }3 [- |, {0 E  z+ t, |from pynput.keyboard import Key,Controller
) L- u& q9 R4 B. {; ximport time
) F3 l* Y, g& x0 C- _+ {& X) T2 {6 ~ ! B! V$ o8 _+ \3 ~/ h
keyboard = Controller()3 Y) e$ v4 g  d$ U& T% V
cyberpi.console.clear()* E1 L" M! f3 _
cyberpi.led.on(0, 0, 0)
- j! @  h- ?7 H9 O. Zcyberpi.set_recognition_url()
9 X) f) D# P( s. X- Ycyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得! c; T5 E/ v4 s- O
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
/ Q# h; O! e0 U* ^while not cyberpi.wifi.is_connect():0 T( n% l; |& C" ?' @& l
   pass. C* J2 x( I) X: }# r
cyberpi.led.on(0,0,255)5 v% k" S6 f* R7 b1 d5 P4 o' ^2 n
cyberpi.console.println("WIFI已連接")
- F+ s7 C% d3 H& ?* Z' i& wcyberpi.console.println("--------------")
3 I/ r# V2 g; z0 t1 o! E6 H. Tcyberpi.console.println("按下A鍵開始語音辨識")9 T8 F, {8 Z) P7 F: l
while True:# Y2 i6 c$ o+ I6 c$ j2 |
   if cyberpi.controller.is_press('a'):
5 O% g+ p! j) D2 ]: \) z2 c       keyboard.press(Key.space)2 f2 T. j# Z  c; t0 h
       cyberpi.console.clear()
7 c! @# ?! F8 K. \       cyberpi.led.on(100, 0, 0)
' p% V/ D7 R. H/ t1 p' \       cyberpi.console.println("開始語音辨識")
/ z! \* G$ Z: u' [2 d0 c" t       cyberpi.audio.play("switch")4 C/ U: O! n, o) }# N6 l
       cyberpi.console.println("--------------")
- K! ]' u2 A7 W2 s       cyberpi.cloud.listen("english", 2)
: N7 T! O7 J+ l8 [       cyberpi.led.on(0, 0, 0)3 M& N( K2 l' J% q
       say = cyberpi.cloud.listen_result()% d8 c9 }. H: ^
       cyberpi.console.println(say)
9 A3 ]1 }7 X4 o, V# Y7 Y- I" ~' j       cyberpi.console.println("--------------")
* S) G$ \5 D5 g* N       for i in say:7 W9 E6 I$ y$ f( e) @
            if i == '':
! c" ?# G* E6 s  e, A& ?% ~                 keyboard.press(' ')
/ u+ b& \8 F" h& `4 Y            else:
# |2 D7 @/ z3 d5 P5 c                keyboard.press(str(i))4 b2 c4 |. W. C9 {! U9 q
                time.sleep(0.03)5 U9 D# ^$ _' T7 d3 b# n
* T+ c* U: \4 k
matplotlib音量柱狀圖

, F6 |" v7 K* ?0 A$ Oimport cyberpi9 g' c8 ^) c7 d- _
import time2 v$ o. P2 L3 o0 X
from matplotlib import pyplot as plt# d+ I% b+ e- L2 H# \
# _7 q6 c  L2 I2 n
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
+ V3 m8 v8 I1 F  g4 z  Mplt.ion()
5 z9 z* g0 D% m- K: @  E; j % i: u! I& x( [( j( c
while True:; e, B9 ~3 l2 K- N8 M
   loud = cyberpi.get_loudness()4 q7 R+ O2 v/ H* E
   plt.clf()* B( V0 m8 Y6 k2 L1 [9 g" M
   plt.xlabel("數據名稱")
- y7 A5 D  r1 e3 }6 j   plt.ylabel("音量讀值")
4 {% q! Q2 r; v0 \4 @   y_locator = plt.MultipleLocator(5)
: |# Y8 i- f8 c& T7 y: c   ax=plt.gca()
; H0 E7 W8 o5 j+ t+ `1 T   ax.yaxis.set_major_locator(y_locator)9 [' I: T9 _( A- Z
   plt.ylim(0,100)
7 t2 v/ F- E* Y2 l: m: Q   plt.bar('音量', loud, align='center',label=f'溫度{loud}')5 w3 N1 H! x9 @
   plt.title('童芯派聲音感測器讀值'): y. k; ~" ]0 _3 N. l! b
   plt.legend()
7 l3 {, b) v' i5 M0 _, d. ^: L% z( j   plt.show()6 Y) B& D# ]6 r; f* C3 Z6 k& i
    plt.pause(0.01)7 R( {/ Q4 }- A8 i4 U
: k, K  ?$ x. A8 A% j

4 }' U) Q. Q4 k  ~+ [) lmatplotlib 多圖表顯示' e7 u4 l8 U' Q5 l. E
: v0 z: O% a1 W6 Q, p  y" j1 M6 l
from matplotlib import pyplot as plt
+ B* @0 A1 @! f  p+ n+ N; u# p7 qimport time
: M0 @6 P) D! H, y  M6 Y0 jimport cyberpi! N  }+ w4 S4 q4 p! J1 c
" k# {0 j" s% b8 t; e* \% _
loud_list = []! x; _* e$ [& W9 q0 W& }6 j8 Z; r& J
bri_list = []; X. e/ m% `. x: V
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
, `1 b1 P6 z3 a! Cplt.ion()
! d: c; e; \% a7 p, C/ h% h1 Uplt.figure(figsize=(10,10))
# H) [. F0 H9 D; Q- L, M  H7 Tplt.figure(1)1 S3 X! d( `4 H2 ?, d& f
x_locator = plt.MultipleLocator(5)
3 }+ L, a0 T+ j' }% {y_locator = plt.MultipleLocator(5)
3 O0 V* Z) P0 }; @( b4 d! C. |while True:
1 \+ N' D  n8 y1 U   loud = cyberpi.get_loudness()* u2 Z/ V  q" W  s
   bri = cyberpi.get_bri()
/ h0 j* v6 K, K0 L0 |   loud_list.append(loud)  _. |! t/ U+ y
   bri_list.append(bri)6 ~# u& N! U/ _5 v% i) a5 k) t* B
   battery = cyberpi.get_battery()
8 v$ {* Y5 G  T& y   size = [battery, 100-battery]! ~$ C. `' G4 s8 }6 T" d: Y  q
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
! d9 P7 f4 ]" B2 _( n8 c7 f: Y   ax1 = plt.subplot(221)
- i8 z) F# H& d  }' M   plt.title('光線折線圖'), }" N& Q5 a/ {* q' I$ X
   ax1.plot(bri_list)) ^" a3 r$ R% m2 o( `( ~) j0 w
   ax2 = plt.subplot(222)
+ |. T5 U; z' M0 i9 `9 d   plt.title('聲音柱狀圖')
4 A/ H& s' I9 t; q: W: o   ax2.xaxis.set_major_locator(x_locator)
% a; k5 u4 S) X/ y   ax2.yaxis.set_major_locator(y_locator)! V8 ~1 {# M- t5 }5 N
   plt.ylim(0,100)
9 x! Y1 G1 u3 n4 E+ D   ax2.bar('sound', loud)
0 K7 p6 f& A, d. c, _% p6 Q# i- p   ax3 = plt.subplot(223)
7 ^1 v! _1 `; v7 X1 z   ax3.xaxis.set_major_locator(x_locator)/ K" r4 E, ]3 c. L
   ax3.yaxis.set_major_locator(y_locator): {2 P; K# c5 {7 g8 ~8 z: e9 |; d( r
   plt.xlim(0,100)
/ b* _* Q8 `* e   plt.ylim(0,100)
1 D1 _7 ]4 J# v4 o   plt.title('聲音、音量散點圖')
5 Y- a4 _! L, ?2 P& Y   ax3.scatter(loud_list,bri_list)% G3 T+ X; B) k# O
   ax4 = plt.subplot(224)
! C5 z4 ]4 A3 }7 v3 U- z   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
, {/ L  _/ `) E- u/ @   plt.title('童芯派電量')9 W- X% S. N% B- h
   plt.pause(0.2). `) x3 V! Z6 _/ W  c6 K. b
   plt.clf()
+ d* J+ C4 l8 u- l4 D: P" N   if cyberpi.controller.is_press('a'):
) L- ?* r3 z& J; P/ q' f       break
8 n; P/ r1 f9 H; g5 k4 y   if len(bri_list) > 500:
7 X0 }- i$ e  ~$ {, @       bri_list = []
  {. ]' W3 ~/ p9 s$ _; k) F0 k        loud_list = []
0 d: u- O6 @1 N( t0 h
: X% h& `  [3 ]+ A1 H* j, J* v' T. z

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-9 20:42 , Processed in 0.026106 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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