圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8558|回復: 0

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

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

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

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

! Y8 l6 i' m9 I" D" }& u$ |
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    3 c2 E$ `! J3 U, |+ m8 t! M9 g5 l# D
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)0 v* B; h' n2 |7 i* W
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。: G' F9 }0 P. N% y5 U5 b

! w, v( \' ^  _3 L! U" W
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    & n, O0 X% L; w) s5 q
6 r  b2 ^6 U. M+ ?" y
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    8 Q: ]6 ]" w% |- S
& s3 w6 e) ^7 a& O/ }$ K# \
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    5 F) |/ g7 m: X/ H0 H

- V+ \( k. y; i9 |3.童芯派第三方編輯器程式設計準備
2 Z' m- G: Z: ^
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    / _5 |0 V! H4 A. U' ?! M

5 ^8 B0 z7 z- o- q9 f8 L4 K
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。$ Y. i8 |9 e! n6 L2 H

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


( p% \# L+ b. l
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    & @$ `0 y$ t$ v; g

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

1 q; a" l0 s/ F- j% C
查閱cyberpi API文檔見:童芯派API文檔

0 O: X' X/ d! H  g7 Z9 m
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。' C2 x2 ?" L; ~5 u! H
4 U' ^" l/ x# Z/ e: J& T$ Y6 f5 W
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
6 C/ e; N& c: V
5.一些程式設計案例
/ t  T: [' m. M% F$ P童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
( Q: [5 {- O% ], c2 D
功能介紹:
$ K) ?, x  t6 ^利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。- y+ ]* U# l( a& i- f
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。9 E% ^) K: b& J6 z
結合藍牙模組可以實現無線滑鼠的功能。8 x7 ~* Y: `3 G3 l
, _! e% Y( _- r" n+ J
from pynput.mouse import Button,Controller
3 T$ z/ V/ V- Q- c, rimport cyberpi
- `* }, D$ }. `% k( U  K! Simport time
7 f$ R! @8 D/ U& y
, E" t& c, [  v& H6 u, mmouse = Controller()
( x, i  s% v/ ?0 h4 S0 U% s
: m( E- Y; E. S5 F. Twhile True:1 T/ W, q- \0 s, a/ J* D0 \$ ~* G
   if cyberpi.is_tiltback():* _; s8 F( k. \  [% n# M
       mouse.move(-3, 0): F) T0 O  R! m
       print(mouse.position)
) F1 i" M* z5 K3 J& {) H+ H7 B   if cyberpi.is_tiltforward():
. W1 K* n! H/ V5 w! c9 j" u       mouse.move(3, 0)
1 _! L$ e+ S! u! w1 k0 g* Z3 C   if cyberpi.is_tiltleft():
" s5 N% F3 j9 m) M/ p       mouse.move(0, -3)0 H8 {9 s9 D( q4 V" v! z' J
   if cyberpi.is_tiltright():9 r" ]9 ~" E- @
       mouse.move(0, 3)
8 X4 p9 ^/ {! B& P9 K   if cyberpi.controller.is_press("b"):* X* d) v  I2 E
       mouse.press(Button.left)
- m) ?7 E8 ~- R) p# G       mouse.release(Button.left)
$ r* H' ~% s, M       mouse.press(Button.left)& i8 y4 u' W5 |* n0 ~% Z; k
       mouse.release(Button.left)
4 S% T9 K0 n4 ?6 I   if cyberpi.controller.is_press("a"):" G9 H& r" W2 n( @0 M* s) |) V- |
       mouse.press(Button.right)
5 y, \; d* }! d       mouse.release(Button.right)
, B9 |2 J& D0 n  V    time.sleep(0.01)3 w  ]# ~. \3 M( h/ o* r
* @( g3 x8 _% _) t& T* E# q
7 a5 f  N3 J' w
語音打字器

4 s7 w/ R* h' Y3 K. U. W3 H2 E" k功能介紹:
0 d. J* K- S1 Q5 S2 o0 d8 {9 a* k- M利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
+ A% [$ f1 t* I- N! K! D+ ^. g9 J將語音辨識的結果通過pynput在文檔中打出來。
6 r& L2 f7 M5 O7 E. F該程式目前只能支援英文。! `6 P' @$ g! j# ?8 S# y" E: I

