圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8504|回復: 0

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

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

0 H, O! O" {9 C# c# N1 }9 d9 F3 W1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。7 f3 ~4 z7 B; _8 B8 n1 _) k

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

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


( y5 J' c( A4 W" ]$ p9 b- R$ W4 \7 o) i
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    , Q& x8 P2 u  G
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    # @4 R5 m6 m2 d0 l  y# k$ O% k
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。  T' S$ b; P% n* B1 E" H# F
$ U9 {8 ~  b6 M, }8 j. ?1 u
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟), s0 w& S$ V6 [+ _  w- u

$ b; J( s; d5 t* i* f  @
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。* _2 o) B, q  W3 o: _, d$ ?% b/ `) N
) V3 W: m; W+ R9 M9 Z2 ]8 o
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    6 y$ [3 h1 F8 N: l( x5 V

' v* v* [2 w  b: t  A8 j2 r( }3.童芯派第三方編輯器程式設計準備- `7 K, r3 ]: e$ x
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。9 V+ S/ l" N  z. m. u- b" k

: N" a. k" U( D) R( v# H, Z) \. K4 W
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
      L2 w) g0 H: m8 K0 h. m! F/ o

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

3 j, D2 I# P# T
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。. n9 |+ y/ m0 F  d& `& L

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

( L4 b& l/ i* f* h
查閱cyberpi API文檔見:童芯派API文檔
( A# S  |3 e! Z9 ?4 H% d
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。0 ?* X. |  N) w$ F1 U8 b) m

8 s. h. N0 R7 c3 `- z6 |$ Y
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
9 S# N. Y! _  G) u
5.一些程式設計案例
4 U- }7 d$ j5 T童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
  }% k1 e! d5 H% Y' L' l
