圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8393|回復: 0

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

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

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

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

$ v# \. J. Z8 z8 G) h
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。2 @6 i# K5 p, m2 T& f
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    . N! b( |% L' N6 [
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    ( T+ i# l5 D1 L1 P

( O  z8 l* ?. X: a/ H
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)3 G5 w5 J; T" i8 `9 E5 p

) K2 v: H; S# R' K
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    6 I6 g4 M& e! w9 Y

- P. D) L/ C8 K6 ^- ]! ]1 C% i* L6 |" Q
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    8 l+ `$ |( a* Q4 @3 ~% E
* _) `( m& t$ ]0 O4 {3 g0 ?
3.童芯派第三方編輯器程式設計準備
2 D/ [2 ~& L; o) ?# W
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。% j+ q% |0 s9 z. t2 I- g- U& q
: ~3 ^2 J. @* o
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。4 g  F3 [9 n. L& `: }/ i' Y

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


/ Z' W' S3 f" q/ l. d) e
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    7 X; _) S& L8 n( N

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

3 e, x7 W7 M; Y! L
查閱cyberpi API文檔見:童芯派API文檔
1 j. t- l$ J: y
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    3 b/ b7 u% ?0 H* b* u% v

4 L% m" O. Q1 f
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

1 G- @4 M  y: I" M5.一些程式設計案例
( L( E" |* b& @( w童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
6 a2 x' {/ O+ G1 x
功能介紹:
1 _0 h4 z/ r4 k3 x8 E& a. _利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。" c# z4 W- U& Q2 ?* C
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
* H# e2 z$ |& T9 ~- W結合藍牙模組可以實現無線滑鼠的功能。
( [  ]9 E  w% Y) P
$ l( f# \, i8 F' vfrom pynput.mouse import Button,Controller+ D0 x7 V8 ?8 {& w" ~# Z
import cyberpi+ k! T+ ?" v& z  W0 l
import time0 K' @: E  [6 U% N) K
+ i( t# T* r# O& |5 S4 P
mouse = Controller()( u% @# A. c2 Q+ ?. @9 A8 S$ [  ^
3 K0 b$ F7 I2 w2 }. W( F+ w) c
while True:
- a: m9 N7 E- k& ?% K3 h   if cyberpi.is_tiltback():
3 R. G5 L' B2 d' _& L  x       mouse.move(-3, 0)' F! A+ b' \4 q4 W  Q9 f
       print(mouse.position)
9 A' j2 W9 s$ {$ O$ V$ I/ S$ Q   if cyberpi.is_tiltforward():& ~9 [3 ^( {8 h6 l3 k5 R
       mouse.move(3, 0)
1 }! m" j% ^* L. d% D; m0 W4 E; n   if cyberpi.is_tiltleft():* Q! c+ Z. b- R; N& ]
       mouse.move(0, -3)
7 ]$ q- g( A" Z& j) ]7 d   if cyberpi.is_tiltright():: C% D/ `( c/ M% J7 h
       mouse.move(0, 3)
; S3 p/ Q' i0 b; f( [) g3 m   if cyberpi.controller.is_press("b"):  Z. F* f" E" Z1 {# _& s
       mouse.press(Button.left)( O  h  _4 v3 O7 f+ H, R
       mouse.release(Button.left)
' [2 M! u! y9 ?  F: G1 n       mouse.press(Button.left)
) m( H9 a  [8 e! ]! T" `       mouse.release(Button.left)6 X1 A. P) D, t
   if cyberpi.controller.is_press("a"):
7 B6 ^& d6 @  P1 R$ G# g       mouse.press(Button.right); a2 p- O. R- B2 B) G
       mouse.release(Button.right)' K" }( H( j9 e& v1 f! m
    time.sleep(0.01)
: k; M1 l" @) _4 a+ w" x9 j8 R. l- y& b5 r. V
/ c9 W; k4 c( x0 }/ N. l6 d8 d
語音打字器
, R; z; u$ U7 }* V
功能介紹:
8 r+ ]$ o+ K2 h5 Q9 m利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
* b. S' h) {/ t/ K$ D# |將語音辨識的結果通過pynput在文檔中打出來。
$ M) ?7 l+ \& O6 n& e/ o# P該程式目前只能支援英文。' T! {3 a5 V- ~& ?9 y" }

8 |# \$ F1 @8 D0 j4 O7 z9 ~9 mimport cyberpi
2 b6 S$ @8 H) H% [6 Vfrom pynput.keyboard import Key,Controller
) ^7 ]. G! V; z5 vimport time- h! G3 b& j# Y4 L3 U% `

