圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8522|回復: 0

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

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

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

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

# j* i# u/ ~( p! f7 i1 ]3 `
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。1 e+ @# s3 R! v
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)) m1 K# ?0 R0 N; c& L2 W, Z
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    , `, {) T3 i3 s$ G4 P
$ {+ j: }  ]- G0 Q8 H8 ?- a# w
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    + R" I+ c/ w. I; T
6 [  H3 |" [( o# ]; d, t  m2 ]
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    ( d/ b: Q, }- w% @  M, [& x; j  F
0 ~; k7 g/ z; Q8 {- d% C
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    ) w8 @* X& D, h7 g- u* d, s
6 U% C. A7 r  W# p6 k) l9 b0 r
3.童芯派第三方編輯器程式設計準備; f& B6 k8 h- `- R; z
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。  P2 [& _: `; w- {' E7 h

) |* q5 z/ i. V: i2 ^+ [
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    # J; L# m8 \2 ~& d0 S( E/ e0 H. o

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

; a0 |& i+ e3 q0 E3 p9 R2 X
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。3 O2 d* V& T: ]6 L5 E; _, ^+ ]

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


2 k8 e4 P/ P& K8 w' E/ d
查閱cyberpi API文檔見:童芯派API文檔
% `6 O) Z- q( i
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。) |4 b$ M! O4 Y% t
6 E& }$ ^8 s6 x6 ?; C6 H% r
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

/ L3 l: m0 ^  p/ Z* K% ]5.一些程式設計案例0 T3 D0 o& n! X( C; z' ~. Z% C( X
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

" }4 h! C1 T* S9 q) i: v功能介紹:" }. a# i3 m7 b, o) o$ s
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
7 A% f, k- P  r8 ~通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
9 G7 z/ o7 H6 D+ K# {: y2 `結合藍牙模組可以實現無線滑鼠的功能。$ O  _( C6 q$ A
. A8 o5 w" ?4 ^: G+ |3 }
from pynput.mouse import Button,Controller
8 U4 p7 y& k+ m; nimport cyberpi% c$ Y1 P# c: s
import time/ F4 B0 s" [. h

# L. g" x* X+ C# imouse = Controller()
3 g: c; j0 L8 _7 c% y 8 c/ y; V0 h( p: M$ ]0 b) \
while True:
# J4 i: G8 {( x" \   if cyberpi.is_tiltback():
1 c: Y1 c3 Q" ~9 m3 Y. u' R7 A' _0 v$ N       mouse.move(-3, 0)4 j9 `$ m1 G, c, d! q3 G- V
       print(mouse.position)
8 B6 }# r1 t9 }   if cyberpi.is_tiltforward():% K- `) Y! u2 w* `
       mouse.move(3, 0)
0 v, L9 R- n2 R   if cyberpi.is_tiltleft():9 C1 F" p" f# C8 g/ @& f
       mouse.move(0, -3)
) t% s# [* U: x2 Z2 a   if cyberpi.is_tiltright():
! v& i6 \7 k! `, O/ V$ E' v       mouse.move(0, 3)
" h" `! k; R5 Y4 ~, ?0 O   if cyberpi.controller.is_press("b"):# |& E7 D- k0 W7 V" G
       mouse.press(Button.left)
5 h- \# T% F5 i1 }. `       mouse.release(Button.left)1 D  h3 i" I# L8 b% R% o
       mouse.press(Button.left)
% a) i# F: Q0 U$ r! N       mouse.release(Button.left)
" w+ A& K3 C5 S' A( O2 o/ Y0 `   if cyberpi.controller.is_press("a"):, W! f( E+ i. t5 Q$ @# D
       mouse.press(Button.right)
  F% {/ e) x7 D9 a7 y) E* E# Z       mouse.release(Button.right)8 p  _. V: u2 z( y& v0 k( |6 u
    time.sleep(0.01)1 T7 f5 Y' k) n

