圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8405|回復: 0

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

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

, e5 M5 N; `/ v! {  M9 f( r1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。
    6 R$ O; N/ g0 N" @

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

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


6 h. ]8 e2 d/ P, |- \
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。, I, p4 K; a4 }* ^# o$ Y) I
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)( P' x; I9 {4 _- b
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。+ b$ }! z6 _0 k: R

$ r8 T: J; f* I, ?7 ~- A
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    ; n5 G( l6 G. t6 u1 {# S- @

, w7 |2 Y7 E! E/ k4 `
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。7 W. Z8 G, \& i* Q* K$ R+ B3 c

9 f7 q/ C) U& C, t4 g) S2 {. t& P0 }
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。4 q; R; O% q$ m$ D2 s

1 ?7 b5 G  h- D/ D- n3.童芯派第三方編輯器程式設計準備  [3 |# Q( ?2 \- t) N5 t& B
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。- u  l' c% U1 x- X
( C4 Z7 }6 Y) H, U
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    6 O5 q( Z! I6 J

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


+ p, \8 X: ?, A. o' |
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。  O% |; R8 o3 y$ B

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


+ a6 P+ }+ S6 F) c' J" O: P
查閱cyberpi API文檔見:童芯派API文檔

  `. t1 B* x. C1 r9 R
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    ; y  r% B3 a- c: k

, X3 C# w1 i! Z
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
3 p% x% _& D0 C  [" c
5.一些程式設計案例4 B; {8 C) y& F( Y- J" w# t/ v
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
9 u: s# k/ r3 }
功能介紹:7 O0 Q2 A9 J' |/ r; b
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
/ ~. z1 l" P1 T通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。3 J8 f- z5 Y% g' ]! c
結合藍牙模組可以實現無線滑鼠的功能。2 o: j3 q$ ?3 |
% j  i, t+ I$ \, S
from pynput.mouse import Button,Controller
. S9 \( {4 b/ fimport cyberpi
, c8 P. R! G9 rimport time; Y& m4 L, G" y+ w  U3 c& M

* u. }6 m" Z! Q/ l! q7 T, rmouse = Controller()
6 O" c6 X# G9 |3 [& | 7 V& g1 k1 u+ n1 r" ^, `8 [$ a6 k
while True:
. K' p3 W/ c4 w- s7 l6 g# {4 s   if cyberpi.is_tiltback():
: C5 a9 h/ e$ v2 l/ b8 ]       mouse.move(-3, 0)
3 \( |: L9 U$ E. a$ _; S  b       print(mouse.position)6 @% A. i% L) }6 t( C/ x9 R
   if cyberpi.is_tiltforward():7 S8 i) y3 B. P0 y+ G5 P
       mouse.move(3, 0)
- f' a& k2 ]$ Z0 }   if cyberpi.is_tiltleft():" C+ e  T/ x" R  P6 _( N6 x2 ~
       mouse.move(0, -3)
+ t% b$ R/ f# E( x2 s) D$ k8 K3 S4 x. P   if cyberpi.is_tiltright():; A+ X+ s2 L. B# z% N9 j
       mouse.move(0, 3)
9 t. z, @7 x! C3 L3 I   if cyberpi.controller.is_press("b"):
# H! |; _1 j: z       mouse.press(Button.left)
0 |& C# N6 v# n       mouse.release(Button.left)2 o6 P$ p; s. k* G3 X9 p
       mouse.press(Button.left)( g) Q" D& C: }. }$ Z
       mouse.release(Button.left)
