圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8518|回復: 0

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

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

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

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


2 g$ Z" C& H+ j+ b# F
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。' X. W8 K1 h: h+ [4 ~2 F' `
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    & O  h1 D' o, ?
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。9 V+ `  h8 r6 W/ R" L

4 X4 K8 k0 R2 v/ w' h4 `
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)  o4 H! s% f' D8 S4 f! l; p
4 G  y& {1 |$ U. T% L0 T( y# X; O
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    . `4 X! {% s. }9 r/ D& }( T4 ^
5 M! h" w8 }3 u  Z$ F1 U- I
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    * K) A9 e6 X' A; d
" g6 t/ Y3 s& M/ V
3.童芯派第三方編輯器程式設計準備& S7 e* W% K) z- ?
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。  o; V* F* I2 J

$ L# Z) m) X# P+ }
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    : u9 c) r. u7 K1 X

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

1 z8 E+ T! Q  b' U
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    , @6 `, w9 l4 F

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


' [+ A" q. i% `& H  J4 d+ R! c8 k
查閱cyberpi API文檔見:童芯派API文檔
' D! g# ^5 @4 j9 p5 P
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。( b: x8 _4 x0 V  @7 z
' S; B- V* D9 O$ x* P
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
5 I; Z. p# Q- m5 O3 c
5.一些程式設計案例6 o( F  |9 ]! X* S6 Y% M
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

0 a! h; a8 q, _. V! [: B功能介紹:
) v8 X+ s, z' X* ~7 z利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
2 c- M$ u7 Y$ s$ k6 h. b通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。- |9 N; [4 ]6 I- H. F
結合藍牙模組可以實現無線滑鼠的功能。
. V5 v( }) _' S) F0 A9 \  |9 S7 O4 J8 t; ?, q0 T1 X
from pynput.mouse import Button,Controller
& f! d& m7 U7 I% k; R1 fimport cyberpi
6 m! W( m; O# O! vimport time
, K( C) M1 K/ G+ ~ 1 U) u: M. H- p$ T
mouse = Controller()
4 s( l6 J' b8 b* ~+ { ! Q* x, ?$ m. B* Q
while True:
/ ~  N( O$ R6 @+ [   if cyberpi.is_tiltback():
) ?2 a2 k2 R2 a; b; B( {6 N       mouse.move(-3, 0)
- H5 y" x+ O1 y: d* ]: C       print(mouse.position), o  ^' Z1 r5 Z2 n% x( v, V! A: T
   if cyberpi.is_tiltforward():
& \1 W7 Q2 J! _. E6 l0 Q       mouse.move(3, 0)# z' t, e* C6 ^& d. u8 q1 m7 }- \
   if cyberpi.is_tiltleft():6 D* ]# m2 p1 w1 i! u" N
       mouse.move(0, -3)3 w8 h/ z* i, A, j, X4 q
   if cyberpi.is_tiltright():
& L0 g7 G% ~+ J* [       mouse.move(0, 3)
" Z. S% l" Y2 H4 Y/ G8 `   if cyberpi.controller.is_press("b"):
* o8 G$ U1 ]: w$ y       mouse.press(Button.left)$ K/ k' R6 v1 V
       mouse.release(Button.left)9 k2 S6 J5 V2 }
       mouse.press(Button.left)
7 Y7 P* y6 }+ V0 F. Q       mouse.release(Button.left)8 m+ {! K7 Y$ t! i  `1 B1 O
   if cyberpi.controller.is_press("a"):
, D* N3 _, D5 M+ [4 ^. ^) ?+ ~" U       mouse.press(Button.right)) Y9 ~! u5 q1 L4 k- t) f
       mouse.release(Button.right)
' }$ a5 j1 X/ p- \6 ]    time.sleep(0.01): F+ l9 o* ]. t1 O
# Z) B% F; J8 h% f, i% j: R5 n3 F! a

" O% K2 F8 `0 V! [* p$ b
語音打字器

) H) P& S9 ]0 ]5 S, R功能介紹:$ P! h# T, p' X% O
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
: }& a% L% J4 P! e1 X  S將語音辨識的結果通過pynput在文檔中打出來。5 |; E4 f5 {, V8 S
該程式目前只能支援英文。
0 O4 ~& Y' \+ m/ Y0 S. H  U$ ~
4 x* x" x% u4 p; [import cyberpi, f$ A/ N' R" T+ a. V- M
from pynput.keyboard import Key,Controller2 e" w- O% I, k4 P, x* x
import time0 b/ R' e" c9 w' [* Z# s. B& ]4 _
) V7 e3 c. b. m, b9 z$ Z
keyboard = Controller()
8 o' @3 ?: g: p% N2 [cyberpi.console.clear()
( `/ Y# G5 K5 P; r) Kcyberpi.led.on(0, 0, 0)
; k3 J& D) }' n! i$ Q$ @! hcyberpi.set_recognition_url(): O& ^$ Q& f7 l- |( a6 [
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得: `& n1 K; S$ J. ?# c- B4 I% \
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")# k$ a8 s: B. ^$ a9 w/ _
while not cyberpi.wifi.is_connect():( ~) I( ~9 Y5 ~/ f1 Z! m
   pass. D) f7 A9 g( {% Q" g- a7 W3 ~
cyberpi.led.on(0,0,255)
. g3 t1 h3 E# T- v7 Z5 {& m  Kcyberpi.console.println("WIFI已連接")
# l8 k4 y0 I+ }1 |cyberpi.console.println("--------------")2 T3 X1 a! s$ g6 L. ^) i+ ~
cyberpi.console.println("按下A鍵開始語音辨識")1 D4 g- @8 J4 G- Q: Y6 o2 |
while True:
$ t7 T$ r6 |/ g/ l& y   if cyberpi.controller.is_press('a'):
8 J/ y- j& T5 t. x4 v' }       keyboard.press(Key.space)/ Z1 F* ~6 ]4 ]  g0 e& T5 V
       cyberpi.console.clear()/ P* I( V  Q6 H/ a% ?  p
       cyberpi.led.on(100, 0, 0)
0 M7 t! [* e% Y) U  p6 l       cyberpi.console.println("開始語音辨識")
/ t# \2 A$ `8 f1 H1 r) N       cyberpi.audio.play("switch")3 b+ \1 M8 Y. k# H' d$ C
       cyberpi.console.println("--------------")2 U8 c9 f9 V# D, U' l
       cyberpi.cloud.listen("english", 2)6 B: w8 w- L* H1 l  e1 ^5 `
       cyberpi.led.on(0, 0, 0)3 _5 ?; B1 k! \$ ]4 ~: j* _$ f+ F
       say = cyberpi.cloud.listen_result(), N7 ?5 O" ^& S$ Y5 U; ~, z1 \$ z/ q6 D
       cyberpi.console.println(say); K3 f9 d- V5 H& p9 I
       cyberpi.console.println("--------------")' r( m# ?" U+ O3 ^* T, H
       for i in say:
$ O9 j4 n" G$ m" N            if i == '':
* `( [3 l( K% F5 N. [                 keyboard.press(' '), m( ^) X- S3 K
            else:: j( w3 U9 H- \1 A
                keyboard.press(str(i))
8 V  s3 @; ?3 ^$ [/ ~9 _                time.sleep(0.03)
; i4 b6 n# y' E# R! O3 r, t" {% G
( t1 ~5 P* T2 E) M) L. r
matplotlib音量柱狀圖

# G4 \& t& |" S: _import cyberpi
1 ?7 Y0 J# d* Qimport time. V1 E3 i$ M4 o, o
from matplotlib import pyplot as plt
- e! J; p7 }' c  Z* E" a* o ! t, D2 m1 l) J- n9 D# |
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
& `4 r8 S% E: D3 eplt.ion()
9 X* `4 z7 u7 E  C: K5 ~ ( P7 g' @; m+ h1 r  I+ z9 B) ^
while True:
& N. i$ ]6 \5 ?# m, e   loud = cyberpi.get_loudness()" k& E! `  P1 i3 K) i0 b7 Q
   plt.clf()' Z1 t$ d9 X& N$ t9 J' h5 ~  e
   plt.xlabel("數據名稱"), Y: [0 ?2 L# Z& W- U
   plt.ylabel("音量讀值")1 A; `6 p( a% h/ F
   y_locator = plt.MultipleLocator(5)- a/ F& ?# t1 K, l# e
   ax=plt.gca()
/ M1 ^9 B2 W% i( o8 J. H   ax.yaxis.set_major_locator(y_locator)
; _& N# f: w% u4 [, h- K   plt.ylim(0,100)
! w+ R& _( z( q+ K   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
0 }5 Y$ \! \$ F! S  U9 o, s   plt.title('童芯派聲音感測器讀值')
+ p1 M& S9 A% p   plt.legend()
! P' E- e; ^9 l6 t   plt.show()6 J7 I, a/ L1 ^& P& T
    plt.pause(0.01)
6 q2 ~+ t# d& H- n: ?& J4 I
% Y$ }' I1 m4 a' p9 B2 K8 H' k! x/ \5 N- r# g0 D/ s4 [
matplotlib 多圖表顯示$ u+ n2 ~! s! \

* ~' v: |- T1 f+ o, e, o& A6 Mfrom matplotlib import pyplot as plt
4 k' w5 Y( o- n1 _7 f4 s* Bimport time
2 X- M! C: r) }# ]/ ]' x/ l( @import cyberpi
/ ]0 ?! C9 O. c  [+ H; B 2 @9 H; o7 z6 X8 _
loud_list = []
6 g4 X4 x# f* h$ T* fbri_list = []( C" s; b4 E6 d! b# j, C; Q
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體+ R5 u% C* p, A  ^( L: Z: f& Z
plt.ion()6 @* e( n, @$ t/ Y1 m. h
plt.figure(figsize=(10,10))
/ Q8 d. |7 }. l) }plt.figure(1)3 p* L3 m1 A: z- C
x_locator = plt.MultipleLocator(5)
  o6 ]$ f8 |, j0 by_locator = plt.MultipleLocator(5)
' j/ P7 C3 x) \9 swhile True:+ x7 g; l1 e  X+ G4 P
   loud = cyberpi.get_loudness()
- |! t! h1 r; l9 F0 b   bri = cyberpi.get_bri()" T0 F! w0 ?3 q" [+ j$ Z" i
   loud_list.append(loud)
: e1 b. y  Y2 `6 s5 W% g" u   bri_list.append(bri)
2 y  H, M  P3 o- X   battery = cyberpi.get_battery()3 s# q2 h- o+ Y# r6 g2 \6 t
   size = [battery, 100-battery]/ Z6 J) C2 k' z
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']7 w+ K, f0 A' N+ y8 S9 v/ c8 c
   ax1 = plt.subplot(221)! B% c3 `7 P9 B: h
   plt.title('光線折線圖')$ I, C9 x" n- p
   ax1.plot(bri_list)) [* h0 R: b5 ]
   ax2 = plt.subplot(222)6 R* O; T4 N4 Z
   plt.title('聲音柱狀圖')
! `; g5 E4 C- n8 Y& E   ax2.xaxis.set_major_locator(x_locator), a) c1 U( {, h* e- R+ s7 J
   ax2.yaxis.set_major_locator(y_locator)
: l" w+ o- O/ o& R" L   plt.ylim(0,100)7 u- E' o8 I4 f# S9 Z/ W% M  z
   ax2.bar('sound', loud)7 y9 }( Z/ w3 g5 K
   ax3 = plt.subplot(223)
' ]' x( c3 y1 d% b0 i' y/ S   ax3.xaxis.set_major_locator(x_locator)* ^+ W4 W# v7 {$ b, f; Z- j3 W- h- D
   ax3.yaxis.set_major_locator(y_locator)/ J* ?" v8 y+ n% ^7 f+ h8 K
   plt.xlim(0,100)& E) K+ L* o$ E
   plt.ylim(0,100)9 I% i7 w6 [' ?. R  @2 C5 K; q
   plt.title('聲音、音量散點圖')3 A+ P6 S8 x7 T7 I3 x, q
   ax3.scatter(loud_list,bri_list)
0 ]( N  w3 J, z9 f/ G+ m   ax4 = plt.subplot(224)
- ~( U% h2 X3 P0 ?) F; m8 f% D   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})+ i! z6 N9 A- p- J5 t$ q& b4 R7 [
   plt.title('童芯派電量')% F/ z' d4 q& s' d+ J
   plt.pause(0.2)
! P( I( `4 N' T" z2 }   plt.clf()* y+ n- F' Z5 I; l) o- j+ d# N# Q
   if cyberpi.controller.is_press('a'):- J  ?: J+ b5 |, T, c% D7 e/ Q
       break! o" Z4 [8 p) |+ V: d, C
   if len(bri_list) > 500:( f* L7 E7 T$ u7 l
       bri_list = []: k( C. ~3 H' s' O7 [) `
        loud_list = []
; r9 q- D9 W4 y( j. Z" q" r" P3 g0 n+ C" `2 U6 l

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-3 22:43 , Processed in 0.026729 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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