8 P% W" _/ Y8 b7 X% }import cyberpi5 l" z) Y6 B$ b, K! C3 K" d$ I
from pynput.keyboard import Key,Controller" s' e7 Q/ O0 T6 i
import time, d/ `9 y/ U2 N; n7 P
( C4 L! H* L* j9 j+ |
keyboard = Controller()! @, R3 Z8 m' x6 u. \- b
cyberpi.console.clear(): }) L1 P! R* n9 G! m. I# Q% Q; V
cyberpi.led.on(0, 0, 0)
  q' v( S" _" D+ i; Gcyberpi.set_recognition_url()+ a6 @8 N7 u7 V/ U4 u, K1 B
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得  a$ n. z7 s$ ^! X3 ^
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
4 x: i8 K; L. O9 swhile not cyberpi.wifi.is_connect():
/ h1 w# ?( x, j6 `7 K, L5 e+ x   pass' J# U: A0 J# o' q* W% }
cyberpi.led.on(0,0,255)
9 d- |, x- }! Bcyberpi.console.println("WIFI已連接")1 T/ b2 {  ]5 I8 a# K$ x
cyberpi.console.println("--------------")
; P- s* U4 A! Z. l( xcyberpi.console.println("按下A鍵開始語音辨識")
8 j; q3 P1 F% y+ Lwhile True:
' l3 T  K7 e. M' Z/ \) M0 G1 V   if cyberpi.controller.is_press('a'):
5 z7 u0 f. s4 p6 @' G, C, I       keyboard.press(Key.space)/ H. F  ^/ h. V/ Z$ B
       cyberpi.console.clear()% L0 R/ E8 t$ x1 L8 `
       cyberpi.led.on(100, 0, 0)' F" Q9 B) L3 L" e8 V" N3 R
       cyberpi.console.println("開始語音辨識")
( m1 @' u+ _# M) J1 E- M       cyberpi.audio.play("switch")( D* W  J6 K( d/ O- p3 X
       cyberpi.console.println("--------------")$ k. n$ a1 E0 G1 d
       cyberpi.cloud.listen("english", 2)# P0 D  V7 N  y, y0 \
       cyberpi.led.on(0, 0, 0)4 n& N( Y& N/ Z! y
       say = cyberpi.cloud.listen_result()0 B! \" ^/ I- Y; o
       cyberpi.console.println(say): s' l% U$ i. l6 w7 q
       cyberpi.console.println("--------------")  D7 h+ F3 f6 Y. L
       for i in say:
/ U$ ^% j9 _+ R. Z) W            if i == '':
( t& Y1 ^" C, X+ J# m" I' \                 keyboard.press(' ')
, {( S! J( J0 T% e            else:
0 K! s- `$ V' x& R/ c                keyboard.press(str(i)), y6 |9 @) ]- h$ k3 o2 u
                time.sleep(0.03)
7 q, o( V, H- n) A  ?) }" v