, e$ ?; G& ~, h1 d* P2 I  d  I   if cyberpi.controller.is_press("a"):
# s- ^0 }4 |" n; j/ Y       mouse.press(Button.right)
% s& }7 U% a, k       mouse.release(Button.right)$ q) H( N" s8 T
    time.sleep(0.01)7 ~. K; b& v; J2 P4 G
: U& f8 d( ~( k4 X; \" T
7 }# L4 h) d/ l4 Z
語音打字器
( E- e! {  S( F0 s7 B- v! e
功能介紹:
) T9 v0 A- b! P1 E利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
+ l* y) u6 ~6 F; G9 r6 n9 Q7 [將語音辨識的結果通過pynput在文檔中打出來。
6 p% z. k8 d- _1 X3 r* F& }該程式目前只能支援英文。/ O4 P3 i1 b. l* r6 ]5 a# \

  v5 ]$ i2 m2 ^5 F9 |import cyberpi
& ^8 k6 E) T& S- d6 t# r" x4 n" hfrom pynput.keyboard import Key,Controller. ~, a2 E8 S3 k) {
import time6 `% C/ m4 ?5 A) w6 y& ]
% T6 M( X6 N, J+ L7 {& p9 A3 \
keyboard = Controller()+ H0 n& W, _; p
cyberpi.console.clear()  i1 F& Y( X2 c, l, p
cyberpi.led.on(0, 0, 0)
! m" ]; r4 S. T, M7 |4 m5 @9 h2 p; ccyberpi.set_recognition_url()" r. B1 Z# V7 Y4 \- t/ u6 a& T
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
- |& ^3 {# d1 _, m* |. H) @1 acyberpi.wifi.connect("WIFI名稱", "WIFI密碼")- |1 l0 c" N2 e2 M$ x# J# k
while not cyberpi.wifi.is_connect():
. a$ [$ S! A; ~( W3 ~9 B( K/ ]0 ?* r   pass6 x1 o* F5 r$ A4 w, K3 V+ b% p
cyberpi.led.on(0,0,255)/ {# R# V' I4 K0 u
cyberpi.console.println("WIFI已連接")& ^% F; H3 h+ \5 R0 Z# h
cyberpi.console.println("--------------")
7 y9 J1 p, J0 t8 ]2 v: F/ A& c* Zcyberpi.console.println("按下A鍵開始語音辨識")
! m% F6 `/ C0 W, swhile True:
0 E2 z/ l( D8 Y   if cyberpi.controller.is_press('a'):& e+ }9 I0 x# E2 E8 i( d( e
       keyboard.press(Key.space)$ I2 ?% H: x1 A7 I" I2 B' t
       cyberpi.console.clear()$ ]  n- |1 }  q% ~5 q9 l
       cyberpi.led.on(100, 0, 0). U; f; w5 [  \/ F; J
       cyberpi.console.println("開始語音辨識")6 O9 d/ V7 ~: G; Z, Q
       cyberpi.audio.play("switch")0 u" o) _7 n5 H5 @5 Z
       cyberpi.console.println("--------------")" e8 S2 X3 |* M+ p) p
       cyberpi.cloud.listen("english", 2)
9 f. D9 h7 u  J% N" S       cyberpi.led.on(0, 0, 0)
8 n; W4 ], {1 I% s, e+ b       say = cyberpi.cloud.listen_result()
7 E$ F1 w* B% P( n. J       cyberpi.console.println(say); ~  T; H2 P7 u/ j
       cyberpi.console.println("--------------")
! P2 N% s! [1 H! j0 m: H+ Z! S  W5 {       for i in say:
5 P6 e8 j2 }. z3 x            if i == '':
, ^0 p. H" I: E                 keyboard.press(' ')+ [/ N- d, X7 n, O" [3 F
            else:7 [4 w/ U/ ~9 w* q
                keyboard.press(str(i))
1 K3 |) }  m  V, k- j4 W                time.sleep(0.03)
  B4 r0 Y/ I( Y+ ?/ w" k# \
' L, u: }. I! j/ Z4 c. Y% o
matplotlib音量柱狀圖

* W4 s7 f, S, X' |5 b' [' rimport cyberpi
4 J$ W+ g: G( s3 f( e( }import time" c" ^: G( k  W
from matplotlib import pyplot as plt; n9 q" j0 i: G" x1 y0 s
5 S6 a* J5 w( d; N5 ~$ E  k& T
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']4 Y8 I/ s& N. ~$ I9 ~' o. H0 q
plt.ion(); h) P; O' p0 a
4 ]) s8 i/ B3 b1 Q7 A# K
while True:
0 |! I2 {/ y( y) G& w   loud = cyberpi.get_loudness()
1 w1 K8 w8 y, l   plt.clf()3 x2 B/ T6 n; d
   plt.xlabel("數據名稱")7 A4 M' }! y3 f
   plt.ylabel("音量讀值")& d( Z2 @" b1 I% Y% o. h* G  y' u
   y_locator = plt.MultipleLocator(5)
8 ~; e0 g" k" y   ax=plt.gca()
; V( D) `! h+ v2 y2 {$ ^9 l8 G   ax.yaxis.set_major_locator(y_locator), n+ s4 \" A0 Z2 |, j5 W
   plt.ylim(0,100)
* A' O* J9 ?: T6 B) h$ C! ^   plt.bar('音量', loud, align='center',label=f'溫度{loud}')( I. \8 j+ u% ]+ v9 j
   plt.title('童芯派聲音感測器讀值')0 u0 r  X5 h7 ?- `
   plt.legend()& Y: t: _5 c' H) g% M) Y% A
   plt.show()
) _4 [. B8 _, Y: Y9 }. C    plt.pause(0.01)) i. J( m3 P0 I0 ?" N
+ p9 e$ {$ C+ J1 c; K7 |( X8 @
2 l& V7 R2 B; q
matplotlib 多圖表顯示
5 i1 I% d5 t5 [1 I
* v- v: U! N+ _1 w3 m  S
from matplotlib import pyplot as plt
7 ?' u2 T+ {  t" k- P; Z& Zimport time! K$ Q$ i" c. e$ w% y
import cyberpi
) @* y; y& \, y/ C / o- c; _8 ]/ a6 m- ]1 k6 v
loud_list = []
, |& @- a- i1 x) bbri_list = []2 q4 ^' u2 Q  w, h
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體/ |3 f- U7 `0 T* B2 h2 n
plt.ion()% ^% t2 @8 W) g# i# i7 _) ?
plt.figure(figsize=(10,10))
! W4 Y. J- n+ Q2 y( @( ]plt.figure(1)+ L& D8 X$ {' p7 t/ |# t3 S; ?
x_locator = plt.MultipleLocator(5)$ v  E1 i" }4 T: {) P
y_locator = plt.MultipleLocator(5)
) T$ m- p) y8 L5 q3 iwhile True:( u: S) n: U7 N' W5 }6 n
   loud = cyberpi.get_loudness()& L. ~; H4 _# d2 [7 s3 w5 W
   bri = cyberpi.get_bri()" y# I( y! P. |! Y* y4 n
   loud_list.append(loud)) Y" U8 Z6 N: p5 ~0 p' P" {1 B
   bri_list.append(bri)
8 u( v0 j6 c$ p/ X   battery = cyberpi.get_battery()' |1 s1 a& K+ B+ F( @
   size = [battery, 100-battery]
# n0 D# C" U1 v% p   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
* I9 }/ n& h/ ]" `: m   ax1 = plt.subplot(221)* d; |& n# T6 n$ y/ r4 E2 _
   plt.title('光線折線圖')4 V0 V* D! l, l
   ax1.plot(bri_list)
; p* q' s4 I; f; i3 |   ax2 = plt.subplot(222)) {& K; @6 w* J9 f
   plt.title('聲音柱狀圖'); _2 O' j: B1 a0 e3 I4 M
   ax2.xaxis.set_major_locator(x_locator)) W6 Z8 G+ F" h& l) C
   ax2.yaxis.set_major_locator(y_locator)
9 \& |$ Q5 K! ~   plt.ylim(0,100)" J4 k' s0 h7 r
   ax2.bar('sound', loud)
* @. ~: x0 s; Z$ B5 l0 w" K4 d   ax3 = plt.subplot(223)' d* U9 H  S2 r% L
   ax3.xaxis.set_major_locator(x_locator)$ @0 l- b" j/ d* K
   ax3.yaxis.set_major_locator(y_locator)
8 }) l* H# }; H5 N   plt.xlim(0,100)- \1 v3 S' g1 \& I- R3 m
   plt.ylim(0,100)
. [# n8 O& N4 K% N% T, ~! K+ k2 o   plt.title('聲音、音量散點圖')
  S3 q0 W/ w! u   ax3.scatter(loud_list,bri_list)
* r- m+ u. h: ~- G4 z, @   ax4 = plt.subplot(224)
, x0 X7 {( Q3 ~3 P# U; _   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
& k1 t0 o" V- F( h4 m  T   plt.title('童芯派電量')( K8 T" g$ L6 i- M* R
   plt.pause(0.2)% K" M  }9 s2 Z% O" F
   plt.clf()
5 A  k" n4 a7 @1 V   if cyberpi.controller.is_press('a'):# X0 d4 ?! t) b0 S7 @4 I) d) n
       break; U/ N  e* |$ |# d
   if len(bri_list) > 500:* @  f1 `: w& Z6 c* u) X/ O) \
       bri_list = []
" G' ~7 H3 o7 b# X5 L1 P" V        loud_list = []3 ~5 i1 G. V: v- K

! K1 l( U* ~8 G+ O' N

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-24 13:15 , Processed in 0.025748 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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