功能介紹:$ W3 u1 {2 L/ q( Y+ A' N
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。1 H! k; J6 S8 J6 Y
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
9 ?- y' E* P8 g& X結合藍牙模組可以實現無線滑鼠的功能。2 H% {" ^/ ]/ K) r; `+ [

5 Q8 C& Z; W3 A" tfrom pynput.mouse import Button,Controller
# n" g7 W) o  Q& Mimport cyberpi
+ O  H5 f" W3 ]+ K. fimport time
! M% F6 A0 }; A1 A# ~# c
9 p$ {, W, [+ L2 B6 p( hmouse = Controller()
  P% z5 @# o. Y- N. i* M 1 Z/ h+ }" A5 N( E
while True:  {, w1 L  F- \3 I
   if cyberpi.is_tiltback():, g# X( a& \, b# t, c+ G) @
       mouse.move(-3, 0)
( [* s# D$ ~! k& s% {/ a9 |' U       print(mouse.position)
+ |/ r8 |) J4 N" h   if cyberpi.is_tiltforward():7 _! t. a4 T3 @6 Y. D' C# X, |' B2 x
       mouse.move(3, 0)
6 G4 p" a3 u% B; @/ W7 {4 `   if cyberpi.is_tiltleft():* q' s- X5 d! V, S* h0 o# Y8 M- r
       mouse.move(0, -3)0 c* f- U2 t3 ~5 p1 j
   if cyberpi.is_tiltright():3 v$ R# D" y$ @
       mouse.move(0, 3)
8 h5 @( D9 ?7 G: s( m0 R   if cyberpi.controller.is_press("b"):
( W8 t7 g4 f4 L: p6 e7 i- ^- O. e       mouse.press(Button.left)
! j+ `1 N4 r/ V4 f  E       mouse.release(Button.left)9 I0 x- z/ Q% W, p
       mouse.press(Button.left)
- f. R1 ^! n( k  B' w- s! R       mouse.release(Button.left)/ q+ E' v/ L2 ^# M) x1 y* k, A
   if cyberpi.controller.is_press("a"):
' O# v. L4 U) e% [. D       mouse.press(Button.right)
' b7 L. i2 `2 O: p9 ]5 ^$ s" \       mouse.release(Button.right)# B3 {1 ^$ {6 ]4 I
    time.sleep(0.01)* D2 ^; x; v. B3 K* I! I/ |
" l9 {* ^7 m# R8 ~  C' h

3 `: G2 `7 l& [; k- G# t
語音打字器

, }/ a& u7 A1 a. m  V功能介紹:
6 g; m. H1 {$ j4 Q; O利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。, M, N5 }2 l# P/ Z3 j& N
將語音辨識的結果通過pynput在文檔中打出來。
3 z* k8 G3 L7 ?( Z. n6 Y/ v* T  H! @該程式目前只能支援英文。. v, }8 D, W" m* W/ ~: ]
/ m# |5 n. ?1 c8 u; g, l
import cyberpi7 f) S# S" V9 e2 i0 L/ }% G7 P
from pynput.keyboard import Key,Controller
! m+ T+ ]* E) c; R; [% g1 [1 M) n5 Timport time
+ q1 X2 C) T7 B6 O% P5 u  z# A 1 c# }" u! F4 L
keyboard = Controller()0 b8 N8 C5 M  i1 }: c- u
cyberpi.console.clear()$ Y6 N; M# Q7 h) B; \1 ^
cyberpi.led.on(0, 0, 0)/ l% _' Y3 u- e2 n, V
cyberpi.set_recognition_url()
1 O; y  ^( n) `' e5 I: P( Ycyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得! b4 O' i6 m2 M2 a
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")4 P2 ]. Q' R' g9 ]3 }; S
while not cyberpi.wifi.is_connect():5 O5 r3 U2 i2 Q$ I7 A3 z/ Y
   pass4 [% j6 o2 [( H3 I1 s! O
cyberpi.led.on(0,0,255)
% [- u1 Z6 {, V6 _cyberpi.console.println("WIFI已連接")9 @, Q! ^' P/ {; k
cyberpi.console.println("--------------")
% \  l; l2 {" L( I. \" q, rcyberpi.console.println("按下A鍵開始語音辨識")& E  c6 n# h* ?: b/ a$ O
while True:6 ?5 k; y8 {( l9 p& ^. W/ f( n$ E
   if cyberpi.controller.is_press('a'):
" c1 O  Q4 g. [/ l3 ]5 E       keyboard.press(Key.space)% E$ j6 j2 Z' d4 O: A
       cyberpi.console.clear()! }# F7 j0 c' \8 }; J" r. b6 L5 Y8 C
       cyberpi.led.on(100, 0, 0)
5 |; A: a0 K( {' C4 _       cyberpi.console.println("開始語音辨識")
$ x# y  k) D! l$ r, C" t, f1 n       cyberpi.audio.play("switch")3 e. o, F5 I  D- S
       cyberpi.console.println("--------------")4 V- s) V- ]/ _4 ^* X+ s  t
       cyberpi.cloud.listen("english", 2)! O% |2 a! y0 a$ g3 Q1 G
       cyberpi.led.on(0, 0, 0)4 U9 Z( N! @9 e& U) K
       say = cyberpi.cloud.listen_result()
+ S3 O0 v' O7 X' O       cyberpi.console.println(say)
* h' }5 I+ U- d" b3 t7 d' D6 C( L       cyberpi.console.println("--------------"): }2 V: r4 o* U3 C( R- n
       for i in say:
/ f; ?7 A9 ~# p2 H6 t& `            if i == '':
$ W8 c# M# x) O2 t7 d7 t                 keyboard.press(' ')+ [" M" \% ~9 F; E: t4 ?
            else:0 r1 P0 T: i) H4 l$ m& }9 ?# s
                keyboard.press(str(i))
4 R6 ?% w8 P0 M! `2 |) _4 @                time.sleep(0.03)
6 P% f# _. a- _+ k$ J% }% v. @& |
1 ]" M3 e& g1 v) M1 n
matplotlib音量柱狀圖
0 v8 a0 ?) u8 d7 K& M2 v
import cyberpi, }7 C, f( {' ]2 y, O
import time0 k  @; D' p- ?( q8 Q0 \, @
from matplotlib import pyplot as plt
) I, o5 c' ]. F
  L7 y$ u$ l- b/ Z7 V* Q; I9 h0 cplt.rcParams['font.sans-serif'] =['Microsoft YaHei']
& Z" ?2 p' Q+ c! h* Dplt.ion()' M1 @# ?3 o+ _2 E, }) U. J4 {" a; w

5 p( I+ q* @- Y2 C& Fwhile True:
2 @) R0 P3 _& M$ Y   loud = cyberpi.get_loudness()- I5 {" C6 l; ~, k' ^
   plt.clf()
+ O- {! A+ K8 |( V1 @: i# I& ?0 V   plt.xlabel("數據名稱")- n8 k- S& n3 l, N3 A& C
   plt.ylabel("音量讀值")
0 N  Q% G8 b* |/ z7 `. l; S! s   y_locator = plt.MultipleLocator(5)
) @- B2 a* W. l6 P- T   ax=plt.gca()2 T2 t' ?9 m# V% Q8 O* c
   ax.yaxis.set_major_locator(y_locator)
; J5 c$ R) r! z  q   plt.ylim(0,100), m" u: }6 \) B4 p0 z# p
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
  R7 r& {+ g1 v   plt.title('童芯派聲音感測器讀值')
9 f; o+ }  a# ^5 O3 W* I1 d   plt.legend()6 @) i! B( \( i/ m1 Q6 `3 y
   plt.show(). U7 T# ^' z$ X9 a
    plt.pause(0.01)
