圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8529|回復: 0

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

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

$ C" N' x5 d' |4 t1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。% x. K9 U, C2 g1 C: q) A

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

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

4 J. H0 v1 i+ j: {- ~& j
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
      P# x" x: P, ]: H
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    $ U% R1 U+ u: X
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    ( O" ^* v6 }# ]
  D2 G- C9 C4 C5 {
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)3 n+ \5 L: [% m$ W! G. G9 S' r
7 z( C" X/ _# u5 j
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。9 ]6 X- J% U9 _8 Y) [# Z
/ ^; W( p3 r' S4 M0 t' a% P5 e
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。, N' b' Z. K4 F! A' [; @  p
9 [: c% r( C) d
3.童芯派第三方編輯器程式設計準備
% ]' ?$ X# J# H" N
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。4 A$ S# d8 o% {' J1 K
4 P0 d) V2 s' k7 Z
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    0 x: Q* N$ L+ r6 v; @* a! g

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

& G5 d9 J1 N& N1 x" J; q5 l- [7 @
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    / C# p. X! r4 c3 {/ i5 K

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


% }8 _$ C' e; C
查閱cyberpi API文檔見:童芯派API文檔

! U  L3 P& L; H1 Q5 m* ]
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    7 D) T8 b7 f0 N: n* f
. \# ]( L: L0 ^0 e( ?4 {: p) L! t
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

" G" E% m( x9 i& k$ X5.一些程式設計案例! l; O- A$ W8 f
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
8 P! b& \: v, g5 s: s- X- E
功能介紹:
3 T5 C' b4 F' Z: f/ m利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。3 f9 ]4 l' m7 @. z; s4 s$ C) D/ K
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
8 p5 [0 |: G6 K0 g/ s. ^- x4 p結合藍牙模組可以實現無線滑鼠的功能。/ E& P. Q: R8 c6 @+ W# D( {
. u. f1 j( O9 Z! M# D+ J8 [
from pynput.mouse import Button,Controller: S4 d; l# y, n& O# J& S4 E7 q
import cyberpi/ m; P: n) `- l% K7 k% O+ J" n
import time9 Q8 @) t( ]) T/ W. u' y1 B& G
  _3 ^; T4 x7 H" i8 W1 Z3 T
mouse = Controller()
. f7 ]% r9 l" d# D 8 v2 P2 B; X2 I: n: n
while True:. `; `4 R! _* |" ?6 g* D+ B
   if cyberpi.is_tiltback():6 C7 E: X( r. d: T7 }& K
       mouse.move(-3, 0)3 Z' t: M2 h* }/ ?% B! r
       print(mouse.position)5 a* W/ G* k3 {
   if cyberpi.is_tiltforward():
/ T; O, I0 ?' d       mouse.move(3, 0)
9 U- Q, y3 A& D0 x   if cyberpi.is_tiltleft():
  ]0 h/ z# e2 c. Y$ _       mouse.move(0, -3)
$ C& p( ~* z2 x2 o( P   if cyberpi.is_tiltright():3 p/ e% M. ?# B3 q: |: a* f/ W! j
       mouse.move(0, 3)% ?6 g6 X2 i' ^6 s1 b; e
   if cyberpi.controller.is_press("b"):
+ ~+ u1 U" F$ @# T0 X( ?       mouse.press(Button.left)! \8 |* m1 |3 B# u
       mouse.release(Button.left); x* l# O2 |% G" u. F+ j$ B# G( h
       mouse.press(Button.left)3 p3 m, b* Q/ V2 ?  W2 W
       mouse.release(Button.left)/ x! j( d. v' g" t7 \& g- D8 U
   if cyberpi.controller.is_press("a"):
1 f* `2 k1 i5 S1 e6 I  ~2 C  a6 q       mouse.press(Button.right)
4 P; M4 h( |3 Z9 _6 r7 B, u; I       mouse.release(Button.right)
& G) X) l! B' ]    time.sleep(0.01)% x$ u) q+ h2 N, m' P  M5 U- T
9 H1 X( h4 w* `( u+ G2 n% b

: D1 [# Y- G5 P4 Y5 o9 W1 [# @
語音打字器

$ T  G6 v0 |& B! a! s6 G7 ?# N/ u功能介紹:, h3 k7 I" W3 j
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。& q" H7 u& R- h( _
將語音辨識的結果通過pynput在文檔中打出來。
6 f6 N8 ?3 [& K* Q該程式目前只能支援英文。
. u+ k: G6 a/ r1 s' ?" |7 d$ d7 @( g3 r# k* ^
import cyberpi
" t/ G! c7 B1 {! l6 g, g9 i- O! qfrom pynput.keyboard import Key,Controller6 P. r! G# O4 p6 I( _
import time( e5 ~2 H3 V5 T
( C# d/ S  O6 l* h- l
keyboard = Controller()
% ^9 Y: Z4 o5 z/ ~cyberpi.console.clear()
" G9 n3 H1 O3 t0 V# zcyberpi.led.on(0, 0, 0)& W8 }" d* r& C" C* G& z4 o) |& P
cyberpi.set_recognition_url()" I9 M( ^7 ]$ j, t3 |- l
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
1 \% b5 V2 d! \$ ]# Fcyberpi.wifi.connect("WIFI名稱", "WIFI密碼")& w1 V) H5 `1 K7 s9 ]' m# B
while not cyberpi.wifi.is_connect():8 d9 J3 w( Q  x5 ]; V' N+ i
   pass
