圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8378|回復: 0

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

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

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

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


! r) p2 _0 `; ~$ ^6 A- S+ T
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。( w% C& J4 _5 B
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)9 C8 z. s, b6 w! o2 `& A
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    6 ]1 f# Z" Y+ h5 o3 M" k: v- |
( j" v- `" m) }( y8 E& F
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)( p$ Z' S# K; c( L4 j8 I0 A# @
. v: b+ |. Z; z3 c
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。  @' v: p# l/ Z: O8 P

8 Z' f! T  p, V, n, m
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。- d% E' p- o4 {
% g7 t/ m. a" \( |
3.童芯派第三方編輯器程式設計準備
. z5 `6 Q- {+ P0 ?
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。5 b, f( r3 ]( b. T! l. m

+ a7 {2 I' H, j3 o# ]3 m, |+ W
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。3 U  M3 A1 u( y: r/ I1 \

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


8 g% e8 q2 x# M! m1 p
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
      {7 Q, M' I( T

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


7 W5 E- C# [! e" l! d$ m
查閱cyberpi API文檔見:童芯派API文檔

' t* _2 w; D& ?" y4 t3 X, n
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    + ]* W5 t$ U. i8 a4 D9 g

$ r5 O/ |' y" S" w4 G
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
" [9 ?+ o8 c+ z
5.一些程式設計案例4 Y7 r( T- j, Z% ], A0 f3 c1 L2 d
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
$ z( }6 N$ |$ f! }# N$ Q: o
功能介紹:+ m; N, J% j, X* e& y
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。+ L$ @6 m1 \" w  }
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。! j" q- k- w9 r( G$ q0 Y' Z3 W
結合藍牙模組可以實現無線滑鼠的功能。
$ w1 h. Y% i3 v. u  Z6 ^- r$ k& V' m* y. e* e: q: \4 Z
from pynput.mouse import Button,Controller; C. Y, q: P! t( ?, Y. X
import cyberpi5 r1 y3 u1 n  K) D$ @7 h4 l% q
import time2 t2 `" x7 F, X- B

/ D, F" W7 v/ \, ?4 dmouse = Controller()4 k; ~! I" I6 T$ O

1 m6 L; n; r( O( E7 D; G* I$ iwhile True:
% Q- A5 l0 L) ^9 {! z   if cyberpi.is_tiltback():
+ s6 o" {# j- b2 ]: N/ a4 ?9 `! |       mouse.move(-3, 0)
7 n8 C2 f  d, Z  P1 a# @, X       print(mouse.position)) N$ w7 x6 Q! N+ \
   if cyberpi.is_tiltforward():5 p. ]0 l* o9 T9 o' h' ^% A
       mouse.move(3, 0)' f, [- y  y0 n2 [; p- J
   if cyberpi.is_tiltleft():
' Y- N" d) }; v" E$ n! p% b       mouse.move(0, -3)
. M" M, |! H- H' u" o7 ^: P   if cyberpi.is_tiltright():9 E$ a, _& X: j. g( w
       mouse.move(0, 3)
' n' `! Y. O5 y; U' G   if cyberpi.controller.is_press("b"):5 _. P# P' d% K  e0 _
       mouse.press(Button.left)! s  {) K7 k$ y/ B1 k
       mouse.release(Button.left)
! p1 u) M' p, `5 Y       mouse.press(Button.left)
% ^7 N! k  L; t0 [5 r       mouse.release(Button.left)
- G, g& l2 H4 _# w0 v) Y3 P   if cyberpi.controller.is_press("a"):
  i" v+ @0 E* \; H6 X0 l- A5 S       mouse.press(Button.right)3 A6 w4 _: L* ~1 y8 W: }' i3 `
       mouse.release(Button.right)
2 M* J1 d, c1 _. O( o3 j0 l    time.sleep(0.01)" Q% e3 J  _) k5 T$ h8 v8 D7 z
/ k6 v6 A( |/ v6 u3 `' z- j: I

! ]3 M! Z- P- `7 [! D
語音打字器

3 k0 f, \( ?' }& L4 m8 \! x, ^功能介紹:- `4 M! O% C8 F9 k$ v2 [! I
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。  f0 X/ X" I) O' Q4 o: s; ~
將語音辨識的結果通過pynput在文檔中打出來。
5 }7 ^+ M- e% o7 B3 r7 X該程式目前只能支援英文。
2 s0 L1 d: b3 q) n7 T7 }
/ c! _/ Q3 B% z0 Bimport cyberpi
0 J/ x, M3 d# S( w6 q9 Ufrom pynput.keyboard import Key,Controller, m6 [( L- M5 @2 K# _
import time
" h' y6 k6 L) J0 |7 R5 m7 q
* B& z7 j& m8 z* Rkeyboard = Controller()
1 D4 @; p( A# F4 A4 wcyberpi.console.clear()) |; \& m1 j: n; v$ V9 W
cyberpi.led.on(0, 0, 0)6 v3 N# V6 v+ C! t6 [
cyberpi.set_recognition_url()4 t7 p1 f! |" i
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得. h  a$ B/ `! g: d9 m
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")  i& s( B: I- s( q4 S8 F' l
while not cyberpi.wifi.is_connect():7 g8 l5 U5 l6 P: g) I! ^
   pass
. l  G4 R1 x* r0 q- n+ rcyberpi.led.on(0,0,255). r; s* d% k( d, D, A% Z7 B* v
cyberpi.console.println("WIFI已連接")% N$ _, t$ W7 K+ U
cyberpi.console.println("--------------")2 k3 _6 p4 a1 t4 p8 W* J+ b8 o$ n
cyberpi.console.println("按下A鍵開始語音辨識")* w" Z2 q2 K& D) v1 Y2 |8 `; N
while True:
0 f1 A: T8 b6 h2 e/ o# H) P  ^8 _   if cyberpi.controller.is_press('a'):
6 p' C! s; M" _       keyboard.press(Key.space). S8 }! }& y# P9 k0 N# z
       cyberpi.console.clear()
  s8 N% t/ H$ D/ D& ?       cyberpi.led.on(100, 0, 0)6 A- Z7 v/ N! N: S0 S; x+ N
       cyberpi.console.println("開始語音辨識")
. K# Z; C  q  N% G$ O* P6 y       cyberpi.audio.play("switch")6 q* @' w% t: G3 P8 _& \
       cyberpi.console.println("--------------")/ h0 G% K- w* V3 Y
       cyberpi.cloud.listen("english", 2)
8 b" o' U  k: T- [1 L, F* K) v       cyberpi.led.on(0, 0, 0)
; s( @! E, ~" |% {; |       say = cyberpi.cloud.listen_result()
6 S$ ^, k6 U: s+ b9 [       cyberpi.console.println(say)
  J1 n0 a0 Q3 m1 n       cyberpi.console.println("--------------")- R5 I; g/ O  [  R: _" P. r0 l) r1 t
       for i in say:
" h" l1 T: {& F2 n, A  W* C0 m7 f2 c            if i == '':' Q5 s& I2 u2 Y3 S! p: y: S  p: {' K
                 keyboard.press(' ')6 y3 H& ]: o; d. \4 h* K
            else:
; `- Z' f9 r: ]+ V4 e4 v8 j2 M- `                keyboard.press(str(i))
/ b: }. t) V  q                time.sleep(0.03)
3 J0 O( l% N5 l3 D2 h; b
4 ]& T) f) ~) l
matplotlib音量柱狀圖

! a) }) C/ L6 i3 n% \  H( ]& S4 g# vimport cyberpi
! F/ {4 Z1 s' F# k7 ~3 m0 A5 ximport time
/ ~9 P9 d) c) n$ O* I. Xfrom matplotlib import pyplot as plt$ H( B! `. D  S
- \/ L4 a9 K0 n* M8 @; q
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
( V) F5 G% _$ t2 T( Q, l6 Oplt.ion(); R7 l. @9 ^* G, l  h7 `
! q$ i# T4 R% q" G2 h! z
while True:
4 y+ I( B' j" T; w: ?+ @0 S   loud = cyberpi.get_loudness()
: G; \: ^0 G' J2 x1 @# u   plt.clf()5 o( N6 I0 D" Z: U7 i
   plt.xlabel("數據名稱")' w6 M- f2 C3 i
   plt.ylabel("音量讀值")- J- q' J$ y3 j' R" ~5 r* E
   y_locator = plt.MultipleLocator(5)
; o8 }% K" d4 {' }3 D. ]   ax=plt.gca()
* e* t6 ~: C3 a+ S8 K5 @   ax.yaxis.set_major_locator(y_locator)
  n+ B( z: B( m/ ^9 E   plt.ylim(0,100)
' C5 D) ?4 P6 O$ Q7 @   plt.bar('音量', loud, align='center',label=f'溫度{loud}')4 c/ T7 D1 D% z3 J" Q4 I6 |$ j# ?
   plt.title('童芯派聲音感測器讀值')* Q% m- a! S& b
   plt.legend()
' z0 Q/ s8 ^. K6 [   plt.show()
: c% g$ @: X! H; \& J+ G    plt.pause(0.01)+ T% D3 z! e" D
$ Q0 p4 t0 b9 u8 ]5 E7 @/ x8 B

* ?  ]7 x: f. G/ J/ E% H+ wmatplotlib 多圖表顯示
2 n5 ~1 R" x- x* e; j2 v
, f& D# C, T$ b# @$ A2 c
from matplotlib import pyplot as plt. C& @6 X8 ]$ Z: e; K. \9 T
import time% z3 Y9 _7 n4 k0 Z
import cyberpi
. u/ v+ Z/ o/ Z4 e+ Q% u
% m' x: e9 u& y7 f1 Q3 Dloud_list = []
8 d* X; O. K2 Z4 x1 sbri_list = []5 |  u# Y  E' V/ i( i
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體; A0 C9 k# {1 A" K# A, _
plt.ion()* M8 F7 P% H- g0 W: ?) [8 t: P
plt.figure(figsize=(10,10))
5 ]4 e* K' g6 E# L  |. Splt.figure(1)$ H: F- q$ j; t' P
x_locator = plt.MultipleLocator(5)
- v0 Q4 C7 [$ C( Y0 I% z9 }3 Py_locator = plt.MultipleLocator(5)6 D. K* v, B9 F- @* w6 {8 g2 a; ~( A
while True:
0 Q4 G* S0 u; X2 Q   loud = cyberpi.get_loudness()
/ K& p8 N7 B; B8 ]7 D   bri = cyberpi.get_bri()) w) y2 Y# i# d  q  s9 S4 y( w
   loud_list.append(loud)1 D' D+ o. _+ k2 f8 p
   bri_list.append(bri)6 \* {% ?( V! V& d
   battery = cyberpi.get_battery()4 e& g- L+ N5 g' C$ c. x
   size = [battery, 100-battery]
, N% \+ a" Q% t+ F( W) D) \3 F3 |, y) d   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']: s3 |4 s2 P& _  N1 [' b
   ax1 = plt.subplot(221); \" P* T' a) E5 T$ ?* U6 J/ s
   plt.title('光線折線圖')
+ @  y& P9 p8 C   ax1.plot(bri_list)
+ t- Y7 D$ X- \4 _* f   ax2 = plt.subplot(222)
4 v9 A! H& E4 \   plt.title('聲音柱狀圖')
  a: e, Y$ h# n; Q" r; c: r   ax2.xaxis.set_major_locator(x_locator)  Q+ r  W3 z0 {$ o- Y% S( C
   ax2.yaxis.set_major_locator(y_locator)
6 U: D9 N2 ~$ U3 Z& h2 G   plt.ylim(0,100)
" k: ?. s3 K; a1 B/ k( n   ax2.bar('sound', loud)
- m5 H/ u( u4 x5 P7 _- y: k- D: ^   ax3 = plt.subplot(223)
) i# _0 @8 J- k  k0 _/ w4 h   ax3.xaxis.set_major_locator(x_locator)& {8 k! j' A3 l0 ^8 ~
   ax3.yaxis.set_major_locator(y_locator)
' k4 x) R; j7 h   plt.xlim(0,100)
' |+ m8 x: U& [$ t6 l   plt.ylim(0,100)% v: m$ z' O+ W: k6 _* j( q" p
   plt.title('聲音、音量散點圖')
9 b7 w# z: d  \/ O; \   ax3.scatter(loud_list,bri_list)! ^2 n  c" h" `- X' ^0 a
   ax4 = plt.subplot(224). Y2 l+ x6 u5 w, d0 O
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})# H( d/ I4 N7 |0 }" X4 F6 \7 `
   plt.title('童芯派電量')
$ @! n' V) j/ A/ x1 V$ n   plt.pause(0.2)
6 g# K# I2 z6 I   plt.clf()
# w- s( A, B# Y  l   if cyberpi.controller.is_press('a'):8 ]3 X' H) V- K" f7 v
       break
  x. B. ^7 g9 b' l$ R6 i   if len(bri_list) > 500:
& q2 E9 C/ e; D/ z       bri_list = []
9 ]7 W8 g! R- u1 ?( U        loud_list = []
9 D$ e. l2 N) k$ a) ]+ E- @# U3 g# B4 r6 U7 s9 @4 p

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-21 23:27 , Processed in 0.026542 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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