3 o+ S" q: f2 ]( `* d6 v* k8 [5 l% b  `$ Y
0 ^/ }; K. j" e0 t  K
matplotlib 多圖表顯示
. @$ S7 m! T& R0 q4 P. l' f. s& H% R7 Y

" p( J3 m" e4 E6 V+ U; tfrom matplotlib import pyplot as plt3 s3 R4 X5 w) S' q) v2 t3 p
import time
+ t5 d8 W) K0 X! T1 ]import cyberpi
4 j' g5 ]- p$ k' m. F7 d7 U 7 o; g9 `6 D3 J  W  }4 Y
loud_list = []
9 \7 N# O3 c0 x/ vbri_list = []7 r+ U* p( k2 R- `# P
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體2 u9 Q- x5 i5 t2 f' n
plt.ion()
" u7 q: m3 O- d4 q  p, F* Aplt.figure(figsize=(10,10))
7 ~/ h; q+ j. s8 D; {6 fplt.figure(1)8 E6 S7 }( r, A' v) Q( z
x_locator = plt.MultipleLocator(5)6 f1 K  J( d& @: t7 B1 X. L
y_locator = plt.MultipleLocator(5)
4 Q- q- _2 N1 ^& pwhile True:
3 F  S' @/ G3 v# P   loud = cyberpi.get_loudness()
" n& ?$ [$ M+ G& n) o   bri = cyberpi.get_bri()3 o& _  f, c9 q; w% q; S. o8 s
   loud_list.append(loud)/ P. y* ^, T! W- W% z3 b
   bri_list.append(bri)
. o) x  H8 X: M0 t1 K  N   battery = cyberpi.get_battery()
* E. _, G6 H5 r( F! ?   size = [battery, 100-battery]  E$ o4 j# m. l% K# o9 T) E
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']& Y; t8 m: K  g8 M3 i! B" q
   ax1 = plt.subplot(221)
8 X% n5 v8 b( k  W& C   plt.title('光線折線圖')
+ k8 P  y7 j/ ^4 I" A1 P- _$ b   ax1.plot(bri_list)
; U$ T! Y" E" B) y, X   ax2 = plt.subplot(222)1 ?9 |3 }; G) N# O+ y: `
   plt.title('聲音柱狀圖')
; @* m- ?. C- ]3 }% T! w7 T9 y- D3 M   ax2.xaxis.set_major_locator(x_locator)
5 T# `3 ]4 ^8 l1 k8 C   ax2.yaxis.set_major_locator(y_locator)
- g! T+ n! \7 J/ _0 b   plt.ylim(0,100)+ B/ D/ w) z  K5 x9 F
   ax2.bar('sound', loud)' \, Q: q$ M$ N( ~% B3 Q
   ax3 = plt.subplot(223)( d, k) i# w, S7 ~, H
   ax3.xaxis.set_major_locator(x_locator)
7 Y+ F) x0 {5 f+ [# J   ax3.yaxis.set_major_locator(y_locator)
) J: h8 f2 ^" Q( `  A- b# ]/ T   plt.xlim(0,100)
0 K  B/ e- r$ q! P. X- T   plt.ylim(0,100)+ o# t7 _: z* m5 v9 b& Y2 s1 A; D
   plt.title('聲音、音量散點圖')" y1 v3 k5 W5 _
   ax3.scatter(loud_list,bri_list), N+ @6 F! g( O% ]% C. w% c2 ?! J
   ax4 = plt.subplot(224)1 Q5 z/ y2 M8 Q& p# D! J% w
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})1 O8 u- ^7 A2 F3 D0 [+ x1 v) j- M3 Z
   plt.title('童芯派電量')
4 m. G% P) B' ~5 {   plt.pause(0.2)
; P4 k" |7 ?, R1 M0 H3 s% P   plt.clf()
/ T) }$ R+ u2 e: b4 o, _5 N: w" [   if cyberpi.controller.is_press('a'):) }  |+ t- |5 x* W# @  A; `
       break5 z6 C/ ^7 R/ H+ K  L% u
   if len(bri_list) > 500:! E! l6 i( v# i8 D. b- c
       bri_list = []* L9 p1 K7 F2 U7 ]; e+ n7 B
        loud_list = []
1 y2 U1 q2 N- ]  g% \5 a1 _" P: F4 p  c  q5 z! K7 D  P9 r

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-2 20:42 , Processed in 0.025218 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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