圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 5960|回復: 0

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

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

- a+ c6 E' y9 Y1 [- g( I: N, ?1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。7 H! L; u: Q, Y7 K2 i8 B; e) x+ w

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

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


# v! F4 A) U7 J6 y
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    . y( }- F' y: j; w/ @8 R, }2 J
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    ) |) L  ?# V3 P, v  h' y
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    3 `2 o/ |* T/ K8 Y! L
0 t4 t: A4 u) f
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    * a! @- |8 V1 R- f- x
! e4 i. i# s8 h7 t- W4 b# e# \
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。; H0 ]# \( L* p# V/ l5 o8 y, z

/ z/ w; l' r* L8 k6 Z1 y+ ?2 i
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。5 S4 \& r" B+ \3 M3 C8 b2 y
. m" ]/ l9 I0 r! ^% V
3.童芯派第三方編輯器程式設計準備
4 T: |) r, Q* Y
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。* _' J% l3 T; |# s

! c. ?# Q' x* g2 w- P7 t9 ?+ M
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
      Z) a" z: @& T6 J4 X# E1 X. A

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


) X/ K9 e0 @0 u
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。6 s& f3 b( g$ I3 T

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


; R1 J7 k6 C! j( e# e& Z0 `
查閱cyberpi API文檔見:童芯派API文檔
- m" ^. t* ]! b: J) r5 d) Y
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。( A. a! R6 Y! P# U4 e+ N4 ~

8 _" s2 ]" U- ~4 q  s# M
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

% Y8 b4 j5 W" j$ p; |5.一些程式設計案例! y7 i! q( c5 S; K# D& ^) I" P
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

3 f  W1 d  Y* u7 i功能介紹:/ ?9 k' I. z0 A3 w* V
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。  M. f) A  C  {5 ^3 D
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。3 R2 h  ~# Q+ Q* N( X
結合藍牙模組可以實現無線滑鼠的功能。
) z9 Z$ H- k9 ?4 R6 G  V7 _6 t3 u& o, h' t' W- @5 D) G
from pynput.mouse import Button,Controller, R2 q% T! U% @2 I4 Q% g  ]
import cyberpi& q2 U: l, @/ k% u- K7 Y  b
import time8 P$ x# T% s" k2 D
6 d. ~- C4 H& m6 B1 c1 c
mouse = Controller()
# A0 C( J8 b5 O; W. f! V : ?* ^3 h9 q+ w: K5 n* A+ F
while True:" ^9 ?: o! [2 Q& e; ^
   if cyberpi.is_tiltback():
7 N7 F" N6 z2 u       mouse.move(-3, 0)6 k2 q4 e6 y9 f; C, o
       print(mouse.position)
