圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8544|回復: 0

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

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

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

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


( Y4 ~  r* G' [+ m
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。& D7 M! k0 @9 Y; |5 M: J0 R
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    5 g( ~# P$ j- Y; ?( e: A# O
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。% w7 y0 K$ [- q
# X' e$ T/ z9 q9 W4 O$ ?; A  ~  S
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    1 t8 v2 c. Y6 V

# p/ {: o% P* A  X' c- s# A
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    5 s; d4 r, m8 Z; g; W1 z$ I5 }

. W8 o# a9 e* t# y; _4 Y( k, I4 q
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。! j9 d: Q3 N9 ^& M( x" V

, @( ^: f/ j! z6 y- S3.童芯派第三方編輯器程式設計準備. `3 B+ M2 F- r6 G: n# @
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    : Y  G, L' Z+ [/ u+ v/ l8 y

) D% _5 S% x% n8 {7 e& k
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    6 {9 N! r+ P8 P, W4 c  n( C  ?

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


" `9 |" S& u( t+ E4 ?
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    # d' n, w& Q: r

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

* R/ M& z# O& P& ]+ [# j( |* q
查閱cyberpi API文檔見:童芯派API文檔

. d- a0 w( A9 A% I& Z" f
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    1 t2 L- V  A/ X+ B3 @2 M- y, ~5 @

. y: }" [! g5 ^; ?
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

# B  [! f4 o+ Z5.一些程式設計案例
: J. \( D/ `: C0 W( o& f0 F童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
8 a  I0 c& P! W5 o, S7 U2 r- l& I
功能介紹:
$ [6 `% w% x7 K# d! U& M5 |/ L2 a利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。7 C% ^# k, Y4 Z/ X4 d$ ]! o. Z/ y
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。  @0 S$ @1 U$ b; y+ Z% L% {
結合藍牙模組可以實現無線滑鼠的功能。  X/ ]# H3 D& [/ u' H" V

; {5 D& Y; y( }  L* X9 E2 Lfrom pynput.mouse import Button,Controller6 }: b  V4 Z$ ]* _
import cyberpi9 ~' b' y3 y  m
import time" g6 X( F; h, @$ v+ j

0 \* C# i# k7 B, @# S# }2 \mouse = Controller()+ Z" F4 E  x" B: b2 e$ ~
) y* u% D& R/ s( W& J5 n
while True:; |1 E  X3 ~. u9 T: G
   if cyberpi.is_tiltback():
5 w: S. j$ j" u       mouse.move(-3, 0)
5 k, E) u8 a" }' w       print(mouse.position)
2 g& {8 T1 Z$ z2 I" i) a9 a* H   if cyberpi.is_tiltforward():
5 S/ E* O. Y* o3 W. ]       mouse.move(3, 0)) s, Q' V8 S  F& N4 Y: c
   if cyberpi.is_tiltleft():9 d& c/ M; @! \; h6 l/ y, t. N" \
       mouse.move(0, -3)( k1 {: a# G/ O, s; j0 [1 M
   if cyberpi.is_tiltright():
+ o& B. O+ I, A       mouse.move(0, 3)
+ g/ h3 c' ^# |* @) c0 j. m   if cyberpi.controller.is_press("b"):. u- H4 H* I* `9 T
       mouse.press(Button.left)
0 v( b' Y0 A) u! a* M       mouse.release(Button.left)- h* W/ C6 U$ o: C
       mouse.press(Button.left)
3 C6 E+ j: Y0 a       mouse.release(Button.left)
5 q4 H. Z7 s: x; |   if cyberpi.controller.is_press("a"):
8 l" T& r, g# ^4 m2 O3 s7 [       mouse.press(Button.right)
( s2 N) g. Q  z. E$ }       mouse.release(Button.right)6 w: X3 k7 R1 m7 [9 Q2 f
    time.sleep(0.01)
) `4 C& K0 W. C2 T% x' C# v! ?$ n, o1 A! b" k0 B

6 L% D" R% a# [1 m4 ~) x
語音打字器
, r! m5 W# k- k# T
功能介紹:8 X* Z" ?" ]( w2 g2 X, s: F) Z: U8 ^) \
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。2 g" s& c! Y, g7 o5 b. O0 b
將語音辨識的結果通過pynput在文檔中打出來。+ W, [  k' |. v# Z: K, p5 I/ F) |
該程式目前只能支援英文。
5 d3 ?% s$ Y. C2 X/ z  b# `% y: K! L; f' `$ u- z9 M! m; d
import cyberpi# ]2 u' m& i: T' v6 s; G5 r, v
from pynput.keyboard import Key,Controller
* Q8 a2 C8 r8 l3 m8 I/ T( timport time$ [% t6 w& U3 Z$ ]; u2 t
! t' F/ @- f3 e% ?8 s' n& \
keyboard = Controller()& d7 ~0 n2 b4 K. _( ~
cyberpi.console.clear()
0 q/ `. ?  v  }- ccyberpi.led.on(0, 0, 0)" o7 F6 _6 ?7 w9 U
cyberpi.set_recognition_url(). k3 [- b2 I  q8 i# x( k- m
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
! Q0 D' N6 u1 z% J& G5 fcyberpi.wifi.connect("WIFI名稱", "WIFI密碼")6 C# S( e4 X7 Q: {% d' W& R
while not cyberpi.wifi.is_connect():, H3 o, L9 E% W7 H- ?0 I( k& C
   pass
; }2 A7 |3 C. H, {cyberpi.led.on(0,0,255)6 E$ {4 R" F9 s
cyberpi.console.println("WIFI已連接")% u9 h% v% S) L4 ~. P8 \) @, t& r
cyberpi.console.println("--------------")( B8 l+ a5 M: U4 n' |& K& u) _
cyberpi.console.println("按下A鍵開始語音辨識")
6 p( y  R$ k4 n7 |6 Dwhile True:
$ c. N: S  ]3 C+ }4 T   if cyberpi.controller.is_press('a'):! b1 g+ }" K/ S2 Q3 N
       keyboard.press(Key.space)* q3 N1 s# t" Z# P
       cyberpi.console.clear()
9 D5 {2 k% @$ U4 F       cyberpi.led.on(100, 0, 0)
  s' J1 e% i+ A) E       cyberpi.console.println("開始語音辨識")+ X" `# c6 h9 l! z
       cyberpi.audio.play("switch")
6 Q& b) Y+ K# R: T% ]. S! I       cyberpi.console.println("--------------")
( q$ g+ D+ Z, i& z1 D+ x       cyberpi.cloud.listen("english", 2)
) M5 C1 }) I  Y       cyberpi.led.on(0, 0, 0)
- ]  o  t! l& U$ Z7 L# y, S       say = cyberpi.cloud.listen_result(); W( P% _$ g9 y$ X0 b: B0 `
       cyberpi.console.println(say)* u$ H% V* Y5 y) |6 u6 X
       cyberpi.console.println("--------------")
) u0 T, H# l+ C3 G       for i in say:
$ ^+ ~. N) l# ~% s4 _            if i == '':2 v: ^% y. U( h  {1 ~
                 keyboard.press(' ')