! @+ W4 x1 |6 t$ C  s' Tmatplotlib音量柱狀圖
5 c9 a& B* c9 K5 @( [
import cyberpi8 b& ?3 T  f: p" c
import time
2 y# I$ h7 g5 M6 H. P  z8 ]from matplotlib import pyplot as plt
7 C( f9 v8 L  Z. P" z8 Z8 W
) X) a& U) n, k: d6 d& _plt.rcParams['font.sans-serif'] =['Microsoft YaHei']. f1 c6 q4 u9 ]# N4 H
plt.ion()
& P& }) z" j8 D, T' Y# h
2 F" G. S" |7 c- m+ ]5 k" b2 wwhile True:1 g' o" `/ j( t
   loud = cyberpi.get_loudness()
; C; l6 F) M: i! t' e1 J   plt.clf()+ e$ Y6 {; x& w& m! t$ y: y6 C
   plt.xlabel("數據名稱")" x8 q! _# j1 x# H7 X! ]
   plt.ylabel("音量讀值")" t! m, }. N; O4 k' y, X- D( W
   y_locator = plt.MultipleLocator(5)" R9 X7 M. Q  W4 ^9 h4 K* N
   ax=plt.gca()
# }+ p* H9 I% P& s0 a9 x) X5 b   ax.yaxis.set_major_locator(y_locator)
  \4 d% D* i9 P& Y   plt.ylim(0,100)
0 w. X$ q% w/ U1 y3 W, J6 W& ~   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
8 b+ I! O% L. T, J$ g8 \5 D   plt.title('童芯派聲音感測器讀值')( m* u( ~  ?" Z: O, G
   plt.legend()
6 |% H3 Z) f2 c4 \   plt.show()
5 K0 ?# S- b: ]# C. u* i    plt.pause(0.01)  x" T) f1 j% ~+ Y! @! W4 k

$ [0 X* G( U/ T: T& v7 w; Y( D
* @0 R$ F: B& o1 y2 E! zmatplotlib 多圖表顯示$ H( m' `6 r1 D- r. K
: ?3 O! a  B5 ?, {
from matplotlib import pyplot as plt, v$ j' B: m' ]( V6 w  j% N
import time
' K: i. ?# y% y8 Nimport cyberpi
" k( l8 p, g& v& y: C$ B! s
7 H" b5 [- D( m- g& q( F# rloud_list = []
2 @$ W: @6 T" k% B0 c0 _bri_list = []* p1 I  b6 I$ t5 r
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體5 \6 S6 \. t( i9 B6 ~
plt.ion()
4 W+ i3 m7 N; Zplt.figure(figsize=(10,10))
: @6 q) \) C) d  e  cplt.figure(1). i) \: _: l$ a- j# {
x_locator = plt.MultipleLocator(5)% M2 B4 h: @  Y; P
y_locator = plt.MultipleLocator(5)
7 W# h7 B7 q) U& e: Dwhile True:, l+ g0 N5 i! k( }
   loud = cyberpi.get_loudness()* l, \* J& S6 c9 \7 b, k
   bri = cyberpi.get_bri()0 n' W0 B9 f* L
   loud_list.append(loud)
+ m" t/ k5 w. F   bri_list.append(bri)
$ N3 S3 {3 P- a1 A$ v4 S   battery = cyberpi.get_battery(); i- }1 d! r* B  _9 G% E
   size = [battery, 100-battery]
& C# j' Z4 N: U   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']9 |2 |" j" ?) l: X
   ax1 = plt.subplot(221): k4 n* y/ ?& S5 `9 @3 a6 e9 M5 U
   plt.title('光線折線圖')1 a7 b7 g9 P0 w. D# B
   ax1.plot(bri_list)
) p; w1 R7 J, @/ ]  r   ax2 = plt.subplot(222)! L, Q4 u8 f# g# i. l; m; R, n6 k
   plt.title('聲音柱狀圖')
+ Q! E' A' s# D   ax2.xaxis.set_major_locator(x_locator)
8 u7 J& ?7 H6 B2 Q/ M   ax2.yaxis.set_major_locator(y_locator)
8 Z, p: e/ k9 Z6 H' ^   plt.ylim(0,100)" a1 z& x' r" q
   ax2.bar('sound', loud)
1 \9 d5 l( M3 i) Q( K9 I   ax3 = plt.subplot(223)4 p6 ?& S# U! g
   ax3.xaxis.set_major_locator(x_locator)( f7 i* i6 k, h! d& ^
   ax3.yaxis.set_major_locator(y_locator)+ B9 v3 F2 h7 M. q  w! V
   plt.xlim(0,100)
, g1 u2 f& |7 H; y# y5 m+ N, t( Y   plt.ylim(0,100)# I' N& J7 ?3 U8 R8 z
   plt.title('聲音、音量散點圖')6 b2 V. a0 r! S* `
   ax3.scatter(loud_list,bri_list)
+ X8 @/ h9 U6 d/ I' L   ax4 = plt.subplot(224)4 s2 n; p7 M* m
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})! F  V; f3 S2 d8 R1 f
   plt.title('童芯派電量')/ Y( H5 e1 e  C: g* T: w
   plt.pause(0.2)7 g  c& {. V+ a
   plt.clf(); Q, t- r5 `9 A  _) ]& y: t
   if cyberpi.controller.is_press('a'):3 W# }9 v& ~) d9 ]
       break7 p; w( `! _6 c9 L" ^' Y$ b
   if len(bri_list) > 500:
+ Z$ A/ K2 e0 Z  ^' {# P       bri_list = []
7 k) T3 @, \' y1 [6 i        loud_list = []
9 \# T- Z4 t3 n  W  p9 y8 K* U( t: @/ \

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-6 18:09 , Processed in 0.027447 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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