圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 7759|回復: 0

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

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

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

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


; ?5 G) U- M8 q+ M( W. Y! O+ ?- m. x
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    1 r4 V( b; o0 W3 m1 }
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)8 J2 N6 z" a, O9 c! }( R/ a
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    3 n9 G3 ?3 @# w1 Z1 t

+ `! \, O1 i7 x7 L6 X
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)( q( K1 }$ y5 s* C# X6 T, d
$ E1 u" Q& \7 x' ^
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。% w# N6 L  y- t: i  T
; p3 d' P1 D- ~' Q$ O6 K
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    1 I( I3 ^( r- i

( ?# ~0 o4 [& d3.童芯派第三方編輯器程式設計準備
+ S- q0 m  L, I. H- ~2 s
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。. b( }9 r* S) ?5 I& H; m* A" _
/ v' b: V" y: w
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。4 @. [2 t/ v9 s3 a' V* k5 Z7 @

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


# w) S& q0 b. B' v8 s+ c- S. `
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。9 Y; q6 N& w, D( P4 g  E7 z0 D

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


9 _% c2 I' m. t7 B9 A
查閱cyberpi API文檔見:童芯派API文檔

" d( m0 |( p! S0 O" v; n3 [# h
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。4 r8 Z* O1 R3 F" P

! w" i& T; Y" L" Q! e
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
* l3 `& e, w' N
5.一些程式設計案例2 `4 S9 v! X  A" s6 M
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
5 F7 M* r6 B+ Z. l4 a0 b: ^
功能介紹:2 R& k' ^& \+ j; Q; h
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。, m( i" f) j8 g; }  F, B7 s
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。1 e' N6 p& o, ?, E
結合藍牙模組可以實現無線滑鼠的功能。
: ]& y3 |% B8 s( _0 C4 u; ?
! n$ o4 Q; @6 b" u- H. Ofrom pynput.mouse import Button,Controller
3 c" N4 f4 J, n6 s2 Kimport cyberpi
/ _$ @& Q3 b2 Gimport time
3 A: G6 j! I+ Z% G / J6 k0 L1 o4 e+ K: c( m* ^
mouse = Controller(). m8 F. [) @( w) U* X) Q
2 Z  R( U/ k7 M5 a; D
while True:
6 `8 j8 ]8 b8 m; R& J   if cyberpi.is_tiltback():# I0 R/ D7 d: g( Y# H# {, I6 F
       mouse.move(-3, 0)
' @2 `2 K4 F& Z) x* e  c       print(mouse.position)& r) r+ K  Y6 O% E4 L1 J
   if cyberpi.is_tiltforward():4 b: z# J" ^# r" [' c/ s6 \  y
       mouse.move(3, 0)4 f! r, @1 s. U! Z& K9 m5 v
   if cyberpi.is_tiltleft():, m4 ^9 O1 P& d
       mouse.move(0, -3)# Z# r6 H' n/ S- a0 W
   if cyberpi.is_tiltright():
/ o1 j9 ^% L6 j" ~  o, R7 k       mouse.move(0, 3)
* ~) _6 V7 _9 X' d: T9 ]. [   if cyberpi.controller.is_press("b"):
; S3 X% n: K7 x  W. P/ x& J' E       mouse.press(Button.left)3 Z9 E7 h$ A5 c& B# R* y, k
       mouse.release(Button.left)$ Q9 b& q  }- @: n
       mouse.press(Button.left)
  [, K- N) v' ~7 M       mouse.release(Button.left)" r: a0 B# _5 m3 e& k- d1 w8 a
   if cyberpi.controller.is_press("a"):
. V$ K1 z4 Y* V, P5 w       mouse.press(Button.right)2 S, W" o$ N- ?. q
       mouse.release(Button.right)
* _+ K) W: d( o) M3 g6 J$ Z    time.sleep(0.01)8 B, _9 s, p4 T, i0 h' G% W5 v8 q8 f

