圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8438|回復: 0

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

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

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

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


' E: H- O' ^+ `( M
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。- t0 o7 C6 b+ Z+ j0 R
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)* R2 r& u, ^8 g3 O, ~' Y4 L
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。2 \' U4 d' g9 @7 P
6 |: x# \: o. C3 \
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    0 B! L  v* ]+ }. @3 n' d' @" H

/ G3 ?( F' V4 E4 }+ P, G
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。2 b2 R2 \7 x% G3 t( K7 i. ?6 {/ n

$ ]4 R, I: v& D; J  I
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。) o+ [& v  k: s/ w: J, l
6 f) T( N# W* Q
3.童芯派第三方編輯器程式設計準備9 e1 X5 m1 f& K8 d+ B* i9 L% \5 [- c
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    " }( C1 j5 G( a+ w7 h

1 M. h% u, I6 R+ R. \
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。3 s( d# x9 |9 N9 v+ O* b* j/ W4 L  t

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

2 q, F- ~* Z. v+ d3 Q" C# `: o$ O
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    : R6 D- q9 b$ P

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


+ D* X8 ^: d) d
查閱cyberpi API文檔見:童芯派API文檔
  U) H5 o: B5 w6 I/ }! d
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    : _6 c+ K! F6 h6 `4 S! t

7 Z8 d9 N  V! G/ V' l& Q/ o1 Z
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
' i* S7 d) o1 ]1 Z$ L+ n% J& G
5.一些程式設計案例
, F5 G1 h1 w0 O2 L" ]童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

, t2 j. g3 n! q功能介紹:
/ G. i; c/ M( p- ~5 z利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
* c- {  u( {8 O# _) q% L通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。' b- I7 O  n" U
結合藍牙模組可以實現無線滑鼠的功能。* h& O' g7 T1 X) |7 Z  t5 u4 c

- K4 A8 C4 p; S- S; _from pynput.mouse import Button,Controller
+ g6 e9 F( d* l* K# `4 |5 iimport cyberpi
. D8 j/ I1 W+ K0 L( Iimport time' X3 t  ~, O4 L/ f

7 D1 Y/ U( n# B% a0 Z  Wmouse = Controller()
" q, d) ^* Z9 `$ L; ^0 `3 _ & D8 m! O4 R; Q9 a
while True:
" H9 n) e; y" W0 l- A   if cyberpi.is_tiltback():; Y: v' z" `% T, d* p5 K  D4 l) L- c
       mouse.move(-3, 0)4 ~* r1 A0 C2 o7 x% C8 B% d% \' Z
       print(mouse.position)4 v' y9 E; D8 ?9 o! c1 b
   if cyberpi.is_tiltforward():
, z3 n% f, d6 Q9 q# q       mouse.move(3, 0)
& I$ n- r; v7 B' k1 y   if cyberpi.is_tiltleft():
/ V: Q2 J+ ~% v2 `       mouse.move(0, -3)
$ m% G3 e/ e& D7 i, I8 z; m# q   if cyberpi.is_tiltright():, j& J) E. p# R4 q
       mouse.move(0, 3)
2 l4 U$ x3 o8 h7 `& R   if cyberpi.controller.is_press("b"):
( b3 \1 F- t/ x5 K; |       mouse.press(Button.left); Y. M/ F5 }) m+ U. E# }
       mouse.release(Button.left)
7 R- t$ d8 a% e1 i1 Z       mouse.press(Button.left)) ?* n* r3 ?' {1 s
       mouse.release(Button.left)7 A. n! f* H5 _; U. d
   if cyberpi.controller.is_press("a"):
5 z& n) E; v3 y$ Q       mouse.press(Button.right)" w/ b, Y, ]2 m
       mouse.release(Button.right)