, x; R8 L. z$ O9 j% j0 d- `  o9 ^' }( p) H& t
語音打字器
* I+ @; s* R! f9 p# V$ j8 u
功能介紹:
' f# I6 }0 z- Q9 Q, I6 ^+ s利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。' V# h& s7 R) r8 r
將語音辨識的結果通過pynput在文檔中打出來。
9 x' r% C  _/ p該程式目前只能支援英文。/ R$ d7 B: X% T5 E$ v

% @5 L: J3 K9 Oimport cyberpi
% G0 a( U% B2 L$ W: ffrom pynput.keyboard import Key,Controller) M, J) h3 Q" d3 Y& W0 B1 L
import time
8 Z9 W) ~6 v* A0 n
6 R; h8 n* g" K0 @0 S/ kkeyboard = Controller()
  I. s" g7 a- u/ l' p: l/ Rcyberpi.console.clear()" c' W& h9 _" u' P
cyberpi.led.on(0, 0, 0)/ f8 P" v2 {  m0 F/ E& k" }" t
cyberpi.set_recognition_url()
+ z' |+ T6 V" ~2 m) c3 ?# jcyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得9 W! {) [7 G' c6 G7 |' a" d" O
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
; e3 i& U& L% C0 g( P: P6 Iwhile not cyberpi.wifi.is_connect():
, X0 ^  C7 \+ p4 M* k& a2 p& [  \   pass7 L  [5 y, G( G8 }% Y, {+ Z
cyberpi.led.on(0,0,255); ?" Y' _* j9 A* x
cyberpi.console.println("WIFI已連接")7 `: Z# W) Y; a/ p( R& R
cyberpi.console.println("--------------")
& `" T9 p7 F5 ^0 {cyberpi.console.println("按下A鍵開始語音辨識")1 n) R0 Z% b8 g8 b5 H
while True:3 f0 `# |9 z6 G' a# D: e3 S5 O
   if cyberpi.controller.is_press('a'):  i8 C1 G( U, g" m" P
       keyboard.press(Key.space)
) Z( j3 e; n7 o5 V) h* e       cyberpi.console.clear()* ~8 M- V5 E1 C2 T2 o2 [+ q
       cyberpi.led.on(100, 0, 0)
: x0 X3 x" H" |       cyberpi.console.println("開始語音辨識")
3 d! [! Q7 z, C! J       cyberpi.audio.play("switch")
1 y4 o3 Y3 }2 t4 A: C       cyberpi.console.println("--------------")0 j6 h) Y3 S8 K8 P# @9 y5 `! x
       cyberpi.cloud.listen("english", 2)
6 {$ K/ A# y# O1 H: |' i: c  f       cyberpi.led.on(0, 0, 0)
- m) z2 S8 ^3 {- b! L( D2 i6 ~* K       say = cyberpi.cloud.listen_result()  v5 W5 Q0 x# Q7 f! u
       cyberpi.console.println(say)7 k( o1 X' P5 {+ b
       cyberpi.console.println("--------------")2 ]2 N0 X0 J- j! \- h# |1 P' r
       for i in say:
$ e! `' `* N1 c* t3 r, F            if i == '':& }, W0 ]3 G9 F: Y# t) z/ _
                 keyboard.press(' ')
, r* E9 \' l% F$ v$ w            else:2 T3 B/ _) I8 i- l
                keyboard.press(str(i))* X' b1 d1 M' y; ]. n8 P* c0 s
                time.sleep(0.03)8 O; H! e- E* U- S
2 W( u8 E  _3 |) A5 I+ w
matplotlib音量柱狀圖

. H/ u* x& u' ^" W& \import cyberpi1 j6 r. L& ]# J/ e) O  S
import time% z8 [5 ?9 Y6 X3 G+ q1 n! j
from matplotlib import pyplot as plt
6 s8 z" E6 O9 |  A2 t' k4 [ , x! b. N0 d  I9 s0 u
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
) L+ R/ ~& A4 ~& R" t4 Y4 p) r- fplt.ion(). u) v% l( K% v* A7 s8 _0 d5 H9 q( m8 D

8 Y- Q0 e! U1 s4 w3 Pwhile True:
+ C' e% m8 D2 j5 E3 t   loud = cyberpi.get_loudness()
- a0 Q$ R3 n0 J   plt.clf()
+ u6 b, Q9 w7 o8 a) @, \& l   plt.xlabel("數據名稱")/ v/ `+ l4 q* r9 p
   plt.ylabel("音量讀值")
3 }: K8 T9 B8 ?5 ?   y_locator = plt.MultipleLocator(5)  ?7 b$ d) R; _
   ax=plt.gca(), W- W+ l, P# k% R# |$ q4 F
   ax.yaxis.set_major_locator(y_locator)
' H& K8 E% T) F$ ^6 p   plt.ylim(0,100)
% W& G/ I) }9 A; M   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
4 T4 |2 e0 @! P; [- x, _3 Q   plt.title('童芯派聲音感測器讀值')- S4 ^8 e' Z! ]8 m
   plt.legend()8 y) K; r  X* O) V
   plt.show()
- ]2 {" Y3 B- q  e5 y. N4 z    plt.pause(0.01)
  r# O# u# `; L% L2 E, A6 t
