圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8543|回復: 0

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

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

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

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

$ L# L. q; r5 X, C; @. L
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    ! q. {, E2 D( U: O1 h3 z( Q
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)! T/ k+ B1 q0 Y
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。* k  d5 B. j: {8 ~' R' k

0 g  ~; H1 Z, H6 _4 @9 Y+ F
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    / L# v/ a. j: ?& {9 B# ]

( ]9 G3 ~- i( }- j9 |  H
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。) F5 G. B( m) M' }4 K

, f8 Q5 U2 A- \+ x
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。4 h2 r4 j- C* ]
6 d( l( k0 a+ N5 i
3.童芯派第三方編輯器程式設計準備6 ~* `9 h4 s6 m
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。9 `0 r! i% g+ q& g# o  k4 X$ I

; J( `( w+ R5 K
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。1 P- e6 I# v- j& n6 B" O4 ?8 H! V) b5 C

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

2 G  f0 Q3 c3 q. q$ R
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    , ~2 S2 r) R" T% i; k

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

) ~. o5 O2 `" P' X' B) r3 z
查閱cyberpi API文檔見:童芯派API文檔
; N% N3 U& [- b$ M* V
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    + `" f6 K1 Q; W$ e7 I, ?/ V8 \
/ n# m3 d: N; Y4 d5 H5 E
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

! T, e  t$ T) _% @3 n5.一些程式設計案例% E. X* x  J3 x& R. m
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
7 n* N- f" D6 \& _! O# t& o3 J6 |
功能介紹:+ Y1 [% b" c. m0 p! \0 \
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。# [8 K6 }2 c1 ^/ c! E+ t' N
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
( W' c% P; O. ^4 _" m3 E" B4 M5 ?# }結合藍牙模組可以實現無線滑鼠的功能。1 Y3 I* ]$ \. T9 m% _2 B9 D$ \
( p9 s# Y2 J  ^0 v. R( e7 b5 a% |
from pynput.mouse import Button,Controller
0 ]7 l" B) r" \* t3 Jimport cyberpi
; f: \5 I# E0 Z: m; }+ yimport time
- u$ A; @+ a  l5 v" G) f
3 Z+ ]: g( w0 d; Cmouse = Controller()$ ?$ D. b" M5 d( a
- c& C) @& e% n6 @$ Q) k1 F
while True:
% A6 @4 P8 X' q( [4 W+ ~0 ~   if cyberpi.is_tiltback():
% w* S, R6 U- [' |, y       mouse.move(-3, 0)" K2 m) @4 H3 B" J# o
       print(mouse.position)
0 m- y+ G% |. Z5 d  x   if cyberpi.is_tiltforward():+ V( z: j. o% i
       mouse.move(3, 0)' @3 Z! z9 h1 N( w
   if cyberpi.is_tiltleft():
+ P6 V* b1 y% S       mouse.move(0, -3)
- s6 w; V, w6 q5 V   if cyberpi.is_tiltright():" C9 O9 m) J3 s+ y% }- b
       mouse.move(0, 3): G/ Z) a' o0 D
   if cyberpi.controller.is_press("b"):
) p& m$ {# ^7 P       mouse.press(Button.left)
( T8 b  u0 C6 T0 ]       mouse.release(Button.left)
  x8 j7 ^0 _. m3 u) K       mouse.press(Button.left)
, p7 S3 l. P6 u1 g" [& h       mouse.release(Button.left)7 z! d+ M. A0 _; a; G
   if cyberpi.controller.is_press("a"):) ]1 b: N% o8 P) L. W7 U3 I
       mouse.press(Button.right)+ n: t1 J% U0 q% n3 O$ p
       mouse.release(Button.right)
3 h- L5 Z. j! `5 |$ ]8 e7 C    time.sleep(0.01)/ ~9 y, X  F0 W2 \* w% g4 X; Q
* K! N  b7 {; K5 e' j
. p! I0 p: z# B) ^, v; \4 }8 }
語音打字器
# A' H) g. m4 r# G7 b( c
功能介紹:
2 V7 E$ R9 `: F* _) G) S利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
% D% q. T6 u/ ~) Z, O" X+ G將語音辨識的結果通過pynput在文檔中打出來。
# U5 D$ o$ @( D" \1 j該程式目前只能支援英文。
. g4 E% n: q( y1 p, C6 b3 L) F2 e7 c  h- U+ k6 B0 C* t
import cyberpi" z: `/ n3 j1 y' r, s$ l7 b
from pynput.keyboard import Key,Controller  G) i% t; z2 |# U3 t, H
import time
; `5 I+ k6 X' _$ ?, e, V: y + I( |) `# s6 f/ C3 C/ P
keyboard = Controller()$ ]$ P: v5 ?* d6 ~3 g
cyberpi.console.clear()& s7 t9 L( j5 d0 {. B
cyberpi.led.on(0, 0, 0)4 f5 ?- E6 A! r8 |1 c5 L1 e2 W
cyberpi.set_recognition_url()/ X& a& `. A0 k3 m5 n7 b$ _2 [7 `
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
: U8 y  D4 |2 H# ?9 Ecyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
( w, ~2 g" f" j% Y* cwhile not cyberpi.wifi.is_connect():
, ?: ]& n2 t" k" P6 ?% ~4 G. r   pass
0 _- |5 z6 m) v# Mcyberpi.led.on(0,0,255)
; f5 ^. o/ A4 c' w. ycyberpi.console.println("WIFI已連接")
, ~% d- Y& [& n8 B/ ?% I6 Qcyberpi.console.println("--------------")' c4 h5 B$ N$ j
cyberpi.console.println("按下A鍵開始語音辨識")
4 v  e& [9 M6 L/ Vwhile True:7 ~/ U/ Q0 o7 l, i
   if cyberpi.controller.is_press('a'):
; b' W) v0 H) W  U/ t       keyboard.press(Key.space)
0 M1 J  ]) G! B1 b4 G! S; C5 q       cyberpi.console.clear()4 D$ F9 a" s0 G( N9 K
       cyberpi.led.on(100, 0, 0)
* `# |& ^" ^; W  s2 C0 L5 P/ I1 h# x       cyberpi.console.println("開始語音辨識")
: d! r, Z  ]& \. B6 M       cyberpi.audio.play("switch")( a  ~- @; j2 V/ g% d  J, W
       cyberpi.console.println("--------------")
1 Z4 @" b# n, ?       cyberpi.cloud.listen("english", 2)% ?/ {( b. {% M0 D: {
       cyberpi.led.on(0, 0, 0)
; r: k+ h0 w5 q+ ?: \' H. p2 ~       say = cyberpi.cloud.listen_result()& {$ x  n5 g% H" ]% ]
       cyberpi.console.println(say)* y3 h; n7 {1 Q! t, R
       cyberpi.console.println("--------------")
$ N& o; y0 m* X) r4 P; A       for i in say:& a5 c( V3 ]5 r* a. \& V
            if i == '':! j! @, F. E  h
                 keyboard.press(' ')
! o9 G5 R* ~0 ~* D            else:$ N& D  S9 f9 w9 a8 X
                keyboard.press(str(i)). J$ B& ]8 k# S/ x( n: y
                time.sleep(0.03)
5 c. m# l: R- y8 K' a6 W' f

! I' r9 n+ `9 b3 v. |9 hmatplotlib音量柱狀圖
. g2 d" D. O( F6 Z+ j1 E0 x* o. i$ U
import cyberpi
4 X# M. w" [7 b6 [7 Uimport time
! a& K$ b: H1 P3 ~* h4 K9 R( \from matplotlib import pyplot as plt
4 h  Y; e3 G- A4 ]4 \2 L. V % J* q' b7 S$ b/ x& M  M9 S) K7 R
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']! x* w5 }6 v6 [
plt.ion()- f. p( H6 g. K& j4 H' q9 p% A# g

: S3 g6 E( x& n1 E& Swhile True:
) p3 |/ g8 C. ^0 v* g   loud = cyberpi.get_loudness()
' B- m% x; q( A1 J- p/ G4 @/ D   plt.clf()6 G6 L3 V  H. ]+ [; i! \
   plt.xlabel("數據名稱")
% F1 b6 J2 e5 Z   plt.ylabel("音量讀值")
' r, G: X, D- \/ n; I' F1 v' |   y_locator = plt.MultipleLocator(5)  F+ l$ T  W2 J  @& c1 z6 Y
   ax=plt.gca()
2 t, t# B" O6 h: @   ax.yaxis.set_major_locator(y_locator)
( Q, ~3 P* B9 W+ t$ p* y   plt.ylim(0,100): t$ a3 p, Y; B8 G
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')( k" M" c1 ?- a; T0 O
   plt.title('童芯派聲音感測器讀值')
5 D' M6 l2 b) D  z   plt.legend()
) L' {" b  i6 S( n# {) ?6 |  \   plt.show()
9 d" G7 o1 Q. [' I- X  X( v    plt.pause(0.01)# t9 P1 N1 i, t; s, A! |4 y
* k- S8 a% w" Y2 q8 i: J' e' I0 n' ?3 n
5 t  l* @9 _: B% z
matplotlib 多圖表顯示
0 [/ J) w% s/ ^. Q# g
" v6 h, H7 z. a! N
from matplotlib import pyplot as plt
* D- O: N! d. x( J3 }import time
% e8 L) s; b( `; o+ u4 d; Timport cyberpi
: K7 I* @4 O& M* \4 c) L4 Y- S- t 9 h  H( {' U  J
loud_list = []. _; q, H8 D$ h/ \
bri_list = []3 S! u9 [8 A6 b) m; y- [& G9 ]# o
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體' o0 E2 Q! a' T
plt.ion()5 ^2 l/ h9 n8 l$ |; d/ |
plt.figure(figsize=(10,10))/ `" h4 g0 F% L) f6 C6 @/ |
plt.figure(1)
5 p3 D0 J* B$ A) y: |; w8 @x_locator = plt.MultipleLocator(5)
. H- @& b! L  c9 e3 s, Qy_locator = plt.MultipleLocator(5)6 L. Y' S4 Y: a0 |% r% z
while True:
! d4 f. Q; g- G   loud = cyberpi.get_loudness()! ~/ @2 z' W* S; B& h: s
   bri = cyberpi.get_bri()
, E% K+ Z' T- E' _( T7 ^   loud_list.append(loud)
  C6 S* k- G' [1 i, t2 [5 B2 r/ ~5 }" T5 l   bri_list.append(bri)
8 [0 s  D  ?& ]4 ~0 `   battery = cyberpi.get_battery()
# ?6 ]' O+ A6 W, b/ z   size = [battery, 100-battery]) f8 p: `% r6 s* S
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%'], ^! i: H# _; q$ @
   ax1 = plt.subplot(221)
" N  m, r+ B9 s! f3 j: j3 C   plt.title('光線折線圖')$ O# I) a9 G5 m4 I" |9 Z8 Y5 ^
   ax1.plot(bri_list)
" h* ?9 W: C" a; W2 F# d   ax2 = plt.subplot(222)7 d( r* O, n* s4 P
   plt.title('聲音柱狀圖')
  b1 {3 f6 N  `; |+ ~/ ]   ax2.xaxis.set_major_locator(x_locator)" r1 ~- g" E3 r* }' |5 Q
   ax2.yaxis.set_major_locator(y_locator)6 @6 |! A4 A, ]+ T- c
   plt.ylim(0,100)
& l- g1 O( V5 J   ax2.bar('sound', loud)
8 E' t! N" h; m: K  `3 y   ax3 = plt.subplot(223)% Y& ]" X- F. x+ y) `# D
   ax3.xaxis.set_major_locator(x_locator)* M3 X5 L; b- G9 u* w( k; H' Z
   ax3.yaxis.set_major_locator(y_locator)
0 _7 ^: n, y& V   plt.xlim(0,100)( n$ |! Q8 {6 k; Z9 Q7 ~9 m
   plt.ylim(0,100)' y- [( o0 \+ W  R
   plt.title('聲音、音量散點圖')
  j/ j; x3 q' `2 [8 v   ax3.scatter(loud_list,bri_list)! G/ h2 B: N2 \
   ax4 = plt.subplot(224)! V9 L  I( }% w; ~
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
5 P; G8 b/ o0 A! d3 s   plt.title('童芯派電量')5 ~2 c" ?+ }1 {3 K, P- i
   plt.pause(0.2)$ G" Z5 B' @$ J+ P/ N* J7 q; C) R, I
   plt.clf()
3 C$ `& ]% _7 H( i' [   if cyberpi.controller.is_press('a'):
) G0 t( Q5 v/ U4 @% D) o$ l  ]       break4 i( ]' s" n# ^& h7 O! Q
   if len(bri_list) > 500:0 z# t. C# x' B/ t: [, o& i3 D8 p
       bri_list = []
" \( A3 e  ~# _+ i: V        loud_list = []
) o3 s& P2 H" u, g+ O! b
9 K6 K- Q: Y+ o4 r, N# p

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-5 10:33 , Processed in 0.027749 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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