8 l+ x$ A0 `! L; W5 v! i# R" U    time.sleep(0.01)9 h. j# _7 Y. a7 ?
$ q+ R$ q6 t, j8 D

# Y# ?2 c6 @( u1 v/ [! j" T9 j
語音打字器
' x- x! r1 r! i7 K( E. [$ ]
功能介紹:
5 e: s9 q6 y, l0 F利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
' [6 z6 Q0 k, o; d/ ^將語音辨識的結果通過pynput在文檔中打出來。( ]: B0 x+ [, j9 x5 i; S
該程式目前只能支援英文。
& y5 X' Z% ]; s; Q" j6 p9 @5 P
4 n4 y% z, v* p5 B  ^3 X$ Mimport cyberpi
4 V3 N/ [; }" \0 g' Mfrom pynput.keyboard import Key,Controller
5 i( _% y& k, A$ x& zimport time
% h' \0 s* D! ~/ f3 H
6 A; `7 N$ x1 w1 t7 N- s. B+ hkeyboard = Controller()
# \/ F3 }; [5 F$ Y2 [) Y' U. bcyberpi.console.clear()( T3 z6 V. j/ D4 k, F1 m
cyberpi.led.on(0, 0, 0)6 T! O8 k8 |# k
cyberpi.set_recognition_url()0 c5 E' l3 w$ s$ P: L
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
. e2 R: C/ F* R+ Q6 M! e& \8 h7 scyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
7 `0 I0 g3 _. D  rwhile not cyberpi.wifi.is_connect():7 \: i: k6 p2 Q3 y! a6 t1 L- I5 w
   pass1 U# t& f$ E- I4 D& t2 A
cyberpi.led.on(0,0,255)
# }" J7 Y0 ~0 I: kcyberpi.console.println("WIFI已連接")1 }3 x: y2 i4 w- B* Y: G
cyberpi.console.println("--------------")- J+ y; y9 ^+ Q( z- U
cyberpi.console.println("按下A鍵開始語音辨識")8 p; P* k! Z' N! B
while True:
  }( A4 B' m0 r+ y( z   if cyberpi.controller.is_press('a'):
9 `8 Q& A6 T* i$ S" ]7 V' H9 |8 A       keyboard.press(Key.space)) w7 `# B7 V. L+ ?
       cyberpi.console.clear()
) O9 a; N, w" \/ V       cyberpi.led.on(100, 0, 0)
/ F% a) J* t& ~# x$ l       cyberpi.console.println("開始語音辨識")
3 s7 F" T4 v% u" [' Y6 F; h: E" r       cyberpi.audio.play("switch")
5 O  X) E1 A, ]) Z+ s       cyberpi.console.println("--------------")- A/ _# r( c- t8 @% {
       cyberpi.cloud.listen("english", 2)+ g4 ?& y  b" q, P+ |1 u% U
       cyberpi.led.on(0, 0, 0)
