圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8264|回復: 0

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

[複製鏈接]
magiccar 發表於 2021-7-2 15:47 | 顯示全部樓層 |閱讀模式
本教學譯自Makeblock官方教學文件,原文點[]
本教學文件以windows作業系統環境為範例,Mac使用者可以參考結合實際情況進行操作。
快速教程:如果您已安裝了Python環境和第三方編輯器,請跳至第三步。或在您的編輯器配置的Python環境當中安裝pyserial和cyberpi程式庫即可實現童芯派第三方編輯器的程式設計。
pip install pyserial
pip install cyberpi

4 w4 J7 D# J3 M: f+ ?/ I1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。
    ' u4 F* O, t2 t) o

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

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


% K  \( T/ W% T
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    6 y8 O- I' p( C3 \9 y: c. z' w
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    ) |7 t) ^* w* E9 ]5 T  L
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    2 K! `/ g5 X" x& o- k' f6 j: ~) o

5 z+ ^1 ?& R4 n( B4 I
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)) G. X- w1 p" \; x9 ~) p

$ i) M3 @# Y! _1 T; s9 x
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    ; n% O7 G) ~* }

5 l* U: {( x9 I$ E8 E9 p9 V& I
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。! U9 a8 ?! X  m+ A& Y
& B# ?' J+ N0 F
3.童芯派第三方編輯器程式設計準備
0 |% f! O/ o" A
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    ; o' G# b3 i" x: h7 I

2 h9 N& W2 f& b  E* ?- c
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。$ m; C  M7 Q: h  F+ C9 w+ J

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


7 D; v: {- Y- g
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。' e3 A7 O# T7 v7 F. N5 k0 S

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

- i( f; Q, D7 C$ S' c& Y, ?% W
查閱cyberpi API文檔見:童芯派API文檔
9 H" V# s- l+ p6 [
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    4 l: E4 j$ O  }  D6 S) W1 M

) D+ u  [0 R/ i& d# ~  V1 K
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
' Q9 V! x# |& W: C  S! [5 N& l
5.一些程式設計案例
- Y4 J' W/ e9 a4 F* v童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
5 z) G7 L( j$ p& v
功能介紹:
( T5 n: O5 S1 o1 q: o5 n" h" M利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
8 t% v' d% ?0 [3 R' e通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。- \/ V  `' ^- a7 {& g
結合藍牙模組可以實現無線滑鼠的功能。8 [. B6 l% e& I

: u. A; e1 Y( i% u7 H: Kfrom pynput.mouse import Button,Controller9 h; }' |. H4 @7 f5 L9 k# d
import cyberpi
$ f4 [3 c* s1 W& M8 }9 cimport time$ v" O& }: t) P8 K
$ i* q8 I* Y4 }2 }1 }
mouse = Controller()0 q3 R8 K5 D$ k5 b  A5 m) z8 \
) c" }& D% \& P- ?2 H0 C' E
while True:  F4 ]) |8 h% |2 b9 s
   if cyberpi.is_tiltback():
- ]. F2 m: a' P( A) T( R1 _       mouse.move(-3, 0)# O1 [2 P8 c9 S0 N# |. x5 \. x7 P
       print(mouse.position)
# x# p4 E8 w' x3 a! |: n' N3 y( R/ I   if cyberpi.is_tiltforward():
2 Z" f8 t$ e7 l* w       mouse.move(3, 0)
7 v7 Q! S. W* w3 w# B   if cyberpi.is_tiltleft():
# b, R$ d! g4 B  V       mouse.move(0, -3)2 x% G; P. j5 O7 e: R# T
   if cyberpi.is_tiltright():% A% @& i! J, e. A$ O6 H* ~$ V
       mouse.move(0, 3)
