本教學譯自Makeblock官方教學文件,原文點[ 我] 本教學文件以windows作業系統環境為範例,Mac使用者可以參考結合實際情況進行操作。 快速教程:如果您已安裝了Python環境和第三方編輯器,請跳至第三步。或在您的編輯器配置的Python環境當中安裝pyserial和cyberpi程式庫即可實現童芯派第三方編輯器的程式設計。 pip install pyserial pip install cyberpi : P! A9 n7 \. V3 ~& D5 h% g( I
1.安裝Python環境- 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。
/ h5 Y* v* v) _
Python Windows環境不同版本下載頁面:Windows Python下載 Python Mac OS 環境不同版本下載頁面: Mac OS Python下載 ) x+ l% U3 E7 F
- 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。& t# H" ^5 l& t; R+ x3 B
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。 - 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
- 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)* `; q; Q& F+ L, g7 X# e
- 點擊桌面上Visual Studio Code的圖示運行程式。
- 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
2 e4 m1 V1 U& |8 T' n k( a
2 N$ D3 _- Y9 C( _2 t/ J0 g1 x- 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
7 {' v" k/ I# d$ x7 ^+ p' Z 1 u/ p5 }" u) p2 l" y
- 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
- S% r9 k! w2 }$ T& v( P6 ] ' Y1 U2 ? I% e6 a" t3 }
- 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
- 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
4 y! D4 h0 B! Z; r" F, `, b3 z* J
9 F5 s3 l% u! A1 J L0 w3.童芯派第三方編輯器程式設計準備$ Y$ T& {/ L& U- Q9 X( Q+ M9 o
- windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。. U6 Z3 n+ K0 |, [& ]& X: H% o
( ]5 _6 S& a9 \2 t
- 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
. e, \3 f2 O7 W/ f( c
在cmd視窗中輸入pip install pyserial 並按下Enter,等待安裝完畢。 9 g/ ^# Q0 ]$ t# ~; H% t, N
- 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
6 M" d! {" G' K9 E, R
在cmd視窗中輸入pip install cyberpi 並按下Enter,等待程式庫安裝完畢即可。
; a: `. z6 s- V g; R8 O' I4 b3 b( I1 x( T: {
- 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。 V+ i: j% k( A+ W5 d4 @6 y3 Q
z/ ?. S3 ]* O
4.注意事項 在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
" b5 s% s1 B! s9 O! j( r5.一些程式設計案例. E0 C7 f8 t, @+ ~5 A
童芯派滑鼠 需要安裝pynput模組,參照上面的步驟pip install pynput
, E4 @+ V; B. p) ?3 r功能介紹:
1 s, f' Q/ o6 F5 H# I, M5 P利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。: A- x% ?, G# D4 C9 l! k% }" D
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
% W6 S3 N2 ~7 K! m1 _. j結合藍牙模組可以實現無線滑鼠的功能。
' G6 M1 z7 w- S/ D, V6 G
# m" ^' q# l; d3 N& [! `8 Sfrom pynput.mouse import Button,Controller
0 C: X0 E- X7 R$ Yimport cyberpi
& S& X4 E) X- w6 A; \) L! I, kimport time
* ~& j K8 S, W
- M# f- w4 Q0 `5 Imouse = Controller()' k6 S" S" `- Q/ D8 g/ K
, X$ m: t5 L$ c
while True:
e$ |, E9 L7 Z, V( X if cyberpi.is_tiltback():3 ]% u9 @* P. h) [* i$ l- X7 K& ~
mouse.move(-3, 0)
- i* n, m: Q* X: M1 P! T print(mouse.position)
- Q3 | `8 J/ G2 ?+ Y if cyberpi.is_tiltforward():' v0 i e. T- ?1 H+ v3 }0 d( F( ?
mouse.move(3, 0)) m& b5 g/ ?- {- {7 g7 d
if cyberpi.is_tiltleft():
4 G' @' @ i! S9 o5 r. U6 Z/ L' K mouse.move(0, -3)
& J' R3 m$ j5 E if cyberpi.is_tiltright():0 ^+ n2 _( Y9 y% h0 Y
mouse.move(0, 3)- I% |* O- A, B# w' l; j! k
if cyberpi.controller.is_press("b"):6 n+ W6 d% ]( e3 j; W% J# G
mouse.press(Button.left)
# x& f4 P9 K N$ f) v- l: f; j5 J mouse.release(Button.left)
9 W2 h( G$ u0 o0 |/ x mouse.press(Button.left)
) ?* i/ [) s) e8 B: a" Q5 W mouse.release(Button.left)
& ^' r3 I8 b- ~+ l if cyberpi.controller.is_press("a"):8 `! q" G' K0 b9 }7 u$ E
mouse.press(Button.right)" w; a( _$ ^6 l
mouse.release(Button.right)5 @- |: Z( ~1 ~( F. I/ I% Q
time.sleep(0.01): r+ Y# C) ]* z e
. a6 R' ]% n* R& j: o; S/ p8 V
- e/ B; C" u& j# f6 r0 r語音打字器 ' ^: W& C5 h9 W7 H- D4 {
功能介紹:
# C" F: r3 y' E0 R2 Z6 b利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
0 R" w8 R3 r+ F將語音辨識的結果通過pynput在文檔中打出來。
5 w0 p' }! }2 p% a該程式目前只能支援英文。
6 u0 P; I" U! m9 u
- e5 d2 J+ i( V, n+ ]import cyberpi- @4 K% a1 d( N' t- J G
from pynput.keyboard import Key,Controller
, Z6 k2 G" y$ x( z" x/ V; d8 ?6 u) Aimport time
. \/ p* @7 j( U+ e b: i 8 ~& \+ } C+ E* v/ [" ]' U
keyboard = Controller()
1 M4 Z! ?7 z+ P/ K bcyberpi.console.clear()
4 E( O3 e0 n. t! @cyberpi.led.on(0, 0, 0)& m+ p" P# b, \7 J( M7 `, x
cyberpi.set_recognition_url()# w2 t1 z$ q+ C! P: v7 g$ K
cyberpi.cloud.setkey("請輸入雲服務授權碼") # 通過慧程式設計帳號可以獲得
. q& C2 r& t' v& v* k X! [cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
! F2 ]) r1 |) u- z3 Lwhile not cyberpi.wifi.is_connect():0 {# l* s- A* J/ m9 \- I
pass; S# G" c1 p' Y$ z% |- m1 I" j- d- j
cyberpi.led.on(0,0,255)
! T" {8 u. i8 Wcyberpi.console.println("WIFI已連接")( w* P$ _# @, M3 K% m) L& M( G
cyberpi.console.println("--------------"), p5 ?2 g; z+ B# ]9 E
cyberpi.console.println("按下A鍵開始語音辨識")
7 q" y% J, f5 Bwhile True:- S3 T! z, p7 O% t# h' G
if cyberpi.controller.is_press('a'):' _% m n# t" B8 K0 _- o
keyboard.press(Key.space)
v7 P; ~- _$ F/ ~$ ? cyberpi.console.clear()
2 h' f% Y0 j% N( o. b7 n cyberpi.led.on(100, 0, 0)
* D J7 u/ s% |+ S, b; {& f cyberpi.console.println("開始語音辨識")+ s) s& L, ~" i; ^1 q7 C
cyberpi.audio.play("switch")- M w, k% j& j! J, ~
cyberpi.console.println("--------------"); L& s6 E" m9 ~) {7 u: S
cyberpi.cloud.listen("english", 2)$ u0 s" y/ @ V; c# ?$ _3 G
cyberpi.led.on(0, 0, 0)
3 ?$ W0 D s, D: [ say = cyberpi.cloud.listen_result()
! I. o4 z; ~4 Y1 k# V5 `! T; ]8 D cyberpi.console.println(say)
' I9 O. Q& k c8 p/ R) ^ cyberpi.console.println("--------------")
( x* G' J: t' {' J$ C. S. R( U# M. o for i in say:! D3 }- W% j& C& f K! \8 K5 t' ^
if i == '':
' Z; O2 d' {5 w( i# H3 B' q+ l keyboard.press(' ')& z. W: t1 X+ L( }$ y) Q( i% Z
else:
' X* J* N! N) |1 j keyboard.press(str(i))7 ^& V7 g; M3 F
time.sleep(0.03)
# R# G; e3 p3 L, V7 K: N- F4 @% r6 Z( T( h
matplotlib音量柱狀圖
4 w$ _) L( e9 _& A9 q) @& m) A' Oimport cyberpi
. E2 C" ?$ Y$ j7 kimport time& t* D) M2 l- z. v1 g, U) x5 h2 V, \7 k
from matplotlib import pyplot as plt
1 g9 G2 J9 U* U( `$ | 9 k, K' V0 E6 \/ i/ j# V0 B" E
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']: U8 p% F. u5 G
plt.ion(): h! s n8 W1 t8 s
2 J+ e, E, K+ l9 B1 Wwhile True:
0 K' ~1 a( k& b' L loud = cyberpi.get_loudness()+ ^6 {7 O9 A7 {# m
plt.clf()
* P; |& T6 t9 o, d- ?, r plt.xlabel("數據名稱")0 V- K4 M7 a! x; j$ F
plt.ylabel("音量讀值")2 ~# d% T! G& E9 ~: j
y_locator = plt.MultipleLocator(5) _' p: [" j" ^% J% p) @
ax=plt.gca()
! T3 s. v* Z; R0 k& K5 a ax.yaxis.set_major_locator(y_locator)
$ A$ e) T7 P: l0 v* L) g plt.ylim(0,100)2 J% @! Y; i" g
plt.bar('音量', loud, align='center',label=f'溫度{loud}')
( g. R2 u6 _' v' c8 y( ?0 u2 f plt.title('童芯派聲音感測器讀值')
6 V9 F, K" y E' k plt.legend()5 f# M' ?7 H, k) S' q! ?/ U
plt.show()
1 c" S4 y/ x k! _" X( d plt.pause(0.01)
* J* S- X) B) G V# M9 X
9 V1 C8 X+ k! A8 q9 O- _9 Y- W9 T* z0 z6 T* H7 f# f
matplotlib 多圖表顯示1 }5 p- ~# j# u
4 B( D s* v3 P
from matplotlib import pyplot as plt4 s, D) h$ U3 F& s! Z9 ]$ q
import time7 N" T5 t0 z k$ r, M& c
import cyberpi
/ A$ P( `: F+ m2 c6 I, p 1 ^. C/ Y: r& M+ e9 C: l+ _
loud_list = []& [- ^% D. j$ f( t2 q
bri_list = []
" `4 _$ i8 M5 qplt.rcParams['font.sans-serif'] =['Microsoft YaHei'] # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
8 A6 G1 Z) S$ o: Z$ S+ \plt.ion()8 j6 h* V: w5 z' G
plt.figure(figsize=(10,10))% Z$ o x4 I7 _
plt.figure(1)& B: t( R' K7 P m. B
x_locator = plt.MultipleLocator(5)
& R5 y- o" m+ t+ w( T, v. D Y! G1 ?3 ry_locator = plt.MultipleLocator(5)
" J' r9 ]. B- w8 R7 d7 Nwhile True:- t) X. j; G0 v6 ^) Z
loud = cyberpi.get_loudness() C4 V* X# }9 T$ v- }
bri = cyberpi.get_bri()/ Z8 H0 E1 x) ]* i
loud_list.append(loud)) `* v% r2 [3 G' T
bri_list.append(bri)) ?: g; Y; N" T0 l8 H
battery = cyberpi.get_battery()
4 L( j9 r2 G9 q. e: O& {0 o size = [battery, 100-battery]
. j3 q) Q+ S! S/ c# f$ [$ D: q status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
+ W5 R9 c& p# I5 E$ c* j+ a ax1 = plt.subplot(221)9 z: z* o& k! N/ s T( I9 U
plt.title('光線折線圖')
7 q8 w& k( R. V0 z, A7 S ax1.plot(bri_list)3 J4 D- [7 [. O6 O N' E9 H y
ax2 = plt.subplot(222)4 z0 H5 h* f; B+ k- t. L
plt.title('聲音柱狀圖')
`( h7 k( z, t% B4 E5 i; @ ax2.xaxis.set_major_locator(x_locator)6 R# C+ ?" V) i& g) Y' ~
ax2.yaxis.set_major_locator(y_locator)8 y# s8 E# @( v% q( b, a
plt.ylim(0,100)
* b. X! w% _2 @* _ ax2.bar('sound', loud)
& [! }+ T; H& B, O. A ax3 = plt.subplot(223)
9 l7 [$ b) \: p# R4 W X ax3.xaxis.set_major_locator(x_locator)$ ]* a5 D0 T5 I# q
ax3.yaxis.set_major_locator(y_locator)
) S9 _/ m$ _6 A$ ? plt.xlim(0,100)
8 q6 S( Q+ W/ r7 Y+ {$ m plt.ylim(0,100); `7 E6 E6 o( F+ a, d
plt.title('聲音、音量散點圖'), |, F7 O w ~) g9 @; C% M
ax3.scatter(loud_list,bri_list); t( f2 L1 M+ k2 i0 {
ax4 = plt.subplot(224)
" I, r$ @7 \1 h+ n ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})' E4 I9 c; x* i; H' i9 u
plt.title('童芯派電量')9 ^$ t* c o2 l6 c
plt.pause(0.2)
, V9 x8 K, t/ {# g plt.clf()% q0 S; z& \9 U- Y, o5 V
if cyberpi.controller.is_press('a'):# Q! b2 X, y, Y. ~: Q; d& b
break
8 I5 x; d9 A8 m! W: r2 J. `- D' v if len(bri_list) > 500:
% u8 P8 E$ |% z( u! Y( C bri_list = []' Y9 `9 M2 q7 |3 ?
loud_list = []7 P' U l0 o+ v4 K$ M; i
( U4 K% }8 U$ ^8 ]
|