圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 9636|回復: 0

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

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

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

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


3 ?" Q" W# \5 D, z; m9 b
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    ' S. {( r- H* V/ U8 g
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    * w' [! x6 p; y5 J
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。( H( l# O2 `7 G" L1 Z0 B/ l% E
" z* N1 T1 y1 f8 X5 P
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    4 O9 K2 @- B' A6 u3 ?9 M
! ^6 A6 d$ O8 g9 N! x# k' N) {' h/ Z
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。& Z& h5 E3 Q% a2 r
9 `0 x% j# m# @) ]$ F) N
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。6 a( D1 ^9 b; }: C1 V

8 b; S- X! d# }% l" |, o9 N3.童芯派第三方編輯器程式設計準備. z1 O! \# ]: a4 E8 i2 o
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。! H" G" M/ e/ G+ |

: u: L  J- M& J
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    . c3 ^+ ~8 y/ s8 {( b2 M

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


6 E: L) w# X* O6 g$ O8 \' u; e* r6 m$ ]
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    ( q2 c! y5 i4 O

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


( e. x( O% n; `7 @. i; V
查閱cyberpi API文檔見:童芯派API文檔

+ o3 f+ o" v/ Q* {+ H
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    ! K' _/ @) ]. m
* {. `9 K* I: X: P- k7 k& b
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

$ J  f: L5 `$ ~$ }/ m5.一些程式設計案例) s' K( G6 k8 A/ d
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
, s0 P8 B- a- M9 s/ M, F. [& c, _
功能介紹:; S4 W8 Q1 ?7 Z& d
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
8 a( X' U" ]3 L& I$ P* s2 m. E通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。; |* z9 @$ \! W) m# @4 j$ d
結合藍牙模組可以實現無線滑鼠的功能。
; e* f$ e$ h3 y' E- }- {% x
' d+ a( C; q' V! p! Dfrom pynput.mouse import Button,Controller% I3 m) ]" {' q( x
import cyberpi. S! F; J% q* B  |! j. E  M
import time
6 \- S# \4 j& m  E4 X2 w( L( @ 3 S1 y! ^6 G& ~9 g6 l
mouse = Controller()" l# u$ P2 J! b/ W% F* }

" B3 ]$ p3 S* h$ zwhile True:
: {# G, O3 u6 B! E& Y) I' u8 S   if cyberpi.is_tiltback():: y" o2 i! Q3 V+ _9 s
       mouse.move(-3, 0)
# Z) N" `- @" W8 X+ T& l$ J       print(mouse.position)  Q5 ^9 [% b* H( B+ y
   if cyberpi.is_tiltforward():" u3 W& w$ U. K
       mouse.move(3, 0)
5 j1 U: g5 F; d" h3 P; Z+ ]' L   if cyberpi.is_tiltleft():: q) z& H' q9 y  r) `: U% F( x
       mouse.move(0, -3)5 C3 ^8 [# q8 o8 B7 f
   if cyberpi.is_tiltright():  C8 G1 ^" Y! ^. p
       mouse.move(0, 3)
' r* N$ }% N# E; @4 T0 I. N* m   if cyberpi.controller.is_press("b"):
5 H2 k7 \1 D# Y2 T! s2 U8 T       mouse.press(Button.left)
' p+ L% s' V& o3 w       mouse.release(Button.left)
$ U8 w/ \) E: R6 D! |; h       mouse.press(Button.left), i, G! W! y$ s* Q, Y) x- M
       mouse.release(Button.left)
$ `* @  [# [( }, N2 V   if cyberpi.controller.is_press("a"):9 t" e+ X, _4 m6 {$ M2 e
       mouse.press(Button.right)
+ D, H6 l4 g+ r+ f       mouse.release(Button.right)
+ |7 ~  y7 t/ F# j9 ^* `/ G' o( w: k    time.sleep(0.01)& h3 F* j. Z4 S: v# L, e& ~" ~
) K1 f6 `( F* `, t1 }  I; \