& {+ q" F& v  g" H3 W9 T8 P1 y       say = cyberpi.cloud.listen_result()
  I2 X( J2 w* ~8 L5 U       cyberpi.console.println(say)4 ?* O: u9 d5 i6 T9 T
       cyberpi.console.println("--------------")0 F' Y( M! M) f( a. n
       for i in say:% A- \% V/ e. m/ X" h' {. c
            if i == '':8 m" f3 f6 L% f6 p
                 keyboard.press(' ')1 Y. C2 @: @  I# b
            else:
( Z: |6 U, J" a! G                keyboard.press(str(i))
2 {- P3 i! H( T+ K0 ^4 k6 M                time.sleep(0.03)
4 O6 ?7 z3 K& e- ^) D1 l) d6 E  K/ Z

/ y/ m5 _4 l  mmatplotlib音量柱狀圖
- ]9 s% W( {4 O/ N0 V; e
import cyberpi$ S9 f: ?' u% d; i
import time
+ A9 X) V% N4 W2 {5 H& efrom matplotlib import pyplot as plt
& `8 s% l, Y7 n( h% B2 U, S7 F4 y1 q9 T
6 W/ B% o) \; |( X5 Eplt.rcParams['font.sans-serif'] =['Microsoft YaHei']
* x+ c. [9 z) q0 z. \3 Qplt.ion()3 P3 s8 Q7 T  b7 X
: d( y. \5 |( o  T. X
while True:$ i1 w  v. u* z9 n+ s
   loud = cyberpi.get_loudness()
# a  b, ~! j# M* o% b# w. C   plt.clf()4 d5 j! W: B' F+ o7 D) G
   plt.xlabel("數據名稱")
4 f8 S/ K# K. |1 t1 ^% @   plt.ylabel("音量讀值")3 `& W- k" E3 o! e2 |; \" n
   y_locator = plt.MultipleLocator(5)
! k  H6 f- o. h   ax=plt.gca()
3 z" N! U# G! t$ O9 S8 R6 y   ax.yaxis.set_major_locator(y_locator)
* d+ h  }$ w  b/ s  d! K! [   plt.ylim(0,100)  F4 V6 [( D/ W# l; w% }% [2 G* g1 \
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
: }) r+ [& g/ h   plt.title('童芯派聲音感測器讀值')' Q' w+ u( ^' }
   plt.legend()
$ @+ K' ^7 y3 d; y7 k; V   plt.show()
% c+ {4 y. u. `2 s' _    plt.pause(0.01)
' F+ r& Z9 R) z; p5 P- y# Z0 U( E! Y  _/ p/ \% {8 |& `

0 u6 E8 B5 N& {2 f8 }8 b2 jmatplotlib 多圖表顯示
7 Q$ K) A6 X* `$ y" N3 y- q" d0 ~6 c

1 i( e# s! ~# y6 \from matplotlib import pyplot as plt
0 u1 F' }% R/ e) J, Oimport time4 G1 ]; `+ ]+ p5 g
import cyberpi8 P* f' H( `% y2 {8 e/ O
6 w7 x) A. e3 Q" S% J3 I, T
loud_list = []# |6 r1 o  m1 q2 d% ?) g6 T
bri_list = []7 h0 U: ^3 W4 E8 ], f- v9 c. T; Q5 ~
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
; m. z4 W! R6 M& vplt.ion(); P) v2 p4 q) w" U3 P7 T
plt.figure(figsize=(10,10))/ u7 O9 d8 o1 H) j/ a
plt.figure(1)
! v  }! f9 ~2 E: J$ |x_locator = plt.MultipleLocator(5)
5 N: R( H& l% C$ k5 Q! {6 i: t: B2 z- Sy_locator = plt.MultipleLocator(5)
$ f7 `% ?- P% }6 A/ Z, a4 U+ Swhile True:5 u( E1 b5 c) ~" E( w3 a
   loud = cyberpi.get_loudness(): D/ L8 [6 s- ^4 K9 B6 g( T
   bri = cyberpi.get_bri()
6 q% k5 e1 y; V   loud_list.append(loud). @' Y& }' n8 j
   bri_list.append(bri)
* o. H/ L% n% s& w' f   battery = cyberpi.get_battery()4 |: U' s( V7 [0 Z+ [
   size = [battery, 100-battery]2 c& k* P2 X8 ]" X8 ?5 M" ~, D
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']3 h7 J' `  w+ ~
   ax1 = plt.subplot(221)
! p% v7 u; J  i7 p3 n& J4 ?   plt.title('光線折線圖')3 M5 z; X" \8 @( v; S' J
   ax1.plot(bri_list)3 ^3 L0 E% C% D6 l
   ax2 = plt.subplot(222)
) j/ F, r: ?6 m0 ?7 M8 a0 N5 T   plt.title('聲音柱狀圖')
( }  Q  R, }! P/ I0 C   ax2.xaxis.set_major_locator(x_locator)
0 _" Q! `$ |4 f4 T- o   ax2.yaxis.set_major_locator(y_locator)! h1 ]+ B. ~# ?) x! Y+ j) g
   plt.ylim(0,100)
. R* I* g# z8 {+ L( Z0 v   ax2.bar('sound', loud)% }7 T0 U' r/ C  O! j, B
   ax3 = plt.subplot(223)* `/ z1 `3 p1 m4 K2 X0 r, j: d7 f5 ~
   ax3.xaxis.set_major_locator(x_locator)
- R) K6 h0 H2 J# j$ i   ax3.yaxis.set_major_locator(y_locator)0 i  C1 A- R: X+ x9 T3 R8 e
   plt.xlim(0,100)6 {- P; M0 }6 `9 ?& P& k5 C; J
   plt.ylim(0,100)8 V& m6 c" m/ R# S/ a' l5 m
   plt.title('聲音、音量散點圖')  c" [; v. e, v
   ax3.scatter(loud_list,bri_list)
# k+ ~: _- b3 K/ I; K! C9 [   ax4 = plt.subplot(224)
$ m  f" N; n8 G# }' |- f   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
' m* a2 m; s: y( Y8 K) d$ @' K   plt.title('童芯派電量')% }9 n3 L5 V% Z, u5 N
   plt.pause(0.2)
2 @$ F! h" e6 o! |7 w1 I9 ^/ [   plt.clf()
/ j! R% |  ?# {8 _" Y& `   if cyberpi.controller.is_press('a'):
& g2 ^8 T1 \& F4 i       break
9 i9 n; w, K  z) g+ S   if len(bri_list) > 500:
' A+ M  [, r* C- ~! ^       bri_list = []
; Q- q5 j: H* A# e        loud_list = []
6 K' u  G1 Q$ h0 R' x' V, a0 \
" C: w" D# N0 {

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-27 20:22 , Processed in 0.025397 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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