* |4 y9 i. u. |3 j- _! dcyberpi.led.on(0,0,255)+ K" H1 r6 }& O' h. b0 }
cyberpi.console.println("WIFI已連接")1 \) H$ D3 {/ }
cyberpi.console.println("--------------")
7 Q1 S) I7 Q! ~1 f( kcyberpi.console.println("按下A鍵開始語音辨識")
; w$ Y$ `+ z) H; S9 bwhile True:
+ `, w& r3 c+ j: D  A% `5 j   if cyberpi.controller.is_press('a'):
# ^9 M4 t+ {9 j1 r) f$ ?       keyboard.press(Key.space)
: I; Y; E9 q# [, F; d       cyberpi.console.clear()4 x  J+ f. b/ {' r1 z3 y- @
       cyberpi.led.on(100, 0, 0)
* H3 j0 c/ M* ?! Q! O       cyberpi.console.println("開始語音辨識")
: E4 `' V- l/ k( Q& [: S       cyberpi.audio.play("switch")# k5 ^+ I! F4 H1 j9 j* V" x
       cyberpi.console.println("--------------")5 e4 f+ K. E3 |6 G
       cyberpi.cloud.listen("english", 2)
( j2 F0 J: A1 j  J  t       cyberpi.led.on(0, 0, 0)  @# Q% Q. v/ b, ?2 @
       say = cyberpi.cloud.listen_result()
6 t* X; r. G' n; c( b2 \9 i       cyberpi.console.println(say)( b1 I& Z: D+ b  b5 K
       cyberpi.console.println("--------------")) p8 ^+ y  i& G4 w
       for i in say:
5 ^& J# R, r# w' h            if i == '':
' m/ C% ~9 H: i: P3 k' v+ _                 keyboard.press(' ')
2 f+ u! R: i' v( U4 L$ M            else:* F: ?! w3 H# s* O5 c: e
                keyboard.press(str(i))
0 l5 g- m: Z" {" w                time.sleep(0.03)
6 r5 [, I. ~( K

7 A) B, \, A2 a1 Hmatplotlib音量柱狀圖
" l# L# x+ B% z5 G( m
import cyberpi5 m2 P) k& ]9 |" `- p
import time5 t/ s' }2 Y9 p+ }7 M
from matplotlib import pyplot as plt
( H" O- d. e1 t
) Z: C1 J% ]' x6 n, `6 ?4 G7 Lplt.rcParams['font.sans-serif'] =['Microsoft YaHei']
/ d/ }+ d- N/ G5 m) U, A3 ~; Pplt.ion()
& |  b( B0 Q3 ^  t: L( ~* G - O$ T1 a  {3 f, j! ?/ a
while True:' p! I7 g6 _" D& n; n
   loud = cyberpi.get_loudness()
0 y, |  J( z1 W: W   plt.clf(); c2 C; T$ k3 \5 Z2 \8 |
   plt.xlabel("數據名稱")' q( Y- @6 y! {! v3 ?
   plt.ylabel("音量讀值")
, I9 n6 I- G: I' E& i2 |   y_locator = plt.MultipleLocator(5)9 ?* D! A" `, I. c) f- a  G. ~
   ax=plt.gca()3 X7 G0 r, q; h. f
   ax.yaxis.set_major_locator(y_locator)
9 {* Y- r1 a. A9 }/ d. E) ^; ^& H   plt.ylim(0,100)9 x7 P  b" S/ F$ z7 v
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
! W  F7 p( ~2 A# D* Q* t8 T' l   plt.title('童芯派聲音感測器讀值')
1 C: a8 `* a) k   plt.legend()
% Z! }2 V2 u8 K5 w0 W   plt.show()/ @% k4 N3 J2 ^/ u  U
    plt.pause(0.01)' a6 t2 @, ?4 \# F0 G; {
0 a1 ?; Q1 A$ \; q: V3 |

7 Y5 W* T( e: T6 mmatplotlib 多圖表顯示
- E* B. @$ U$ H& l# d1 @: Q

, V' S  G, q% [$ sfrom matplotlib import pyplot as plt
. [5 W$ ]3 F# o2 _5 t1 K; h, D& wimport time* U# O1 z' j% x! }
import cyberpi
9 t* n& C2 W4 [& f6 ~ 0 N, M8 S, W+ Z
loud_list = []4 }9 R& {3 ?/ c  }6 Y
bri_list = []
4 E7 a) N! C8 K& Z1 y: cplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體" D7 n: r! F5 N; s: k2 ?( ]1 I+ R
plt.ion()+ N  R6 E- H" y' Z* {/ r6 @) i
plt.figure(figsize=(10,10))
. O3 y- Q1 L( f9 M) U/ z. z: l+ Qplt.figure(1)
- a+ \. p: B4 `0 b$ O/ Vx_locator = plt.MultipleLocator(5)
2 V. C( b0 R9 P/ X+ c# `: X& J5 Dy_locator = plt.MultipleLocator(5)" k$ E5 s& t0 n2 k8 B
while True:
; e" N0 |  X( b+ G3 K8 q% h   loud = cyberpi.get_loudness()! X  u) J4 d  q) m
   bri = cyberpi.get_bri()
3 N; `) i4 H2 i4 c9 z. x. `3 Y   loud_list.append(loud)( J, q8 B; N! d6 a4 v% O
   bri_list.append(bri)4 `# }  \7 n" W
   battery = cyberpi.get_battery()+ {& f$ R" m/ u
   size = [battery, 100-battery]
+ ^' C) z1 J8 F4 x  H   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']. K( Z6 L$ ~+ |+ b* Z6 n' p& v
   ax1 = plt.subplot(221)
' [1 E, A$ }" @5 E; P   plt.title('光線折線圖')
1 |" D: w8 r% J* {   ax1.plot(bri_list)% [- {" X( W: _: }+ [9 w
   ax2 = plt.subplot(222)
0 w' c% q+ L5 C% d   plt.title('聲音柱狀圖')9 M& l  a& m3 s% h! q& `
   ax2.xaxis.set_major_locator(x_locator)! ]2 c7 I" m0 @6 l
   ax2.yaxis.set_major_locator(y_locator)
: m7 B9 H) ~& Y8 f2 V   plt.ylim(0,100)# _2 D) ^: z' [. Q% g. Z
   ax2.bar('sound', loud)
( s& T1 |0 T6 e- v8 H3 ~- }   ax3 = plt.subplot(223)
' g' B" Q$ q. L3 {2 _   ax3.xaxis.set_major_locator(x_locator)
3 w4 t+ z* I+ u   ax3.yaxis.set_major_locator(y_locator)
8 p# v, p, n2 s9 c2 _9 [- B  i- W   plt.xlim(0,100)
1 l4 s- _- m; E, d# B7 N' \   plt.ylim(0,100)
: R  t! t. P) p" g) ^. n   plt.title('聲音、音量散點圖')
$ C% G9 P9 a4 u) ~; ]7 |   ax3.scatter(loud_list,bri_list)
7 N. z, r* ?- V% u+ n- y0 _. G- `' ~4 Q   ax4 = plt.subplot(224)2 G8 j6 y, Z! s& u$ W. d
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
6 O7 E- Y0 G2 }+ U% Z   plt.title('童芯派電量')
( N" X1 L- u' B& l/ w4 c   plt.pause(0.2)
- ]6 m, ?4 V4 `; ?1 ~/ `: E. i* }   plt.clf()
( i2 c! F5 ~6 X   if cyberpi.controller.is_press('a'):
  z0 ^9 t$ _/ B/ L# f       break
& @$ U( a4 Y$ E& {   if len(bri_list) > 500:) b9 p  U5 |, T$ ^2 q5 p, A
       bri_list = []8 n+ K$ J# z+ U6 H# Q7 i" j
        loud_list = []) z7 u; `2 K$ v

( x5 h, K  {0 {3 Y- j3 D

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-4 17:28 , Processed in 0.023005 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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