圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 7743|回復: 0

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

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

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

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


: ~6 X2 f& a! x# i' u& E6 A
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。2 w- r6 o: u/ v) k
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    ( _: d  d# F# r. p. w
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    / z2 ^0 A7 s; r
5 H& [: }# P7 |' d; Z6 n
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟), h) Y' n9 P2 K

7 f9 L& P5 \9 r: \
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。/ E1 c) B7 F" s% u  S
: R4 y: V4 d* E/ @. ]- w: E9 H8 q
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。& X4 r% B  F, E) p3 `
( j9 V/ H- C- u5 g" h- Y
3.童芯派第三方編輯器程式設計準備
; g9 ]5 j9 j) Z' o0 I
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    ( z5 T! m- ~, E( [
7 h) ^1 h" U8 b
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    ! v+ s' K' K1 i9 M. u

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


! o, R; N' F) h" m' t" G
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。6 p3 k; V  L# V) C% Z

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

0 F! w( t4 f; a6 k2 r  i! |6 _. \: [
查閱cyberpi API文檔見:童芯派API文檔

  V. f4 [8 T: H6 M
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。; q+ T% g4 w& r. W3 O4 @  u
+ E. w) G+ W8 x7 M
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

# F# e  S+ u* M( Y& j$ \0 t2 g5.一些程式設計案例
" P* U. r# ?5 r6 k5 X+ @2 h3 D! }& u* v童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
( e) c, z. d- }( b! ?* y
功能介紹:6 M0 O  F" z! r$ y
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
9 u. ^; ^& t! `3 ]8 {通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
0 }* a7 ?2 m' |3 l8 x) o' v結合藍牙模組可以實現無線滑鼠的功能。
4 _  ^- U" R! a) ]1 Q6 @1 j6 O8 b+ t2 V: P! A! u+ i# ?
from pynput.mouse import Button,Controller; _5 F3 d/ t: |$ z1 g. s
import cyberpi
% X0 `: K. J' nimport time* \3 D5 F% k  v& m# a! y

8 m3 y" z- Z0 F5 n+ V3 jmouse = Controller()5 d! V+ ^, |& [) u
8 M- p5 d  S0 g( O' L0 J
while True:
* q4 L. @+ K, @8 q   if cyberpi.is_tiltback():1 ~+ u, f& O; ?: u9 g( \
       mouse.move(-3, 0)
( ~* F& {- x% h* K/ |! x0 ~       print(mouse.position)
2 m1 e& i* y+ V$ L6 G7 c   if cyberpi.is_tiltforward():+ D( ^0 u) x" V/ I8 |
       mouse.move(3, 0)5 E5 m# G4 ^& W0 F: v, y# C: Q( m
   if cyberpi.is_tiltleft():7 d2 b# Q9 l0 v9 u: R. s0 H
       mouse.move(0, -3)
( e. Q+ ]  x4 X1 u   if cyberpi.is_tiltright():' M; E* X6 Q) C8 _9 Y( x
       mouse.move(0, 3)3 x- ~! g# r- n" l  s
   if cyberpi.controller.is_press("b"):( f1 I: K3 l# {, `
       mouse.press(Button.left)