2 z5 {5 }5 _* u3 ?   if cyberpi.controller.is_press("b"):- x/ u: i! K& ?3 F5 j
       mouse.press(Button.left): e/ X$ o1 H, z) w+ Z; t
       mouse.release(Button.left); \: w: b* D( x
       mouse.press(Button.left)" _/ T4 d3 S- o. c" |! W$ w
       mouse.release(Button.left)( E1 d8 U9 h& D* Y9 v
   if cyberpi.controller.is_press("a"):# i, L1 j2 Z. R8 B+ K) C5 ]2 |
       mouse.press(Button.right)3 F( G( E9 ~0 d/ m; @/ G
       mouse.release(Button.right)
' v4 q8 K& T5 b/ e& V4 _5 K    time.sleep(0.01)) }0 w* N/ g, X- \
1 s' y, g  Q6 @0 D

; S: o, g: T$ ^4 P5 U8 D' A
語音打字器
. u; C* L1 c, J- o3 \) @2 t5 c
功能介紹:
/ T- y  N3 A+ b2 @* u利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。; L% y6 D4 s2 A8 M7 C+ E* h
將語音辨識的結果通過pynput在文檔中打出來。# W: M+ m/ C, D  A
該程式目前只能支援英文。( b; R4 D) s7 e; P

% b5 A6 @6 f) W' i* z0 ^import cyberpi
. e1 g( L9 T* V+ v- s% k: R- }from pynput.keyboard import Key,Controller+ M( D( w& N0 g8 R# Q
import time
8 @/ `, s! p1 z* }, D1 q
( W5 y* S  F+ M0 W/ _keyboard = Controller()6 \+ S( a" @2 A, w
cyberpi.console.clear()) W1 e& c7 l$ I7 u  a$ \6 r
cyberpi.led.on(0, 0, 0)1 [% H6 i# |5 r
cyberpi.set_recognition_url(): r( c# r. Q5 ^7 P* J
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得9 v# \2 u$ `( g' j" a
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")5 u( ?) X9 I& A8 p( z" [
while not cyberpi.wifi.is_connect():
, l8 G9 z1 S8 k1 _  l   pass
# S: l& Y2 M+ N( ~! ncyberpi.led.on(0,0,255)
5 v2 _* k& D& W! [0 y! kcyberpi.console.println("WIFI已連接")
$ G* j% _# q" ~3 A, B. B2 o! Ucyberpi.console.println("--------------")0 _+ K! o1 G4 s5 H1 g) }5 L* h4 C
cyberpi.console.println("按下A鍵開始語音辨識")
/ X/ g; o  [1 B/ \1 ]9 P  awhile True:, C# m8 B) d3 s1 w6 ?- A
   if cyberpi.controller.is_press('a'):, M, t( e; z; M! T* H2 e/ ~
       keyboard.press(Key.space), L7 b4 A/ P/ {. `$ O9 p; W9 Z
       cyberpi.console.clear()
% O7 ]2 @" Q6 w7 Y, j       cyberpi.led.on(100, 0, 0)0 c; u+ Q, u; [& k' N
       cyberpi.console.println("開始語音辨識")
. {3 [5 S; |1 I) B8 v* I1 o       cyberpi.audio.play("switch")
$ m/ o* `4 P2 w       cyberpi.console.println("--------------")
" r7 v" l/ i; a: E( r       cyberpi.cloud.listen("english", 2)5 B7 f0 k, ]; }/ O  w4 `/ Q
       cyberpi.led.on(0, 0, 0)
, Z7 g+ u4 f  s' U# D1 O' }) S6 c       say = cyberpi.cloud.listen_result()
$ ]$ x4 q: L5 A       cyberpi.console.println(say)- E" E4 c- W3 R4 Y; c5 C
       cyberpi.console.println("--------------")8 }7 N' p" x$ \4 q
       for i in say:2 t4 G7 c3 n& r/ v4 f1 |
            if i == '':
% ?4 G& D5 x' M) `                 keyboard.press(' ')
/ n. l% l0 q& y/ ?- [  [+ j6 E            else:
) Q4 m' r/ c& f                keyboard.press(str(i))9 p$ y/ I& M8 c* z# }
                time.sleep(0.03)
3 |; l5 l  E* q' T6 v( z

7 V2 V2 _  N4 Y; C: u% |matplotlib音量柱狀圖

8 K1 P! y8 k  w* A) N9 z% [( Bimport cyberpi
/ p# b3 B: M  ]! ~( @import time+ P( P% H1 s# G/ P. K% s
from matplotlib import pyplot as plt5 ?8 w6 o5 l9 a) N

& K1 g7 \! n% H& C% ^' D9 H$ H& Bplt.rcParams['font.sans-serif'] =['Microsoft YaHei']
* _! K4 M4 `: A& Tplt.ion()  e' T4 ^8 k+ ?+ ~7 o  O5 l1 b

  f7 M" x1 ?! ?0 I0 _) dwhile True:8 P/ C$ ]: z2 o! S8 J2 H* M
   loud = cyberpi.get_loudness()9 g) v' h" {- N1 C5 Z  ?
   plt.clf()
; V+ P3 L' d# P6 {1 Z   plt.xlabel("數據名稱")9 X  |0 J" E, L# z1 k
   plt.ylabel("音量讀值")& K2 X- W" l( l3 v: r! J
   y_locator = plt.MultipleLocator(5)
! E, ]5 D; U4 c# O   ax=plt.gca()
' R! `* i! Z* y7 O6 i& |- D   ax.yaxis.set_major_locator(y_locator)
" @* p3 S  Z# _: o, L   plt.ylim(0,100)+ W/ k# w9 N3 \  s7 r2 R5 ~8 l# V
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
5 V" k$ d; O; a2 R7 a   plt.title('童芯派聲音感測器讀值')/ f  w" [! G" j* H0 H, f2 y$ o% C2 y; X) ?
   plt.legend()
1 O2 L# o9 i! b7 D0 q% O# `4 [# Q# A. J   plt.show()
" \5 b! S0 J/ S0 n. u) h    plt.pause(0.01)9 `( b: U# c0 U4 r- h
" w- h- }  j, q) {

: k& R+ |& L! r& f0 {matplotlib 多圖表顯示3 T, A- F9 e% j

, s; p$ A6 k' S! Cfrom matplotlib import pyplot as plt
& S, B+ M4 ?, h0 O+ Vimport time6 i  f. m0 i0 j1 [4 |" M
import cyberpi/ E8 q, d8 V) N% P* C
) E8 T6 u; ~6 \7 W) z
loud_list = []4 j4 U: n* h8 U/ W9 l+ d+ U6 X
bri_list = []& u; e  v2 b# k  l5 n- V& H
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體5 f' T' r2 R0 W  w3 s+ {
plt.ion()& U8 g* B* c1 S. U
plt.figure(figsize=(10,10))3 M# r1 A/ p8 Y/ s& H8 k/ L
plt.figure(1)
! ^( _  G+ a+ Q% Y- Y* xx_locator = plt.MultipleLocator(5)% v. ?3 k! g* M$ o# f( @5 r* x
y_locator = plt.MultipleLocator(5)+ O  A; l) X( c
while True:
/ g4 e" N: Y+ v3 @5 t   loud = cyberpi.get_loudness()
* x( n8 y0 m" j6 L* U" @( S   bri = cyberpi.get_bri()
" ~8 _% M, N  {) B" n) O   loud_list.append(loud)8 X7 C$ x% P- k' N  P2 t
   bri_list.append(bri)3 U# Q6 R( v# h& _
   battery = cyberpi.get_battery()
9 v! r' N. F2 w( V( b   size = [battery, 100-battery]" S' S0 c, X9 o( V6 z
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
7 W; K- p* f' U$ _( l9 k   ax1 = plt.subplot(221)
7 w7 N* Z; c$ C* ~8 r   plt.title('光線折線圖')
3 ^+ t7 w( `6 P# B/ ^$ i% N   ax1.plot(bri_list)
5 ^. P8 j3 @  g   ax2 = plt.subplot(222)
/ P+ c  E; J: k* G8 n9 n   plt.title('聲音柱狀圖')
0 n8 R3 T- K+ C1 V- C+ O. T6 i   ax2.xaxis.set_major_locator(x_locator)- h+ D. C6 [2 p1 W
   ax2.yaxis.set_major_locator(y_locator). G3 w4 k+ l; D! K( o1 ?/ n/ v+ S
   plt.ylim(0,100)
% d* \* Z' l% |0 x6 r   ax2.bar('sound', loud)5 w  m3 O+ c2 I: P- G
   ax3 = plt.subplot(223)3 _% m, H( W  U
   ax3.xaxis.set_major_locator(x_locator)
6 r: Y" q, z) b# l) e% q, }; e   ax3.yaxis.set_major_locator(y_locator)7 `# a* y8 P7 W; P4 Z" P
   plt.xlim(0,100)0 v) c7 l0 w& D. A/ H
   plt.ylim(0,100). j- w2 e0 k4 f9 Y- u
   plt.title('聲音、音量散點圖')  F) M& v3 N2 ~, r+ F
   ax3.scatter(loud_list,bri_list); p. D& H1 |; s' a% y) ?
   ax4 = plt.subplot(224)
1 @0 a/ V+ D( ]' I; [   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
( E7 a. L5 N# z! D' }% P   plt.title('童芯派電量')
& ~5 V4 B% A+ b   plt.pause(0.2)$ S. ?. d6 @% [# U/ b
   plt.clf()
6 h( F' U: p8 X. N6 Y5 a0 _# r& d* Z   if cyberpi.controller.is_press('a'):# M; G4 E+ l( f$ }
       break1 z- F5 B3 [! I& V
   if len(bri_list) > 500:
5 y- C2 W, a7 ^2 X4 t       bri_list = []$ u$ b; Y2 ]) n- ~1 M& t! H
        loud_list = []) W( F5 e8 O( L1 o+ q3 z  b$ o' W2 R

2 _3 T) ?  r# j. Y

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-5 19:22 , Processed in 0.024072 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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