/ Y' p7 `* o+ f# q9 _" \keyboard = Controller()+ L! |$ |6 ^+ B9 a5 b) s- ]
cyberpi.console.clear()
7 R8 `+ D! j/ F. s. _cyberpi.led.on(0, 0, 0)) I. @/ l  j9 I( v# D# A
cyberpi.set_recognition_url()
- X/ z" C! n  Q( Acyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得& |" V+ \0 R% q# y: L
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
( R0 @( \# j( A2 E0 J) Vwhile not cyberpi.wifi.is_connect():9 }8 N9 h  i! U4 {
   pass9 T6 ~" s. r- x/ Y! U4 Y0 H
cyberpi.led.on(0,0,255)
# s. N5 b1 ]0 ~, Y8 y8 j* Hcyberpi.console.println("WIFI已連接")
- B, G0 R6 o) Q4 n' _cyberpi.console.println("--------------")
0 C- ]! T/ a+ F3 Jcyberpi.console.println("按下A鍵開始語音辨識")/ c/ l1 J0 m/ }$ c6 ^3 J
while True:
' t  I% r' D0 j8 q3 e; s1 k   if cyberpi.controller.is_press('a'):6 h& Z! R7 }0 z  G
       keyboard.press(Key.space)
& G$ h! o9 z: k, e3 n/ D- U+ p       cyberpi.console.clear()
, V( c# e$ }8 y* S. Z/ y( {       cyberpi.led.on(100, 0, 0)
* P# f: J* Q; W; M& |       cyberpi.console.println("開始語音辨識")- {& ]) j3 \: b* [
       cyberpi.audio.play("switch")
8 @& ]" [0 X5 a+ b       cyberpi.console.println("--------------")  O- |2 ]1 P7 G( \% l0 Y
       cyberpi.cloud.listen("english", 2). k7 `0 C! q+ z$ E# d. }5 `# W
       cyberpi.led.on(0, 0, 0)
2 x" t9 `: v. a       say = cyberpi.cloud.listen_result()
( Q+ S. H1 }& Y" b; x9 Q       cyberpi.console.println(say)  f4 [& Q  |8 e1 S0 Y# H2 i) @# q
       cyberpi.console.println("--------------")