, M' g  K- j9 b            else:* ^1 l4 t: h( U; I( j$ @
                keyboard.press(str(i))
, G8 a0 d- ~0 C; j7 A; ^# a8 P# m/ q                time.sleep(0.03)1 t/ d1 `9 e3 }

  }- ]0 O2 ^4 S' W5 |9 Wmatplotlib音量柱狀圖

) |/ c8 ?1 d) u' A5 [+ i2 Simport cyberpi
( N" b7 F% X/ ^5 L" yimport time
: M7 q! V" M3 D& j( H# w) Zfrom matplotlib import pyplot as plt" G; }% i5 ^% _; k7 U- K# S7 [
2 Y+ B0 e& l0 r2 g; O" W- x' F! P
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
) \, K4 J/ g# k  r3 N- Vplt.ion()) Q5 J6 [7 C1 a5 E1 r9 M
- `) @+ |; l& e- G
while True:) x' F9 t; z' }/ n
   loud = cyberpi.get_loudness()
7 Z& ]+ F6 ~0 U# N& `9 ?   plt.clf()4 Z- G+ n0 X" A. `. B
   plt.xlabel("數據名稱")  C+ P: W$ ^9 w6 `! H9 ^1 r
   plt.ylabel("音量讀值")
6 Q/ @3 U# \5 G5 D2 n% b5 O   y_locator = plt.MultipleLocator(5)
2 v, P+ J$ G" M7 t2 r   ax=plt.gca()
& I; ]1 l  C* w, x$ B. ^   ax.yaxis.set_major_locator(y_locator)
+ p% u) V; d* p% z9 x   plt.ylim(0,100)& _/ O$ S0 j2 B; y. Y6 M
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
% j  z  b8 F. N& O6 ~2 w   plt.title('童芯派聲音感測器讀值')4 ?8 m; g6 a* z* }% T/ V
   plt.legend()
$ a0 T8 p" Q( @' f* Q  B- g# S   plt.show()
' }1 S! ~* D6 z* u6 C    plt.pause(0.01): X2 |; e6 c) i! |7 _

; t* S6 p; z/ {7 y" k
, x+ l  d* M* h1 T. F( K9 R4 Xmatplotlib 多圖表顯示
) d: ], o# y7 F/ ^1 ]
* j2 U) _; l: H) m+ w! _. H" k
from matplotlib import pyplot as plt
2 Y0 g' Y. L& k* F# v3 qimport time6 a1 H5 X, Y& p3 X; l6 ^  Q
import cyberpi
( a+ l9 T' V, M: J, Q6 m5 t9 g : V( z$ W3 L) N
loud_list = []9 V1 q+ [" J9 B' ]6 Z
bri_list = []# ~: ~, L) f' b; P1 ]/ B1 |0 D
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體: \& d" `0 b! @% z. Y; Y& Q
plt.ion()3 M9 A* a4 @- o8 d( }2 \( ?
plt.figure(figsize=(10,10))
. f* v  M, i) {' Hplt.figure(1)
4 A; w; O2 a% J4 Kx_locator = plt.MultipleLocator(5)
2 J! [: G% }4 ^y_locator = plt.MultipleLocator(5), x) ~( ?: r! s6 k# h5 h
while True:3 C) x1 p, S& L+ z) x
   loud = cyberpi.get_loudness()