" y, w7 o& I( U       mouse.release(Button.left)
+ [& n1 P) C/ h/ W       mouse.press(Button.left)6 r4 ]2 t! c$ w4 F
       mouse.release(Button.left)2 w1 \' l9 B7 p# x8 k* {; u- ?9 W
   if cyberpi.controller.is_press("a"):3 [1 E& i; z% n
       mouse.press(Button.right)
( L8 o7 r& F) E0 h       mouse.release(Button.right)- l, G- X8 e/ l  J% e: ~8 J7 M/ I
    time.sleep(0.01)' `8 ^: G3 s8 n7 R1 ?, t; @# P
! o2 m( ~9 q8 Q# y! f4 q8 \

: b; |1 ?& ?* o4 Y" l8 m  C9 t
語音打字器
. p  ?+ ^: }+ P
功能介紹:$ j- i# f! D9 P+ F& R; N0 Y
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
2 ]6 S4 T: ]& K9 P  s, B將語音辨識的結果通過pynput在文檔中打出來。
$ L! \1 W( ~9 I該程式目前只能支援英文。
5 r- t1 ?7 j2 i! `" t9 }+ X' |% b2 {) T( p
import cyberpi
! q: S8 ^. Y( ^% ffrom pynput.keyboard import Key,Controller7 y0 P! y- e4 E  c& }
import time' [, J  o' E, A! n- Y7 h/ p* \
3 E  S2 _0 h3 j2 l: K
keyboard = Controller()
7 `; Q* Y) U3 G% p6 \, i; H; [4 gcyberpi.console.clear()$ R+ i# {! v- P$ G. \
cyberpi.led.on(0, 0, 0)
5 ]# |/ U" U1 C4 x5 z0 pcyberpi.set_recognition_url()
; ^8 U4 y% D6 ^cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
( y0 ^# I8 H% b( K4 R) _! Ycyberpi.wifi.connect("WIFI名稱", "WIFI密碼")0 ~: P( {/ a, n+ Z
while not cyberpi.wifi.is_connect():8 a' W: C$ m% r, `
   pass! p+ p+ O* R' Q/ O! g2 }) X
cyberpi.led.on(0,0,255)# g$ _) l" f) s3 {6 P) B; ~
cyberpi.console.println("WIFI已連接")
2 [4 J8 B" r/ F% f  Qcyberpi.console.println("--------------")% t% F- r$ ?/ c8 _6 S1 n) r) @2 t
cyberpi.console.println("按下A鍵開始語音辨識")
/ p% u0 P1 B0 |/ Z8 Y1 U, cwhile True:
; C% }- |1 q0 U3 e0 u2 \0 J   if cyberpi.controller.is_press('a'):& a( Q- N8 H; a; I1 [3 p
       keyboard.press(Key.space)
2 n7 Z) U* z7 B. F& m- W* S5 S       cyberpi.console.clear()- u9 O2 E/ l( c
       cyberpi.led.on(100, 0, 0)0 W. F/ N) H8 M# ^; N) a
       cyberpi.console.println("開始語音辨識")
* E$ F3 J2 W4 @  I) G$ s, \, z       cyberpi.audio.play("switch")
( _2 K+ H+ B- H% D       cyberpi.console.println("--------------")
/ D4 L' j, I, v9 h3 G" j       cyberpi.cloud.listen("english", 2)* K, q$ Y1 a. V1 j7 y+ G
       cyberpi.led.on(0, 0, 0)' [1 x# \) B% q6 z3 m, |- c
       say = cyberpi.cloud.listen_result()
; C* M- j; w$ K       cyberpi.console.println(say)2 ^. U$ j2 w8 q& S, D1 o+ j
       cyberpi.console.println("--------------"). O$ ^8 N8 {2 S+ V$ [- |
       for i in say:4 L# |( s# Y( {+ Y
            if i == '':2 W8 b5 V. @9 D& I
                 keyboard.press(' '); n( A7 q. B6 a$ B$ [$ ^
            else:
9 y5 n, R6 D6 u* t8 o8 b" T                keyboard.press(str(i))9 J* ]/ z# d3 {! L( x! A+ r
                time.sleep(0.03)
# B" S1 c; d3 C6 p6 ~! ^/ ^/ r
! w2 e5 O9 H7 B2 v: `2 I
matplotlib音量柱狀圖
5 G, f1 c. j0 k& r% {
import cyberpi
- i# X, v' z& B9 m; U2 X0 _# N1 ^  @import time2 j( n( B% E" a5 V1 m4 J: H2 g
from matplotlib import pyplot as plt
- _  w( B7 G4 ?7 K+ |
$ r- u  {- v) u( \! j- ^plt.rcParams['font.sans-serif'] =['Microsoft YaHei']# j* z/ m  |/ Q' t7 b
plt.ion()
& g- O% ~( v0 @( k7 n
8 i: }  I& ?9 T) Cwhile True:! b: V- i) b: K
   loud = cyberpi.get_loudness()
+ D0 n* |: f$ o% M6 [8 L  K! a. [; I   plt.clf()$ c! L3 U0 @2 [  I/ z! H0 k& y
   plt.xlabel("數據名稱"), }5 u- U8 g. U2 D% f
   plt.ylabel("音量讀值")8 a3 [% G! r$ b- E  s. [
   y_locator = plt.MultipleLocator(5)5 ~& k$ @  B8 s  o  y: f
   ax=plt.gca()/ a# V! }1 Z; p5 E2 F. J. r
   ax.yaxis.set_major_locator(y_locator)
5 A1 c7 _# o7 q! z2 e1 a   plt.ylim(0,100)$ h2 y3 z! l5 ]" P  j
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
3 n" I9 X' s; i   plt.title('童芯派聲音感測器讀值'), ^) @4 q/ e1 U& q
   plt.legend()
) [& G" ]( z* t6 R   plt.show()
; S8 A$ |# n4 U6 d& D2 H. x( u9 \, f: P% X    plt.pause(0.01)4 F! x6 F' L5 G+ U& c  O+ N

/ H8 P9 [1 _6 P: R7 G6 A: r9 P7 W/ s0 |  C+ N' f
matplotlib 多圖表顯示3 C8 P+ ?9 M! a% L9 Y8 w
; b7 s/ [6 s* v) j+ H1 A- ?
from matplotlib import pyplot as plt
2 d( y& m$ y" ?3 M" b! l3 F& yimport time/ m- \3 e3 I7 M* W5 T9 a+ M
import cyberpi3 |% j# h: `( t, X

3 m# U, S3 c' ?; x, ?loud_list = []
# J1 T2 s9 O+ v: w* Q# n; m& Sbri_list = []8 y  M4 K+ `4 K- F$ p
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體0 F' J% ?/ o; }) v
plt.ion()
8 Z) Y4 K, ?  Vplt.figure(figsize=(10,10))% e2 S& B$ j1 s
plt.figure(1)8 c7 C8 |# f8 [  m) R9 i
x_locator = plt.MultipleLocator(5)
: i( j: b+ D9 |y_locator = plt.MultipleLocator(5)
" O: f8 h/ q/ A- c, E5 n: nwhile True:8 P4 P0 Q# X  J; p% ^8 c
   loud = cyberpi.get_loudness()
2 z& ]* s: z3 s6 L5 h6 d   bri = cyberpi.get_bri()  \0 _3 Q# z4 E4 S
   loud_list.append(loud)
  R3 `+ u- {( Z( Q& D   bri_list.append(bri)
5 R# X5 c2 k5 P+ k" ~# [' D   battery = cyberpi.get_battery()
0 c* L+ J, R& P8 J" }1 ~3 P- F   size = [battery, 100-battery]
+ n( \2 C8 e$ V9 Y* H  J/ \. g   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
" C9 X* H- X* m4 z: l1 p8 v* ^   ax1 = plt.subplot(221)
8 v" f" I, [* I+ \/ L: d* u1 ?   plt.title('光線折線圖')2 h5 {8 V+ S1 A+ h" N
   ax1.plot(bri_list)
! q" O! E; w' @' H( h- M   ax2 = plt.subplot(222)8 }& L! ~2 S3 ~+ D' |
   plt.title('聲音柱狀圖')
$ D+ g! t  X; i( d) G   ax2.xaxis.set_major_locator(x_locator)5 C. E! |& {& G4 j% V2 Y/ A
   ax2.yaxis.set_major_locator(y_locator)& O6 D: J/ E' g' i
   plt.ylim(0,100)
" F$ i, ^  b9 ~: ]) G   ax2.bar('sound', loud)
: c; ]+ c5 B! e6 u2 E  y   ax3 = plt.subplot(223)% t. f% j' J4 g" d* j  s5 i
   ax3.xaxis.set_major_locator(x_locator)! h2 y3 u3 l: }. j* W$ \/ ?
   ax3.yaxis.set_major_locator(y_locator): S8 H2 V1 p1 o7 ~% c
   plt.xlim(0,100)
+ C! F. J3 v" z4 B" u4 e3 ^5 t4 h   plt.ylim(0,100)
/ d) L. M, j7 e% R  @   plt.title('聲音、音量散點圖')) t( s  q) Z6 J9 |8 M
   ax3.scatter(loud_list,bri_list)( k9 R. J  v# M: S% |% Q) }3 x
   ax4 = plt.subplot(224)
1 V$ @2 s* i% E* E   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
9 q8 C0 B8 ?8 g5 b   plt.title('童芯派電量')
' L' L/ _. @6 z5 V( `) r- ~& P   plt.pause(0.2)
4 c8 f& K; r0 \5 r   plt.clf()
. z( [6 i! {. G1 Y5 t% J   if cyberpi.controller.is_press('a'):' a) o, Q/ A% R
       break
* Q1 r/ `1 j* D0 ?   if len(bri_list) > 500:
( b& j! \% j& k5 N1 B: b% a% `       bri_list = []
) ~  Y! h; m! |! C3 x        loud_list = []
; y4 `: V, H, e, \
9 V6 \. L; p0 n

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-7-6 03:05 , Processed in 0.026606 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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