5 a7 M8 R# C' U  }% f/ U       for i in say:5 I6 h- R: W- U$ m
            if i == '':( m: F& q' Y: J5 y& T! {* j
                 keyboard.press(' ')
9 w9 A, a4 {# l5 K            else:
( Z2 d( r# v: v4 [; T$ ~. O# _                keyboard.press(str(i))8 S" v0 E5 `/ ]0 B% i
                time.sleep(0.03)% S7 O/ Q2 @7 U" \, P
# ]0 d2 H" {" Q, u0 ]- g1 W
matplotlib音量柱狀圖

7 Z* j& c& W( d7 yimport cyberpi( s  ?* z% e* B' T" k; V" N( n# w
import time
  y. q( G* u$ Q+ J' v6 T, Efrom matplotlib import pyplot as plt2 X3 ~' w4 C( \1 }2 f" m4 W

# Q, |; Z5 d) Q& K- u' n/ p0 uplt.rcParams['font.sans-serif'] =['Microsoft YaHei']; O  z" y6 F* d5 I
plt.ion()
" P. P; d; s9 h" i9 O
5 R8 f$ H$ }) R. J2 uwhile True:2 y. _) b* S/ U9 `
   loud = cyberpi.get_loudness()
7 S( H( E9 _  R. J   plt.clf()
9 a0 B0 e8 T/ @- U% p" v8 a) c5 `   plt.xlabel("數據名稱")+ X$ @, V2 \- W: M, |* K
   plt.ylabel("音量讀值")
5 U* ?. R; j* r( N   y_locator = plt.MultipleLocator(5)
- z0 I3 O$ c, i1 J0 D/ m   ax=plt.gca()
7 m+ y( d' P/ H   ax.yaxis.set_major_locator(y_locator)
2 P7 D( M4 V# `- F   plt.ylim(0,100)
6 R& G" z& O8 M- u   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
* N9 W: g. N5 \* c# O   plt.title('童芯派聲音感測器讀值')
% L+ E; u/ S' S7 [   plt.legend()7 U4 I" F! H3 W- w
   plt.show()
( T' ^/ Y) g  l% K    plt.pause(0.01). }+ A8 W% V: h; b" \4 a, c/ I8 Q

0 l1 ^* |" P2 u; c1 [4 k
& |; j$ T8 y4 E5 J& Amatplotlib 多圖表顯示
* U6 v4 s9 c3 K3 H4 z% G  F6 y6 S
, \, ]* L* t3 @+ E+ [/ w
from matplotlib import pyplot as plt1 n! R+ K% q, [/ _: C
import time
3 }% R' ^! O8 ?- R3 X8 I0 A2 t$ Iimport cyberpi/ b$ y0 m- z0 v7 z( a1 q  ?5 n! V% M7 f

$ e5 x3 {/ D0 B- q2 V9 H6 N; ^- jloud_list = []
6 ~/ \" ]) O! }  X, L" b7 Y/ p: B6 cbri_list = []/ `0 ?, X4 }1 z
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體- t: y  E( C) z5 k+ |( Q0 b
plt.ion()
% o" N: s, w! f9 Eplt.figure(figsize=(10,10))
: X3 h$ O% [- K7 C8 K6 F  hplt.figure(1)
( [+ u6 S7 e6 q" n# h' G; h, N& e6 bx_locator = plt.MultipleLocator(5)4 W! F& q, Q2 Z/ n. _# N" b& C3 D
y_locator = plt.MultipleLocator(5)$ ~7 w1 I, O; ?; e4 d
while True:5 @% Y- @. g! V
   loud = cyberpi.get_loudness()) p, R/ ]8 h) G8 i* C8 x7 I
   bri = cyberpi.get_bri()
6 ^# S9 x9 v& p1 q   loud_list.append(loud)
; }6 A$ P' P1 v7 x   bri_list.append(bri)( Q/ `  r6 x4 }
   battery = cyberpi.get_battery()* P7 b( P) ~- }8 x# p8 z9 i
   size = [battery, 100-battery]
, w6 e: d$ |1 e! E) Z   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']7 |. J& t3 _" j3 Z2 r. f
   ax1 = plt.subplot(221)
; ^, U0 m% H9 K. l: ?% E" k. O   plt.title('光線折線圖')
% n$ D: ^/ A5 u  P# {# T- c, @" P   ax1.plot(bri_list)/ Z, G( e0 v- l5 g4 k6 Z+ W3 M" F
   ax2 = plt.subplot(222)9 r  u  u  g) e, r) _6 c
   plt.title('聲音柱狀圖')8 _8 ?3 o) Y. m- V! k, n
   ax2.xaxis.set_major_locator(x_locator)
" d" h7 t) E( Q: P3 H   ax2.yaxis.set_major_locator(y_locator)
4 ?5 U0 Q% y! Z* V9 B   plt.ylim(0,100)& \# W3 P6 L, x, i  |' ?4 J3 C
   ax2.bar('sound', loud)0 N# i% I/ w# F8 f; b/ C
   ax3 = plt.subplot(223)+ H2 S+ H: `% l9 w
   ax3.xaxis.set_major_locator(x_locator)* B" y6 T* ~$ c) V
   ax3.yaxis.set_major_locator(y_locator)1 v6 h# @7 o8 @% t7 k
   plt.xlim(0,100)5 n# |1 B. c. f7 N4 A7 |# r
   plt.ylim(0,100)( W9 _: R$ Z2 ?6 U4 j  z) S
   plt.title('聲音、音量散點圖')
5 ~3 u2 _& s, j/ V   ax3.scatter(loud_list,bri_list)( E+ ]$ V8 K4 C
   ax4 = plt.subplot(224)/ G* T( c! d' F1 X* c" _; J
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
/ u" w9 ]5 g3 m7 J   plt.title('童芯派電量')( @/ w4 S0 B- W0 o& U
   plt.pause(0.2)
4 g- Z9 L( W  E( m   plt.clf()' l* v" K3 f( c/ B
   if cyberpi.controller.is_press('a'):1 F. q3 n9 N0 B
       break
3 ^  m; `/ p, D! T/ U6 t   if len(bri_list) > 500:
. q. B! n% ]3 a       bri_list = []
7 E( g( X5 J7 B( w; z; L. {        loud_list = []
2 Z4 G9 x1 }7 I2 @! T# ?
* W0 V0 j" R1 ]

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-23 20:06 , Processed in 0.028264 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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