6 ?: d! q4 ^2 k/ Y) j0 u# y) k   bri = cyberpi.get_bri()8 U" N) v) ?( J3 B+ x  ~% I* J
   loud_list.append(loud)
  Q  h  w; r' Z% s$ q# L* g% P( Y   bri_list.append(bri)
1 U8 ]% m% f. [* N1 o, s* ^6 D   battery = cyberpi.get_battery()
6 l# D7 Q7 t5 h7 Y   size = [battery, 100-battery]
9 x( p  O& }6 t$ r  [  |: b   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']& L$ O/ `0 W! O6 K4 v7 |' ^6 d3 p
   ax1 = plt.subplot(221)6 k0 ^7 t) z7 g
   plt.title('光線折線圖')
7 r. ~# ^) I" B, i& Z   ax1.plot(bri_list)
) o. w- \8 q* s5 H   ax2 = plt.subplot(222)
# U6 }6 ?1 x- j* V: A. p* c   plt.title('聲音柱狀圖')
) E; T, F' _+ Y   ax2.xaxis.set_major_locator(x_locator); Z% i" s* L) k9 b- i1 f# s
   ax2.yaxis.set_major_locator(y_locator)
4 A. J* M4 [% H% p$ G: t   plt.ylim(0,100)
+ x# S$ E$ A* Y5 I! j   ax2.bar('sound', loud)/ A2 V% Q- p  ]8 y1 k/ }- q
   ax3 = plt.subplot(223)
2 E* e; c& \+ b   ax3.xaxis.set_major_locator(x_locator)) ^! n0 x  U5 @# [5 l9 s- [& T
   ax3.yaxis.set_major_locator(y_locator)2 k% j# w$ h% q  L7 r! M
   plt.xlim(0,100)
+ G, p; U, H& \+ s   plt.ylim(0,100)
2 q: k& V2 K8 e4 r( V   plt.title('聲音、音量散點圖')9 W6 ]+ f$ P% u# v
   ax3.scatter(loud_list,bri_list)
6 e7 X7 h* i" h: H& ^# J5 ^   ax4 = plt.subplot(224)
7 m9 z) [! @- W' A; s   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
* Z6 N; Y. k! J* M; P) d, c9 Z   plt.title('童芯派電量')
& R0 f& i% e- E9 }( [   plt.pause(0.2); d4 j1 z) d4 U- |9 V7 c0 Q
   plt.clf()
1 X. i2 Q% ^6 B   if cyberpi.controller.is_press('a'):
- V- b1 Q; L, S- {       break6 \0 y2 t: t+ f0 \# O5 M
   if len(bri_list) > 500:* ]( E8 ^$ f0 O6 U; ~
       bri_list = []
* m7 w- N4 f3 B8 _) Y* p        loud_list = []
  p7 u9 c: g9 X" q6 I
, i: B* z4 o& l5 s! K, `9 @7 M

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-5 10:56 , Processed in 0.027758 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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