1 Q" W: e# P3 S; C0 W0 _) @* u1 a. m  v
語音打字器
- n3 W$ h& ^( X+ m* ~7 j
功能介紹:
6 }  V. P4 F0 Q: P- |/ X7 v利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。6 E  S: E8 H/ L" x* H7 q$ B, K
將語音辨識的結果通過pynput在文檔中打出來。
% n- \% K, W$ j該程式目前只能支援英文。
7 P* K( e: {: P% w
& N1 Y/ I  U1 dimport cyberpi. T8 e# K) l8 q  F! r
from pynput.keyboard import Key,Controller
) `; D, u& h3 e( n7 ]import time- T" V* d  F  D
4 ?5 P; t2 g7 L- y- u% X2 r
keyboard = Controller()9 J/ F3 |8 q5 f9 y2 }3 G
cyberpi.console.clear()
& c  j4 k( q8 e& K! S* d$ zcyberpi.led.on(0, 0, 0)
4 f# K6 A0 P( H2 r' f2 g) rcyberpi.set_recognition_url()' G/ I- K, Q5 V# B! P
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得1 J0 {% w  p2 v2 I
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")- W, Q2 j5 c/ M% k3 d1 [
while not cyberpi.wifi.is_connect():, p2 W# w6 z* P0 L' R& T8 Z
   pass# K/ V) M: k! x; _: n
cyberpi.led.on(0,0,255)4 Q0 F$ O* D0 P, V
cyberpi.console.println("WIFI已連接")
- n5 K8 Q( I6 T# A5 _! M$ xcyberpi.console.println("--------------")
8 M, P% `+ [- O1 M* Bcyberpi.console.println("按下A鍵開始語音辨識")
; i; E  B/ N- k& B4 Mwhile True:
/ a+ A; a1 |# E   if cyberpi.controller.is_press('a'):
, x. L/ [: l+ i. |       keyboard.press(Key.space)- y) ~4 s6 k: E& c/ }1 |/ C' b
       cyberpi.console.clear()0 {2 Y- g6 t# o0 s
       cyberpi.led.on(100, 0, 0)9 p, N- y6 T3 E! e
       cyberpi.console.println("開始語音辨識"); s5 T1 `* @$ Y0 W6 M
       cyberpi.audio.play("switch")
5 i# O# I, N6 p/ s. F       cyberpi.console.println("--------------")
# ]" X- T$ Z1 j" A, Z/ r       cyberpi.cloud.listen("english", 2)
6 y+ r8 O, b5 ~: L9 h       cyberpi.led.on(0, 0, 0)5 s8 z, a# n# ~/ F% n
       say = cyberpi.cloud.listen_result()
5 R+ m+ a* D1 ?3 z( c% K, u/ ?       cyberpi.console.println(say)
. ~' R# B* m2 Z8 R' X6 m1 X, Z) ^9 x       cyberpi.console.println("--------------")
- A! c; t. B. A: ^, ]7 s       for i in say:* U7 z0 Y% U5 j/ W3 \) n( w' {
            if i == '':
" ?/ M0 F, _* Q* L                 keyboard.press(' ')3 M) F/ m8 ^  t
            else:0 u9 j- Y2 C$ y& L. f3 ~4 B* b
                keyboard.press(str(i)), Q* ?/ V2 `- x2 _9 P$ @
                time.sleep(0.03)
. W# L/ ~0 b4 ~) m

4 D1 {6 ^; M; ]! tmatplotlib音量柱狀圖
+ m3 I/ S$ U( M2 {' i1 T2 \4 n/ j
import cyberpi$ z6 ?& A( Y5 z
import time
' f: a) K/ W9 ]' N8 u, Dfrom matplotlib import pyplot as plt1 l& u: w" O! N4 p

6 |; x( M3 ]& e+ V* E& X! J7 }1 Uplt.rcParams['font.sans-serif'] =['Microsoft YaHei']
- J$ C3 ]& F; Lplt.ion()3 U" z2 }6 U( E
& d; i& @6 Y! h# F. r2 {
while True:3 r' Y$ ~! I. F  `! p3 ^
   loud = cyberpi.get_loudness()1 _2 Q* P5 |6 f8 i5 T& x6 z3 l
   plt.clf()6 F6 i' L. q0 Q! X; `7 j
   plt.xlabel("數據名稱")
6 U  O/ a1 ?" C; R; n* J   plt.ylabel("音量讀值")
4 k1 n7 T; y3 S; `   y_locator = plt.MultipleLocator(5)& z2 x; ]* i/ b  _) O5 r$ V  C
   ax=plt.gca()- C( e- ?+ H. Q+ h3 f2 H- E. ~: Y
   ax.yaxis.set_major_locator(y_locator); O* v% m% P- y5 W
   plt.ylim(0,100)$ t+ q. M  \9 Y6 t; r6 h% a$ P
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
$ n9 M- l4 |1 z5 I6 R   plt.title('童芯派聲音感測器讀值')
. w5 I& @9 v3 g+ P7 l$ ]5 ^   plt.legend()
4 f" D+ y. j5 j9 S7 ~( t   plt.show()
  a0 H6 C9 O) k1 {! f8 m    plt.pause(0.01)
4 f) _$ C. v2 o2 |* {- @4 |; j- O6 Y- p5 b8 }
9 ]6 U. r5 }+ q, t
matplotlib 多圖表顯示
5 T/ P  ]$ R+ [9 o0 a
: Q* q) z( \  Q  q- u4 x% E. g
from matplotlib import pyplot as plt
- p$ S7 V8 l" Y0 d  Ximport time3 b+ {" _* d2 z8 i  R
import cyberpi
4 r5 e1 L, Y  u% v) B$ V! v4 ~* w1 K % h% N7 A+ m  U3 M
loud_list = []0 I/ P. n6 m$ m2 M" s
bri_list = []. D; Y, L1 p& e/ E  ]
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
5 i# z$ R# l. F" @) N& o- dplt.ion()% B8 H5 E9 m/ U, W9 I
plt.figure(figsize=(10,10))  u6 m/ q0 T5 p  s! f3 f7 P# p
plt.figure(1)" z$ |! ]5 H: t3 x! b) ?0 h% a
x_locator = plt.MultipleLocator(5)
/ G+ x  F/ y3 W; k$ q# j8 Ky_locator = plt.MultipleLocator(5)2 F8 J% n3 o$ G
while True:2 c0 j+ C, J8 w# H- {) o/ e
   loud = cyberpi.get_loudness()
- v4 ]! l# u2 n% E   bri = cyberpi.get_bri()
+ e: T/ Z. I% W! [; B2 w   loud_list.append(loud)
( ?8 n, d( o- w) k$ s   bri_list.append(bri)
; U$ U$ ?. P+ R  D. r( w   battery = cyberpi.get_battery()+ ^0 H- J0 V# ]( g$ D/ u+ e0 Q
   size = [battery, 100-battery]6 q( k  U* w8 D& r& n8 F1 i
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']% a0 d4 b8 ~3 v: p" D$ g
   ax1 = plt.subplot(221)
4 n, [/ R) l6 g4 k5 N   plt.title('光線折線圖')
5 c, t4 D( v# E: w0 |. a   ax1.plot(bri_list)- f: |% z0 L8 s
   ax2 = plt.subplot(222)! [8 v1 I  N, B* c+ u6 L7 ~
   plt.title('聲音柱狀圖')* W; B& U) O% B- v; Z: e+ S; p6 h
   ax2.xaxis.set_major_locator(x_locator)
. V6 k  u4 i" j- O5 D   ax2.yaxis.set_major_locator(y_locator)8 L7 m. z- r& r& f& Q1 r0 b
   plt.ylim(0,100)1 U) n  x3 E+ a! b" h8 C# ^& A
   ax2.bar('sound', loud)1 D* T! A: g+ ^. @
   ax3 = plt.subplot(223)
% K3 F* Y1 @6 T) s   ax3.xaxis.set_major_locator(x_locator)
* |* q% y4 R5 @# y6 A- M   ax3.yaxis.set_major_locator(y_locator)# K+ A$ D) j3 O& E% @; M5 {6 @
   plt.xlim(0,100)
' J  A7 M, f5 s, a) ?- u: T   plt.ylim(0,100)$ L* m$ K: m& \; H. H1 B
   plt.title('聲音、音量散點圖')0 N6 I' a. p; J; ]/ I  k
   ax3.scatter(loud_list,bri_list)
+ f) b' L; E& i   ax4 = plt.subplot(224)+ W1 M( R, T% |; |1 S
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})+ M7 ?+ G! K4 k/ O7 V# M
   plt.title('童芯派電量')+ y; c: S& E0 j' ^/ r8 ^
   plt.pause(0.2)7 h# n% N! R( A& t0 H
   plt.clf()
$ P7 O2 U, w1 Q' X   if cyberpi.controller.is_press('a'):" W% F' Q/ {! `2 R" o& n# E
       break
/ E6 b5 u3 B  m' g3 _' U5 B6 h   if len(bri_list) > 500:
, ~% o2 J" r) T) E$ k       bri_list = []
; {# @0 V+ j9 y* P        loud_list = []' u6 n, _$ R& Y; n6 Q6 O5 P: ]

% P( k$ L, A& P- a

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-7-9 14:11 , Processed in 0.028213 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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