圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8366|回復: 0

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

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

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

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

4 }9 V! r( R) Z" r) G( I) Y9 o9 L
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。+ J" P+ F# H0 f1 `. R  ?( {( ~
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)) X8 T& c0 M1 V; U
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。6 j  d" l) M/ ?3 @* Z
9 P  j# H5 c: ~8 ]4 I2 {1 c" o
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)  |& t* v1 u) p4 i% K* @7 D% z  x

+ W) p; J3 a6 _) S9 {
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。- A" G% H% m3 q/ n
  O5 G! ^. H# P* Y4 d5 \
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    & P% N! A7 H% H
: E  D: p$ G9 G
3.童芯派第三方編輯器程式設計準備, ]6 E) j6 y$ h) l; I
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    - ]& j; A/ I/ r- t& e9 N0 o+ h

( X; b5 F  G% T- d/ ?
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。! A/ p( u; U( F, X5 E

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

6 J0 U/ X8 W" J
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    7 e" b$ ]7 E/ Q( x

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


: H! z7 b+ g" V9 Q+ I
查閱cyberpi API文檔見:童芯派API文檔
* H) {. W- _( O, L5 x9 R& d& b; G$ r
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。# A6 s/ [- Y. h* u$ P2 L

- z; g: l% e& n4 X2 g
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
+ A; ~1 {% [+ B9 a& ?' Z3 V" [
5.一些程式設計案例
. f( k+ q* |$ u童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
/ C8 S+ S- b# v* F& X/ Z
功能介紹:' e8 X/ n( e2 w- Q! n7 |
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。1 u+ Y; ~: T7 Z
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。. D1 z2 N# {0 _) f
結合藍牙模組可以實現無線滑鼠的功能。: l/ C) Q  e' L- a) P. g

0 u. C4 s' t+ ^: D  j6 I" Lfrom pynput.mouse import Button,Controller; Q  k, W% i1 x! ^' v1 E* z
import cyberpi" j$ l  P  ?" z" j
import time$ M: F; ~  W2 B' M  N2 c
5 I8 o$ @( X( a
mouse = Controller()4 |: c( s) H: B. v* ]  R- P+ \% O
" p- c, T& u: y3 u4 E  j( x% X% K6 F
while True:% A. l5 @- `2 P% q3 {
   if cyberpi.is_tiltback():
8 S9 s- `2 F. o. d) a% [       mouse.move(-3, 0)
# ~7 Y- {# j) }' l/ ~       print(mouse.position)
) j. W0 I/ c% c4 m   if cyberpi.is_tiltforward():
+ p, B( e5 [8 H5 }* K       mouse.move(3, 0)7 X8 s0 t% A( Y$ p( ]1 y8 g$ M
   if cyberpi.is_tiltleft():. p+ n$ N% f3 D6 N  \+ [' _0 p- q3 W
       mouse.move(0, -3)- I: N& E  ]& x. Y
   if cyberpi.is_tiltright():
' s. u7 s: z! O4 P$ `       mouse.move(0, 3). d7 F/ S# W' @5 t' I
   if cyberpi.controller.is_press("b"):5 u- y" _+ t& J/ L: J) s1 U3 q2 v
       mouse.press(Button.left)
. s5 `8 U) M' e. r# h       mouse.release(Button.left)
" V$ b7 }- X* }7 P% h/ W* b) q       mouse.press(Button.left)
# y  g8 P6 ~% X7 k       mouse.release(Button.left)
6 D9 }& f4 c1 a8 F  f2 z- T   if cyberpi.controller.is_press("a"):
2 c* ~# I7 `+ c; [  ~/ u       mouse.press(Button.right)$ a- q6 |& y" @8 S
       mouse.release(Button.right)
& Y+ [# c/ n% J: n2 m3 L! J    time.sleep(0.01)
0 U. ]2 P! ?2 m' l
6 V. }. Q% Q' O2 p& Q+ }+ C
& E& t, @7 C% ]
語音打字器
9 l8 F9 q8 x& {
功能介紹:; ]: D- t; H, s7 o+ w3 a3 R  R# ?. Q
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
6 n& @9 g$ D( H: X& n; G3 i. N& r3 k將語音辨識的結果通過pynput在文檔中打出來。
1 T9 P0 ?, i, q2 }; W該程式目前只能支援英文。9 C. B4 B/ H5 `7 |+ a! L( F
2 F3 o4 W5 c3 z4 Y
import cyberpi3 r: b' {, `0 R; M3 h( K; s
from pynput.keyboard import Key,Controller6 U; H9 ]! C: A' u1 z% C
import time
  E8 I7 P. z0 b3 k& P- T& G & h2 S! Y- s2 k, |8 K+ x
keyboard = Controller()
6 h1 x4 i3 R; vcyberpi.console.clear()
/ s9 Z3 b; E; x# a. bcyberpi.led.on(0, 0, 0)0 U, n* \! g6 v. Z0 H7 C7 F
cyberpi.set_recognition_url()/ H  d, r, C9 w( L  {3 V
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得, y0 o2 B  c7 H# K8 ?. Z
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
9 j8 x* y6 O$ P$ }+ Swhile not cyberpi.wifi.is_connect():
3 }! K& p- T0 X: V   pass
( ?, x, h1 t! f+ W. [# Scyberpi.led.on(0,0,255)
& ]( }7 t- q3 wcyberpi.console.println("WIFI已連接")
: D! J0 |! w7 G! j0 ]9 Ncyberpi.console.println("--------------")1 \2 r3 B: q, E* R3 E' T
cyberpi.console.println("按下A鍵開始語音辨識")
1 |. P4 i2 Z6 f8 C; Q  twhile True:
* J0 X: {- ?! a4 s- Z* N) n   if cyberpi.controller.is_press('a'):  P, x: M* d9 ~& m) [  a
       keyboard.press(Key.space)
9 k' x) P0 Z! {# ~2 W# @1 s6 c       cyberpi.console.clear()
: f' f1 f* q& E' v, b, Y! S, w: l       cyberpi.led.on(100, 0, 0)& c2 Q6 d) _* u3 E+ W' G
       cyberpi.console.println("開始語音辨識")
# l; m- ~5 O& R5 H1 g       cyberpi.audio.play("switch")9 D: C' @) u! y; f) Z4 ~1 F
       cyberpi.console.println("--------------")
4 [8 h8 O: T0 w, S+ r# s, T       cyberpi.cloud.listen("english", 2)
$ a4 J, K+ d7 [3 z       cyberpi.led.on(0, 0, 0)
4 O3 ^$ K' F1 I( H& z       say = cyberpi.cloud.listen_result()+ f2 P$ }) _' c
       cyberpi.console.println(say)
0 o8 O0 S, k0 a# I1 P       cyberpi.console.println("--------------")
" |9 w2 a  G6 n& n+ X3 O       for i in say:0 k# {) H2 I9 u- X% B/ d4 X
            if i == '':
, P1 o  O5 M4 u5 I- d7 ?                 keyboard.press(' ')
/ g! B/ ^9 b: c. i% O            else:
* r4 A6 o. O2 H3 m8 h# o. u                keyboard.press(str(i))- Y! M$ s- R) [; r- }
                time.sleep(0.03)
$ R3 ~& d/ V5 U
0 W& L7 `, I0 h. x
matplotlib音量柱狀圖

' m9 B' o$ h- k2 Limport cyberpi$ q2 }3 P) u4 @( |- j5 ?6 E
import time- L  m9 H/ L. J% @1 g
from matplotlib import pyplot as plt1 @/ _7 h1 b& N

: _) ^2 Y" g8 b+ o, T' Vplt.rcParams['font.sans-serif'] =['Microsoft YaHei']
/ B4 ~. c' X3 N; X/ Bplt.ion()2 K4 E0 E* ?: [# D0 T: a, E/ Q
2 y  V& Q5 s4 p5 U
while True:# y0 r# m2 L* C3 o9 k3 b2 w
   loud = cyberpi.get_loudness()
# P! d' k* B( _& \   plt.clf()
# ^* u& A( T3 G3 x   plt.xlabel("數據名稱")* ^* G8 ?6 G' f; F: j; S3 w
   plt.ylabel("音量讀值"), b2 e! {! \; l* N$ q# k' U+ X& t! H4 h
   y_locator = plt.MultipleLocator(5)
& l3 ~5 U1 L& L0 ?% M   ax=plt.gca()
5 [& O, }6 K; ~( ?: d1 L   ax.yaxis.set_major_locator(y_locator)
* D7 ^$ f& C9 n- U   plt.ylim(0,100)( f0 A& u$ n1 v- ]
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')4 i, d7 r4 {% ^8 G
   plt.title('童芯派聲音感測器讀值')
2 q1 r, T* w* @( H2 S" z   plt.legend()8 k3 S5 Y6 `  s5 T3 `0 q
   plt.show()1 C9 z8 @# d7 H
    plt.pause(0.01)( _& @0 w8 v0 M  p0 X  e6 z
$ c' O3 V$ E8 T+ q( s% q5 E0 A

( I% @+ h% W. T' {matplotlib 多圖表顯示
& \3 M- Y0 y: _1 `- M0 A

5 q# e; p/ n7 h2 n- m# h# zfrom matplotlib import pyplot as plt8 A) o: @6 V1 q
import time
; }1 s! ?6 i  W4 f$ Vimport cyberpi8 v9 U4 E, {; f7 Z5 x' e
" t% a1 ^3 ?5 H8 i; X6 x) N
loud_list = []
5 m4 U' U" t0 U0 S! f) `' @bri_list = []
/ ~+ _. k2 Q* Y: zplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體3 J4 u3 M) L1 C9 F
plt.ion()  R- @9 j! L. e5 @
plt.figure(figsize=(10,10))
/ c* r% {" Z2 {1 c2 m2 {2 I) Splt.figure(1)
$ g; E1 i4 V$ J% g3 X7 E! @x_locator = plt.MultipleLocator(5)1 T  A2 }8 o# [* z8 |* M
y_locator = plt.MultipleLocator(5)% G* D* i2 b' M7 Y
while True:
& t# j2 x" ?' ^   loud = cyberpi.get_loudness()
9 }- G7 k& |, L  d   bri = cyberpi.get_bri()% [1 y$ _+ o+ I: |% y: P
   loud_list.append(loud)
2 ^' k7 N; q1 {2 w, u2 \% Q   bri_list.append(bri)
- f/ S$ }" Q1 j0 T0 L/ u   battery = cyberpi.get_battery()* B/ p+ L1 M  D3 i+ c7 D' W" Y
   size = [battery, 100-battery]
+ C; V$ \+ n7 p9 y2 {' s/ A   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
- ]* g5 F+ L4 s" e$ L( |4 X5 B   ax1 = plt.subplot(221)
0 y* q2 W6 ?5 ~" F   plt.title('光線折線圖')
5 B% Q& @+ ?9 z# V( r% q   ax1.plot(bri_list)
1 C3 O! Z' [# s* t  [   ax2 = plt.subplot(222)
" B% ?( k- U( @. G( X& O   plt.title('聲音柱狀圖')+ q! o8 }5 L& L; X! _5 x) ]
   ax2.xaxis.set_major_locator(x_locator)
4 z; T9 a0 e% j2 w. ?" f4 @; y1 G   ax2.yaxis.set_major_locator(y_locator)# Y& m; X. G9 A0 p4 q5 f* ]" L
   plt.ylim(0,100)
$ I* O8 v8 E: y+ u, q   ax2.bar('sound', loud)5 t% r" n1 T: X! W5 W
   ax3 = plt.subplot(223)
% }2 j' H, q2 f   ax3.xaxis.set_major_locator(x_locator)& s% V% x1 D4 ^( J6 V
   ax3.yaxis.set_major_locator(y_locator): `5 c6 V: }" I" A  d- M
   plt.xlim(0,100)
. E* d, ~4 B5 Y6 }8 @  W/ G   plt.ylim(0,100)9 w* `1 c8 n) a8 P0 m' H
   plt.title('聲音、音量散點圖')
+ e$ A- J. |' |* m% M1 q. l# m   ax3.scatter(loud_list,bri_list)3 R: F8 \8 k: f1 ~, |4 i
   ax4 = plt.subplot(224)( T/ x* ]" H5 A. ^& l) X( `+ z2 a
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})/ `$ g/ H" b1 O7 [7 K
   plt.title('童芯派電量')' l* ]+ `% e3 s. ]9 u9 ~9 ?6 m- @
   plt.pause(0.2)/ U0 Q9 q# E) a2 N! C: {
   plt.clf()
2 y1 c1 N, S, h, e6 r   if cyberpi.controller.is_press('a'):& O2 d4 w- H4 @9 p& H. R3 V
       break
) g5 ^/ m- p1 V1 p   if len(bri_list) > 500:' T6 ]8 l1 \# _. b8 ?' N$ }4 l
       bri_list = []
1 t% ?( X% V' x+ _" m3 T- y& n        loud_list = []
4 o" {0 n" ]& e* H3 ~9 o) s) N0 J
% x- J5 S; [& Z; P9 L' d* X

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-19 19:10 , Processed in 0.024339 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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