1 F  B  {+ P( _) d7 U. A" N$ c0 g) M9 I   if cyberpi.is_tiltforward():
3 e3 K; ?& q& f8 a5 u9 a; L       mouse.move(3, 0)
1 ?1 ^( b, ^+ u& l' U% N7 Q  m   if cyberpi.is_tiltleft():  K, p% r" _7 a0 h" ?4 ?, H
       mouse.move(0, -3)
9 Y3 g- Z5 {7 P% Z, c   if cyberpi.is_tiltright():2 J7 |( g/ E4 d5 m
       mouse.move(0, 3)
1 W& U  v2 P& @% [   if cyberpi.controller.is_press("b"):( f; m5 a) s8 G1 I, R* A% ^7 O: F
       mouse.press(Button.left)' z. a  @' h0 G! V1 _. y
       mouse.release(Button.left)4 J4 ?: c7 M4 s+ F$ a! ^
       mouse.press(Button.left)
- a( S* F2 X! k' O       mouse.release(Button.left)" a  n8 U% L1 m* o
   if cyberpi.controller.is_press("a"):
- s0 l. J4 e7 h3 ~3 M       mouse.press(Button.right)
8 a6 `& j( w' u, K, {# ]' n9 I% E6 N       mouse.release(Button.right)2 J2 F0 v: e' M( w) \8 n6 C) `
    time.sleep(0.01)
; i# m0 [& R6 ?  d  a! S) x  [7 N
7 ]) T1 r* J7 j3 N+ \: p6 o  I" a$ W
語音打字器
# G. J' T  p8 y+ q/ }
功能介紹:  s' g8 k) K' O, q) D
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
; R8 z+ N7 B3 t' y9 H* `將語音辨識的結果通過pynput在文檔中打出來。
+ {; r) o0 N% B7 x) t& L6 [* X該程式目前只能支援英文。
, v/ t! ?& C: a) L0 t' t! g) M3 c, D; ]; D5 }; \
import cyberpi( Y) p/ K3 h* m
from pynput.keyboard import Key,Controller
% o+ f8 E4 H8 [; Mimport time+ |( m7 W* [7 G. M4 n
" G. }  G8 Z2 f# Z
keyboard = Controller()2 T+ g% n: d* d. T/ G
cyberpi.console.clear()
0 h7 J) [- D  i  x" h$ k6 ]cyberpi.led.on(0, 0, 0)
1 R$ W* K8 K/ M. y6 fcyberpi.set_recognition_url()# \4 _; @( C' [% M. T
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得# ]3 Q% w3 u( U
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")  b% C) X! z0 Q, k( }7 C
while not cyberpi.wifi.is_connect():
: W( f/ O) F" T( `   pass
8 O/ C. v* c& S5 l: M. _cyberpi.led.on(0,0,255)1 x% u; k4 l2 ]  c- P' m
cyberpi.console.println("WIFI已連接")
0 h9 E: d7 `- Ocyberpi.console.println("--------------")6 p2 K: _& ~+ d" p
cyberpi.console.println("按下A鍵開始語音辨識")
& Q: W* O: [2 |7 C0 [- Bwhile True:
* @, g# f6 U8 }1 K! c   if cyberpi.controller.is_press('a'):
  ]/ H/ W. e, H7 a1 H: \, l       keyboard.press(Key.space)
+ Q0 T) O& ?. k- \5 V% m       cyberpi.console.clear()
1 b9 |) I) o, a3 k+ X+ @6 p       cyberpi.led.on(100, 0, 0)$ b8 v0 T+ U. ]# \$ C
       cyberpi.console.println("開始語音辨識")9 E2 E$ k$ I, Y  i7 O0 Q
       cyberpi.audio.play("switch"); Y& D' I' r) T; J# P9 x, _& }. \8 I
       cyberpi.console.println("--------------")3 @$ d" k. Z7 Z
       cyberpi.cloud.listen("english", 2)
  ^! [' B9 j6 u7 T( e       cyberpi.led.on(0, 0, 0)
/ h: t$ W- g% s+ i       say = cyberpi.cloud.listen_result()
& N# F; i9 f" R& E1 f1 A. f% _* C! {$ o       cyberpi.console.println(say)1 m; o; v' c- n) ~7 t3 @
       cyberpi.console.println("--------------")/ @! D+ z* I. l' d
       for i in say:
9 }, q  a" R+ Q            if i == '':/ h# G3 ]$ L' e( `- v! z1 M
                 keyboard.press(' ')
. X3 `1 T- s" A4 z            else:6 R  P4 J- J( ~1 X' e0 q6 g
                keyboard.press(str(i))
# ?$ M* G- W" m2 I* D3 T1 Y. r. @# `                time.sleep(0.03)
$ K( i6 ?" }8 {; v9 G7 I
5 N$ B' z; }( j/ h, [
matplotlib音量柱狀圖

1 x7 I/ _. r& X) Simport cyberpi" |( z! T/ M5 M! L. C9 F# i5 m
import time
( Y' L& T) G# K' q) C4 Hfrom matplotlib import pyplot as plt0 @/ {- D" G( [. ?) I6 q0 g# L: `
! T+ t! D) K* e, o5 Y0 @% b
plt.rcParams['font.sans-serif'] =['Microsoft YaHei'], p$ e: K, O1 Y+ N- ~9 J
plt.ion()
- ^0 ~2 w9 I. H1 [4 a  w
, V8 q/ c' g' R$ @0 t! N' owhile True:
3 _( A3 o) l* d! z- `9 b   loud = cyberpi.get_loudness()$ w( ^. [5 e0 E
   plt.clf()0 o5 v4 [* z  |& E" `- {. S
   plt.xlabel("數據名稱")
2 O4 F" O( Q5 K' A6 H4 E7 l   plt.ylabel("音量讀值")7 ^# l/ w2 N3 G: B% Q
   y_locator = plt.MultipleLocator(5)
- P0 I. p' y* x; d   ax=plt.gca()& m/ t( V0 O9 [6 c1 M5 {
   ax.yaxis.set_major_locator(y_locator)
  R% l" u: W+ O- K; O   plt.ylim(0,100)
' }3 G; h! N6 [, r; n+ }   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
" L6 U0 |- b& z: y6 u3 R( ^5 l1 G   plt.title('童芯派聲音感測器讀值')
  Q) u4 P0 |$ T- m8 R* m% M5 a/ i$ E   plt.legend()
* i: l, i+ u) O1 o# l* d% C   plt.show()
) W4 n/ x* I! z% f9 q0 T6 Q# S    plt.pause(0.01)6 W- G! U& s+ ]0 L- D" Y: V

* c6 L/ \5 F, d2 i/ O" v1 K
2 ^, ~7 I( q# g0 D) @matplotlib 多圖表顯示
; o3 u, o& i0 l. G: K
' d; J5 T" q3 H4 ~/ H7 d% c
from matplotlib import pyplot as plt6 w0 ~( K# ^# T/ }; v
import time* |# G5 H. }+ a0 C* @' V
import cyberpi
9 j4 L0 W0 T; y! N7 }7 y . ?& G4 t6 O  I1 R9 n9 e1 j' x
loud_list = []4 h+ I! p- Z# P; j0 q
bri_list = []# s9 R) R4 _2 ]. K8 G4 `
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體- n1 _' b( Y$ H6 V- J6 P
plt.ion()" L* F% m2 M. Q' t3 e$ s7 ~+ C
plt.figure(figsize=(10,10))( k4 p2 D0 `% L1 v- R0 D
plt.figure(1)* h. {+ O7 K% |  z, f! K' f9 f
x_locator = plt.MultipleLocator(5)5 S6 R  c. `0 S4 }  Z9 j
y_locator = plt.MultipleLocator(5)
5 Y/ S) L" |9 K2 @% |3 c. v: J& Iwhile True:7 D3 X/ F! h" ^0 D0 O
   loud = cyberpi.get_loudness()
2 W' J# \& O/ w  |   bri = cyberpi.get_bri()3 |4 ?$ i; I$ ~' S2 U% D
   loud_list.append(loud)
' ~. V8 ~) n) p+ U  J+ w   bri_list.append(bri)6 K/ J( r8 f2 H- {, t
   battery = cyberpi.get_battery()
7 {! m0 K7 s1 W7 B$ v4 a2 ]; q/ g: g   size = [battery, 100-battery]7 T" S! I0 t, \) N9 }; U! J; @4 n1 x
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']2 O: N1 P, ]6 j
   ax1 = plt.subplot(221)
7 Q4 c7 C# t" ~  D6 ^" U$ d5 `5 Q   plt.title('光線折線圖')
  D0 e" K& a: L7 P2 p7 E   ax1.plot(bri_list)* g# ?4 [7 V  J# \" q  P+ w+ t! |
   ax2 = plt.subplot(222)8 D7 G5 g+ R5 O) n0 Z1 ~
   plt.title('聲音柱狀圖')
$ [! {/ o" Y3 U# E( \# K   ax2.xaxis.set_major_locator(x_locator)
9 P( m+ _3 Y' y9 v. T- C. f3 k   ax2.yaxis.set_major_locator(y_locator)( N4 ^9 \8 f) e
   plt.ylim(0,100)
+ ], @- f7 Z) C, |8 T* ^   ax2.bar('sound', loud)
/ m& H7 I% ]1 l: m/ h" H# Y   ax3 = plt.subplot(223)( a+ {& i. l: [  E4 l5 T& ~
   ax3.xaxis.set_major_locator(x_locator)
( N# y" W/ r3 J1 H   ax3.yaxis.set_major_locator(y_locator)
# m5 ]; s. n( e   plt.xlim(0,100)4 q2 A9 C1 T6 q: U7 e/ d
   plt.ylim(0,100)& N( Q1 @9 ^& e' n
   plt.title('聲音、音量散點圖'), {" O2 M9 ~, J; L
   ax3.scatter(loud_list,bri_list)
' m! J) _& D1 j( w+ l' D   ax4 = plt.subplot(224)
" O5 _3 c  ?  c- m   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
6 C3 {0 {) }1 \* K; P( z   plt.title('童芯派電量')
) h/ S% x% ^* _4 e; v   plt.pause(0.2)4 C! u" y" v9 c# g+ W) A
   plt.clf()
, Q8 \: M4 Y; r/ u# M   if cyberpi.controller.is_press('a'):
1 E5 W, V6 i0 R3 Y9 V  A0 J       break
6 a; r# t* |3 j8 O$ t2 G5 A   if len(bri_list) > 500:
2 d3 M- l+ P# P1 x       bri_list = []
# `3 K( M9 v9 m- d3 {        loud_list = []# ^" I' P8 }- E$ t0 e" d0 l
) i! d0 j& {7 Z, t) l9 b  O! x

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2024-4-29 18:45 , Processed in 0.024825 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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