2 G, M  R- A; J
* G9 L6 U- F$ R7 o: \8 _matplotlib 多圖表顯示5 D' C: v) M+ h1 Q0 T& i8 ?
% T, R# `8 z1 H9 W% z! W
from matplotlib import pyplot as plt$ T- _8 {/ ^2 U3 P, I3 P
import time
, z+ B& x0 _3 D. [+ K0 @import cyberpi
9 |0 S* O5 d6 [. M( R5 }
% f2 _+ S1 o1 N, y' l1 E5 ]! Yloud_list = []
2 U3 B! f% U3 u/ \bri_list = []" C- A, e6 T, x4 C8 o- t/ q4 Z
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
% L- P  \4 r( `# kplt.ion()* [1 ?% C6 t, @2 T/ L% P3 Q# ~
plt.figure(figsize=(10,10))" O2 e' P. O5 r% f  s2 e0 b  e
plt.figure(1)9 w; B3 S- m0 ^: e, n
x_locator = plt.MultipleLocator(5)6 v' @* r2 Y. T" L
y_locator = plt.MultipleLocator(5)
2 `4 v) ?( Y* C4 n7 J7 Ywhile True:. e. `' C6 `3 f
   loud = cyberpi.get_loudness()
+ W/ l8 Q; Y. ?3 \4 M2 Z   bri = cyberpi.get_bri()
8 n( j3 p* {/ i& n1 v2 r   loud_list.append(loud)7 F3 A0 ?- z0 w" ~" H
   bri_list.append(bri)3 ~; L6 W* r! b1 Q
   battery = cyberpi.get_battery()% M% x! @, f1 }% y2 r: l- Q8 d8 d
   size = [battery, 100-battery]
# M) w6 a7 U  C$ r; ], Y9 g   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']  Q" }! m! M! W8 j! W7 k
   ax1 = plt.subplot(221)5 X4 i5 i' x' ~, z8 n. v2 I! C
   plt.title('光線折線圖')( T% Q0 T. X7 Q* B/ N
   ax1.plot(bri_list)
0 C+ |' C" y! y) N5 X. |2 z   ax2 = plt.subplot(222)
: ]) ?0 N: \) t   plt.title('聲音柱狀圖')  M  I6 Y+ O! c! W2 \  x
   ax2.xaxis.set_major_locator(x_locator)6 r7 `- T2 m" X/ Q7 a
   ax2.yaxis.set_major_locator(y_locator)
1 w# v6 a# t' d0 s2 _   plt.ylim(0,100)( j6 e- `/ T" f+ y7 C
   ax2.bar('sound', loud)1 e4 o4 w1 V) i- Y) @  y
   ax3 = plt.subplot(223)3 l% a; F" E; Y, Z
   ax3.xaxis.set_major_locator(x_locator)
) {9 _& t- u2 \, g4 x3 Q5 P/ [   ax3.yaxis.set_major_locator(y_locator)
8 p  s9 ~: K5 c' O: ?   plt.xlim(0,100)
& m: {* k( J4 Y3 Y! ]0 `   plt.ylim(0,100)4 D( {3 F8 \1 Y( p; P  z, T
   plt.title('聲音、音量散點圖')7 z0 h  Y& M6 L6 W+ [/ \
   ax3.scatter(loud_list,bri_list)
9 L! u5 t! T: l+ e. X9 Z   ax4 = plt.subplot(224)$ y% \' S' E; P3 e& `1 V
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})8 Z! \% A# K; ^8 s7 x
   plt.title('童芯派電量')
* ]* _# j( j- l; z+ n: h% W   plt.pause(0.2)
# W: `. H6 g& y: e7 d% e8 n   plt.clf()" W# ?1 M2 H" F* R: K
   if cyberpi.controller.is_press('a'):4 W3 m& M' K: G0 d6 m! C; c
       break9 R& ^! r4 L0 b& m5 B" j7 b
   if len(bri_list) > 500:1 U( A- c. P2 U. c( R( f; d9 E
       bri_list = []
+ d$ M: t5 L, E* e3 s2 ?        loud_list = []/ \" R8 S& ?+ ?' M9 l% ]0 [

4 s4 g+ v, Q, j  B8 {

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-4 07:31 , Processed in 0.028854 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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