0 n1 V# u3 s0 X% f
語音打字器
% f9 D0 \% {( b2 D" o
功能介紹:
! ?" X# D+ d2 p利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
9 l: }6 K5 [5 d0 B( d將語音辨識的結果通過pynput在文檔中打出來。( U" f* M" b  I
該程式目前只能支援英文。
6 D) l, K+ m& K# C/ y# y" P- X6 w" n$ [0 P- q3 ?  b
import cyberpi5 n/ t  ?* p( P( P- D7 Y: I" _7 G% |0 R
from pynput.keyboard import Key,Controller
! j) R2 @% I2 r+ g" rimport time  N9 J1 ?+ B) U" Q& t, T+ D7 K: Y; H
6 t5 Y; @$ z, t* _
keyboard = Controller()+ k# Q' t9 M0 l6 ?
cyberpi.console.clear()
( F, `) m, `4 b. q: ^& Mcyberpi.led.on(0, 0, 0)
* u* H- \% W% U# g/ s) Scyberpi.set_recognition_url()
, ?. E/ n4 O& B+ ]! \, h# Y/ k) ?cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得7 w0 ~! P' ]! U7 k! y
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")# A% P! M% t2 g, ]1 W
while not cyberpi.wifi.is_connect():  K* p1 W3 b7 B, j# k" E, y  v# d
   pass
  g: F, b' [) H" r; P! I) ^3 Q8 kcyberpi.led.on(0,0,255)
4 ^& q: i& I/ B, |, Gcyberpi.console.println("WIFI已連接")3 j# P& t$ r0 R; G. \; B( I
cyberpi.console.println("--------------")
, A" Y4 m  B! V, n6 M8 F0 ~cyberpi.console.println("按下A鍵開始語音辨識")
$ E$ \, H0 O5 q' M7 P+ Uwhile True:% t  Y+ ]% t8 u) g( T
   if cyberpi.controller.is_press('a'):; u; I  w5 S) U) Z7 G" T
       keyboard.press(Key.space)$ G. G' n# Z* P/ L7 Y, l; z" k
       cyberpi.console.clear()
9 o8 V4 M/ z# j# V5 F6 ~       cyberpi.led.on(100, 0, 0)
" R! H: n2 z( G( C       cyberpi.console.println("開始語音辨識"). K/ ]* Q& d6 I# P6 W; G
       cyberpi.audio.play("switch")1 `& ~6 S/ u4 K7 ]& k
       cyberpi.console.println("--------------")8 j$ ?- x6 Z4 R& a# t* @5 B
       cyberpi.cloud.listen("english", 2)6 m! B/ x, D1 b) G* c/ L6 h
       cyberpi.led.on(0, 0, 0)2 s% `# X! |2 \8 c
       say = cyberpi.cloud.listen_result()
; x/ Z& B+ p7 T1 l" a       cyberpi.console.println(say)+ A0 a1 o" V3 M# F( A. F
       cyberpi.console.println("--------------"); P# Z2 S7 p$ K6 J, v
       for i in say:
! F& c' M. H- e# p( |* m" c            if i == '':6 p3 V* d8 ?$ H
                 keyboard.press(' ')- e- v' X% u( |6 O! @1 x( `; S, Z+ A
            else:2 k4 c/ w( s+ J* F, |
                keyboard.press(str(i))
7 `5 i- u) G3 `" {* k                time.sleep(0.03)
$ H' t5 ]1 G  {% f8 o/ j" d: ^- e

/ k. V' \' J! p6 D1 Amatplotlib音量柱狀圖
5 v6 q. ?' `* K: t
import cyberpi
$ `3 Y) R% w; _) zimport time
- l% T/ C# p1 f# D2 O( _/ i' K2 gfrom matplotlib import pyplot as plt, a2 j( E. i: l0 ?
2 p0 n5 V- q, @
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
# }; v8 ?2 h5 r5 V/ Fplt.ion()
5 `% g/ S$ Q: r8 m 3 k/ p+ ~7 E0 u( N
while True:
; p* x9 K  s6 G+ P% p# n   loud = cyberpi.get_loudness()9 V' E' |( e2 q; H
   plt.clf(), V- ]8 m: ?! v  M6 Q0 R" n
   plt.xlabel("數據名稱")
# l+ y$ ]; [' w0 q9 R& i; P   plt.ylabel("音量讀值"), P+ u  r% a. g+ ]) }+ w* Q
   y_locator = plt.MultipleLocator(5); d, h2 v& W' E& w3 W# I
   ax=plt.gca()
( L& N' E: h$ g   ax.yaxis.set_major_locator(y_locator)9 l2 o/ ]: ]4 S0 C
   plt.ylim(0,100)
% n5 A: j1 x; `# D# s   plt.bar('音量', loud, align='center',label=f'溫度{loud}')/ T7 O8 F( u6 w2 F4 ~
   plt.title('童芯派聲音感測器讀值'); d+ n+ `- e  ]& C1 G0 c% N% Y4 F: K
   plt.legend()" R* \+ J6 R0 C4 M4 ~. {
   plt.show()) ^7 H! C5 j& X( c5 ]6 n
    plt.pause(0.01)
% p! z' g- a. I( O
7 [* v8 U8 \6 |0 T4 V) _
* ~" j4 e3 G) U( I- v; n+ vmatplotlib 多圖表顯示+ g: ^- R/ H0 P

3 E) ^3 v' ?# lfrom matplotlib import pyplot as plt; ^0 `# x. {& f' K
import time
0 [6 n! X9 W* e) C8 q: N3 Bimport cyberpi
! n3 c; R  ^5 y8 v$ ^ 1 B7 \5 B) Y7 u$ n- r
loud_list = []5 `0 d2 W0 |; R, P! F
bri_list = []) ^+ v6 g2 T4 w+ C( V$ Y; k5 P
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體4 C) }. f+ W( w! A: D5 r- S4 L
plt.ion()
) _' `+ X3 J( F- q9 n$ u: |4 O  `plt.figure(figsize=(10,10))
/ g9 E) B3 t& Q' M" i! Q0 Mplt.figure(1)  `$ v4 g! w# x4 m! [: P( F9 b
x_locator = plt.MultipleLocator(5)% [% g3 f  N" Z- j3 ~9 {* a
y_locator = plt.MultipleLocator(5)
% |' d$ f' k1 c  A4 l; l2 owhile True:) _; _5 g1 f/ W, h2 x3 }
   loud = cyberpi.get_loudness()7 ~  D& i: K/ `
   bri = cyberpi.get_bri()
3 j, P. }" n0 U   loud_list.append(loud)5 D1 L' K" M; I6 Y8 ~
   bri_list.append(bri)
" \( l, }" F% R$ m# H   battery = cyberpi.get_battery()0 d) i1 O+ [# Q
   size = [battery, 100-battery]
* l) t9 Q' E9 v3 a* r2 R   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']6 V4 x( E! ?0 F
   ax1 = plt.subplot(221)
  T8 q. {  j: T( ?1 o0 S   plt.title('光線折線圖'), m& p2 g" G' F0 z, {
   ax1.plot(bri_list)
$ X3 B6 h. ^3 l6 e   ax2 = plt.subplot(222)
* H1 u  g2 x- q, J$ @* l) L6 G% q. W   plt.title('聲音柱狀圖')
' H0 D: d( S; ^5 y   ax2.xaxis.set_major_locator(x_locator)
) ]- X+ s) z0 D' M; b   ax2.yaxis.set_major_locator(y_locator)
$ V! D4 p! h% K* k( R: B3 D3 q1 a   plt.ylim(0,100)" g" B( T+ D) E1 `4 f' U' L
   ax2.bar('sound', loud)( N; S% {% V2 E) `* ?4 |
   ax3 = plt.subplot(223); q/ g; T) L* E9 a) ^) s
   ax3.xaxis.set_major_locator(x_locator)
% ?, r* c1 M7 c* U( U   ax3.yaxis.set_major_locator(y_locator)
: x. R* |6 Q/ w. n& S  Q, Z( ~! X   plt.xlim(0,100)
( s9 Y7 }) i% Z# z4 @/ A, @% D   plt.ylim(0,100)
4 |. B' {* [" ~1 C* h2 k1 r) X   plt.title('聲音、音量散點圖')$ k; N& h# B  f# D
   ax3.scatter(loud_list,bri_list)4 S* J1 Y& w4 c- \% p- w" k+ `
   ax4 = plt.subplot(224)3 N/ c9 Z/ L) D, z
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
& f* V' r& @- p5 p; T4 f$ q   plt.title('童芯派電量')
* p2 A$ W: I4 Q; {$ N; W. C# S   plt.pause(0.2)2 B* d. B9 O4 d) s0 R& ?( ~
   plt.clf()
6 @0 z+ d5 i! v$ _+ t5 v+ z) A6 [   if cyberpi.controller.is_press('a'):. ~* G- Z  O. s6 j  e9 C
       break  l/ s0 q" F, ~6 E
   if len(bri_list) > 500:% a2 T. U% c. W( i$ r. I! W1 i
       bri_list = []2 u" l; y' _* c, t* S- _
        loud_list = []
7 |' }5 G* W! L$ N" e# X0 l
3 v9 Y7 I- x/ p. g

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2026-9-15 16:56 , Processed in 0.024078 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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