圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8081|回復: 0

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

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

3 P; s7 y( L9 h, ~3 p+ T. _+ v1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。: I  ^2 y' M6 _5 O

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

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

9 p* x( U  o7 Y$ v7 q
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。8 Q& f! f% V4 ]8 N7 O" O
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)% y" n0 p, n- D: B
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。# n. F: z% P2 |/ P# r7 h0 J

% S7 l. s+ u+ x' @1 R1 m
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    6 p' n0 Q, ^5 V& e2 }- Q# Y) m) q

; G8 Y; o  t& {4 M: Y" e
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    - t* e* Y" e8 X$ C5 z; Y2 _9 E% j
5 u. P( ]- }1 a  Z! C- h+ _% Z# T2 R
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。, C% }4 X- A5 G; O

+ P' J) O) U2 y7 V% C: t3.童芯派第三方編輯器程式設計準備( y2 x! E2 k* W* C
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    5 a( ?4 D$ w- q9 p" T

( Y7 v8 g& x' k2 K7 f9 s* Y$ v
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    0 e% l/ D5 s$ ^( P& U. w

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

. N# a$ T5 g: e0 T/ u/ w* N5 B6 u0 |
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    * T- P9 M, u4 r# H* {4 e: q3 {& k

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

* X4 E9 {" A+ b6 K, o# l" p
查閱cyberpi API文檔見:童芯派API文檔

6 n+ |  A/ y3 v+ ^3 w0 X" X' ?
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。5 S8 d1 E+ {! C+ l; T  a
) D  R: x6 G# {; o' |+ m
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
% F% L2 X, y) r# r# h
5.一些程式設計案例( B- t; M. F0 T6 ^1 u
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
" k% W+ r& ~8 R" ?; G
功能介紹:
& ?* {) g' V& {3 R+ f! ?利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
( w2 e4 c6 U  h( I' t& u/ G% F通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
3 B* t8 }1 K2 U2 I; e" k結合藍牙模組可以實現無線滑鼠的功能。
. ^5 B4 G7 v( b, b( T2 ~8 s4 U- n  f( g0 M
from pynput.mouse import Button,Controller4 U1 x) y6 z# i# P/ A; X" x
import cyberpi+ w4 Z6 F7 H' ~$ y
import time) S; f0 t% _4 F* D- b: ]
( T( |2 U  D6 u  I$ S! k( p
mouse = Controller()* V2 f$ Z, H3 Y( j( ?
6 W1 O+ t' l% H# g8 R8 a9 h% f. r
while True:2 p( d' ^) h" ^# V( H7 D
   if cyberpi.is_tiltback():- Z) a% Q, i; F8 ]8 A+ n
       mouse.move(-3, 0)
4 h0 L, N! p: F+ J) s       print(mouse.position). Q, T" O! G# r* j) c0 X: ]
   if cyberpi.is_tiltforward():# i( y1 O3 }. g( N; f( Y( l* E
       mouse.move(3, 0)
0 f. F+ o3 N2 c   if cyberpi.is_tiltleft():
* Q6 L1 ?, d% ?# e( A+ y( W* D, n       mouse.move(0, -3)
. @. D1 Q5 W8 T   if cyberpi.is_tiltright():
; E/ O6 E9 u) x" R       mouse.move(0, 3)+ O) b/ M/ i5 {' {- e  e( f; Q
   if cyberpi.controller.is_press("b"):" M. R. l4 v) K8 b
       mouse.press(Button.left): T6 K1 v+ _5 c+ n9 S- h" @
       mouse.release(Button.left)
8 x7 C1 }" L, l7 V! p" ]       mouse.press(Button.left)( d. V9 `# C; C. K0 ~3 X9 Q& d
       mouse.release(Button.left)
9 a3 R3 p4 I0 u3 a# T4 h, i   if cyberpi.controller.is_press("a"):
. `( i- }/ l5 {4 d  `+ S       mouse.press(Button.right)
4 d4 j+ x/ I5 ?/ z! x, W       mouse.release(Button.right)
( Z2 E* j8 @" c5 ?    time.sleep(0.01)
' t/ N& g7 l; H6 @" D8 d* F% h. p/ W3 E
6 X  L& l' ~* c* t+ U# g3 o! X; s5 ]" N1 R; g
語音打字器
, j* a0 |: e" \% L. f/ H0 x
功能介紹:
! n; {+ g0 [* P5 a' o. y利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
, @; E! F: p8 \# @$ u7 e將語音辨識的結果通過pynput在文檔中打出來。8 A0 q8 {7 t- D3 C5 q0 [. f- i- a" ^
該程式目前只能支援英文。
8 l! q( |! g: ]4 Z  z3 _+ D3 ~6 @$ Q0 y* u' h: X. \1 ]' ?
import cyberpi
; M  B  l7 J! @6 H2 ]) U4 zfrom pynput.keyboard import Key,Controller: c5 o+ K5 c: m; i5 m$ |% `% ]
import time
! n( R5 E' `5 g8 u * f$ W: H+ i, t% D4 s% J
keyboard = Controller()  y5 \  G& S0 h1 Q6 P) T" d
cyberpi.console.clear()
  Z3 H8 e' D1 Z7 s- X* M7 C" |; Scyberpi.led.on(0, 0, 0)0 L) x% d* N. c$ J2 p+ |! e0 P6 A) J* m
cyberpi.set_recognition_url()% |* v7 N) `4 F# h
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得' s, ^% T" {# X* p* K; l
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
; {0 i: Q8 W- ?: I8 ?" kwhile not cyberpi.wifi.is_connect():- p: ?: E( {, A/ q! Y2 S/ k
   pass
* |/ Q: G2 N) Y# {9 P* u  x$ Ycyberpi.led.on(0,0,255)4 [8 I& x8 g7 m
cyberpi.console.println("WIFI已連接")/ G# v% L" [- ^4 @
cyberpi.console.println("--------------")
7 {' e; S( S. M, n3 L$ h% icyberpi.console.println("按下A鍵開始語音辨識"); j6 U0 Z9 W5 }8 _/ P; v  O8 q; y
while True:
. ^; K# [, `, d3 w7 c  d   if cyberpi.controller.is_press('a'):! x* [- l% _" p" _9 m" Y
       keyboard.press(Key.space)
3 u# \! n6 X4 B8 R       cyberpi.console.clear()
/ @2 F8 P$ W( @' _# C1 C       cyberpi.led.on(100, 0, 0)6 N% }( V) T  Z! k  t2 w
       cyberpi.console.println("開始語音辨識")  K3 Q7 L8 o6 K# j5 ~
       cyberpi.audio.play("switch")
# V, Y$ M  I! U9 m; {) S       cyberpi.console.println("--------------")
9 T  }" Q/ v: `       cyberpi.cloud.listen("english", 2)
/ r) N8 v1 v% w1 W6 h       cyberpi.led.on(0, 0, 0)
7 F% z) c5 D" w, }+ r       say = cyberpi.cloud.listen_result()
! q: N* z3 F. E! Q. f+ f  C       cyberpi.console.println(say)- t" q& o5 k) ^+ n( q2 i
       cyberpi.console.println("--------------")# q5 o2 [, O$ J
       for i in say:
( h$ ?! F+ q% G+ `% K& l            if i == '':
3 n, w1 ~; r' r& V                 keyboard.press(' ')2 s0 J8 T: D; n; w
            else:
  a5 y4 C# ~3 ~$ ?5 R; V( Q' r# f4 s) A                keyboard.press(str(i))9 Q0 A4 |2 x0 O5 m' @
                time.sleep(0.03)6 F4 |3 A* q* ^  L2 K  V+ f
9 w4 Q4 [# U- q2 F6 F% h
matplotlib音量柱狀圖

% a1 B) n/ L! Z+ |import cyberpi
  |4 D/ i- D/ u7 M6 X8 g8 F  G* bimport time
1 U+ ~) p0 P1 ?1 ofrom matplotlib import pyplot as plt
# D2 `' ^. A/ ?+ W
9 v+ S) q0 k* r* s0 {  e' s! ]plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
- r! i! O1 i: z& G" T* |% k& V0 G! Mplt.ion()) e2 T* M% }' U  z6 T$ a) g5 K6 ?
8 ]' a; g7 _/ C( V0 \. n
while True:5 u. {0 t- x5 j: P
   loud = cyberpi.get_loudness()4 n! D5 w! u3 H' d5 f8 }8 j6 F
   plt.clf()
+ c1 k, u& Z+ W0 X7 m  M5 D   plt.xlabel("數據名稱")
7 d: M* f" m( o& z( Y( f) e7 n   plt.ylabel("音量讀值")
1 C/ Z- g4 T0 n" Q5 X; S% X- M$ {   y_locator = plt.MultipleLocator(5): b/ L( h5 ^5 K# @
   ax=plt.gca()
# y0 j9 D- O5 _7 l. K* c- g8 Q+ L   ax.yaxis.set_major_locator(y_locator)
) U+ c7 R- b( e2 Q; G   plt.ylim(0,100)
' B- i# P  b) h) Q+ ^   plt.bar('音量', loud, align='center',label=f'溫度{loud}')/ c' n; P$ O: v, R6 }- @9 s
   plt.title('童芯派聲音感測器讀值')/ A8 \2 _5 d( o, ~/ D
   plt.legend()/ @2 d9 }6 a1 H% h
   plt.show()
% Z. k- w& ^3 Z# z0 y$ `6 B    plt.pause(0.01)
& O1 R% g6 [5 i3 Q6 f6 i) a# h+ C8 r6 R

) m, j  V0 g# y) K; ^/ `) l8 Omatplotlib 多圖表顯示" i% c' {5 H, H! V1 |% _
: M: k/ q, J% ^0 M
from matplotlib import pyplot as plt
9 b) t# x4 u0 e4 ~2 e- b$ mimport time  ?- h' l( e  [8 t
import cyberpi7 N+ `* d0 L; e* k8 A( n! l. R
5 w- e1 p/ B5 n. ]- A1 [
loud_list = [], @: T3 [- p0 d
bri_list = []
; r& L9 o# N2 c: T3 cplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
( S+ \+ |9 i3 [* @7 \& nplt.ion()
- v! p0 c0 {3 R# zplt.figure(figsize=(10,10))4 ^9 M6 w2 T2 s9 v
plt.figure(1), {0 j0 i% c# I( n) K) a
x_locator = plt.MultipleLocator(5)
& d+ {% c8 u) Qy_locator = plt.MultipleLocator(5)
; Q6 k6 {0 p; B% Cwhile True:* @+ }2 F9 s; T2 Y7 `
   loud = cyberpi.get_loudness()8 D9 m: @3 |3 f. t
   bri = cyberpi.get_bri()
: Z2 g0 }' S$ d6 P: J   loud_list.append(loud)  S6 `5 R0 d* F! l9 w8 ~$ k2 v
   bri_list.append(bri)
7 o/ T' e/ B# O) w9 f   battery = cyberpi.get_battery()2 c2 N6 H) g% {3 g1 a. ~
   size = [battery, 100-battery]
% k! x1 n" I; y) E6 v. p3 @   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
: E7 o: _' h7 d( G   ax1 = plt.subplot(221)
* \) X4 j, e* }. W( x   plt.title('光線折線圖')
! T5 a5 ]. I: X1 {   ax1.plot(bri_list)5 ]# g. |7 m9 i
   ax2 = plt.subplot(222)( B0 F* @1 U. ^5 Z( j" ^
   plt.title('聲音柱狀圖')
6 X+ O: d- b) F4 s) \" `   ax2.xaxis.set_major_locator(x_locator)6 P% _& o5 s$ f! a! C/ Q- z
   ax2.yaxis.set_major_locator(y_locator)8 N% G$ x4 \2 {4 O6 d% Q, B+ c
   plt.ylim(0,100)
3 `4 S: @  j( l9 o7 d( f   ax2.bar('sound', loud)" t1 a* k% B% ~
   ax3 = plt.subplot(223)
: ]* M* ~* y0 u- s/ o# v   ax3.xaxis.set_major_locator(x_locator)* W4 [% `) x$ `9 P! ]
   ax3.yaxis.set_major_locator(y_locator)6 _! H& S, q$ n8 r% y8 T
   plt.xlim(0,100)
+ ?- f- ~; M( t. Y   plt.ylim(0,100)
  c* s* x8 v9 ^! i$ r' y   plt.title('聲音、音量散點圖')" r2 K- K, R0 x  D7 o) _% F
   ax3.scatter(loud_list,bri_list)
  ?* ~8 J: B* r9 m0 A) Y   ax4 = plt.subplot(224)$ T+ ]8 E2 G9 l( v) G7 r
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})* u: {* E  d/ g' _' U! p
   plt.title('童芯派電量')
( u& Q% g7 j4 X$ H' {) ?5 ?   plt.pause(0.2)5 r2 M" e9 {* k; D& s
   plt.clf()
) m, r0 j! c' v* C% [" S5 N2 z1 U   if cyberpi.controller.is_press('a'):  \, c% J  M1 q3 W) ?
       break, A: O, k9 Y) |$ Q% ~
   if len(bri_list) > 500:
' l. L' q* u6 e! n7 I       bri_list = []- H9 S" Z' o5 I" y
        loud_list = []5 H5 {7 {) p/ @* Y3 R; w7 r

2 {/ X) Y- W2 W7 B) C; G2 j; h8 p

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-9-18 08:45 , Processed in 0.027057 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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