圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 7729|回復: 0

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

[複製鏈接]
magiccar 發表於 2021-7-2 15:47 | 顯示全部樓層 |閱讀模式
本教學譯自Makeblock官方教學文件,原文點[]
本教學文件以windows作業系統環境為範例,Mac使用者可以參考結合實際情況進行操作。
快速教程:如果您已安裝了Python環境和第三方編輯器,請跳至第三步。或在您的編輯器配置的Python環境當中安裝pyserial和cyberpi程式庫即可實現童芯派第三方編輯器的程式設計。
pip install pyserial
pip install cyberpi

: u% H9 {3 W: B5 ^% c1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。, ~7 E0 i; c5 R3 [$ `

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

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

9 B$ Y/ N4 a) c
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    7 a5 P  |. K1 t6 ?
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    ! n  c- c& X, M; b6 X
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    1 E- w  D! U1 K5 m! k9 z
0 x% i4 j8 O  C; x7 W
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)$ Z: ?. Q3 y2 Z$ D  ^
* u$ E& Q/ y5 |
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。2 v* s+ u. s1 h1 T. k) _

5 J& F& b0 _1 ~3 l7 `% j
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    ) K) f! {+ R- Q% k# Z& S6 ~# h% P
; g* j2 t( H3 |) K& \2 H9 B0 r% h
3.童芯派第三方編輯器程式設計準備
+ x, |5 d# k& D' e& }
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    9 |6 A* w9 E! _$ |: L

9 p  ?/ @# h/ G0 }( F' D2 k
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    9 |3 R  A7 P% o

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

3 t6 K' Q8 m3 h3 @
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    % ]8 N1 u8 R- T* f0 @/ n. x

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

1 H: \6 H- |! {! S% ]  n8 T/ n
查閱cyberpi API文檔見:童芯派API文檔
) [9 j7 P9 T# P  H
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    9 t9 r0 m8 \" L( i' |6 D
3 t  `. J* j1 [! {
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
: X* M) S. o  z1 @. M/ R
5.一些程式設計案例8 T, o* E' W" b2 ^# A) K0 k
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

. B8 A4 b* f3 z; Q  u/ t功能介紹:
, {1 D! _4 Q1 `. o$ ]/ n4 u; a. E& K' G' w利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
( F, D" [7 l& g9 h" g* `, {+ S通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。1 z2 N9 F1 H2 T4 C3 P: V
結合藍牙模組可以實現無線滑鼠的功能。8 F& o, ^! z/ h% b( A
, f/ }' c& W% n7 [, R
from pynput.mouse import Button,Controller* n2 D% g# i4 n" Z
import cyberpi
7 Z  O. N8 S* N8 B) V' y2 u$ Wimport time; V5 `& n" H1 w  N: @
: C! j% u& D1 @# U! e5 l2 \
mouse = Controller()* X; v' c5 a8 _4 Y: R, I

! J0 d0 u) b) rwhile True:
' \) S$ c6 P; r. e6 E; T   if cyberpi.is_tiltback():% w+ R5 s! ?. W  H% i
       mouse.move(-3, 0)9 o. [! E2 p' ]5 u4 V+ |( B$ p
       print(mouse.position)
. ]/ H4 X8 i# V) H( C" [/ h1 O   if cyberpi.is_tiltforward():8 S) h# t! R* v- O# n" ]
       mouse.move(3, 0)
3 d4 o9 Q# v$ T   if cyberpi.is_tiltleft():+ X) F  M0 E# P9 P* }8 x
       mouse.move(0, -3)
4 v$ ]- |" x2 Q  w7 |) f. C   if cyberpi.is_tiltright():* ~- l6 _! P3 K( `1 E) s4 _
       mouse.move(0, 3)" c: ~6 x3 F7 v% o" p
   if cyberpi.controller.is_press("b"):
" o" ]( j- E0 K7 @; w- x8 X; X5 p       mouse.press(Button.left)
5 d  ]! X1 E8 f* J* D% g& V6 B4 o( }       mouse.release(Button.left)
  e3 O" d4 t0 E7 `       mouse.press(Button.left)
& G  F! h0 c$ a, ^+ @       mouse.release(Button.left)
+ i  y, D. M7 `! d   if cyberpi.controller.is_press("a"):' @" B. q3 ]$ J% F$ ]- k7 E
       mouse.press(Button.right)
- {* M! F) x9 E" y) a4 J6 D4 q" B2 z       mouse.release(Button.right)
8 d+ Y" L  {% N2 c: A    time.sleep(0.01): C7 t$ D4 r3 D$ c
6 j  E" z: ~6 ]

7 l! b  \7 ?. U1 j" }- m1 Z6 D
語音打字器
5 ?- X" {  ?! V$ a- P$ [- z
功能介紹:
" R4 l" n7 p2 N7 _- r8 a+ o' o利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
9 E( i) W+ Q' k) K將語音辨識的結果通過pynput在文檔中打出來。
( N& U9 \5 C; x2 g2 v: n# S0 H該程式目前只能支援英文。
5 v% ~0 g& d0 V  w
: d! A- U% S, x6 T- [+ H0 mimport cyberpi2 W. i# c0 R: v" I* V* ?
from pynput.keyboard import Key,Controller
0 Z0 I. F, F% s; W# rimport time8 f  |; K3 V- g- T: b

& a" H3 Y2 u( X: F/ c6 ^+ y& A: Ckeyboard = Controller(); r1 L& l/ A8 n0 C
cyberpi.console.clear(). E$ }/ P) A& q2 d) P( M; b# d
cyberpi.led.on(0, 0, 0)! h1 K" l7 D: W9 ^, A* z# R. _! E
cyberpi.set_recognition_url()% p2 H1 ]& D/ R9 `+ u+ r) `0 ~
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得/ K9 H& e. ]4 M, |- q
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼"): L9 S8 n* k3 k1 [
while not cyberpi.wifi.is_connect():
, i+ x3 W  g8 t9 k9 z% n   pass) v2 ]% Y- r' L4 R( Z' Q* ]( ]
cyberpi.led.on(0,0,255)
, V& y# h9 H: A8 e& a# ~( Acyberpi.console.println("WIFI已連接")
! ^, K* T" p: `% f; l8 k: z7 Vcyberpi.console.println("--------------")
1 u* e! a1 O1 U9 Vcyberpi.console.println("按下A鍵開始語音辨識")
7 M$ K) u' j# f- n3 s- Z; N6 vwhile True:2 o7 o  s) Q1 p2 B' B
   if cyberpi.controller.is_press('a'):4 y; y, B" R  ?) o
       keyboard.press(Key.space)
# `- v9 h& \4 K" O       cyberpi.console.clear()
3 w  s0 w9 o& }6 {; k" p7 f       cyberpi.led.on(100, 0, 0)
# \( v6 }2 e( T, F; }       cyberpi.console.println("開始語音辨識")
+ s8 k: a0 p9 @. S" p( X6 S       cyberpi.audio.play("switch")5 N4 w4 J# C+ J; s' E9 P# U
       cyberpi.console.println("--------------")' @  ], X7 R5 Z
       cyberpi.cloud.listen("english", 2)+ b( f, g! J- b# t
       cyberpi.led.on(0, 0, 0)
. _0 b) a! z9 G+ o# t6 r$ Z       say = cyberpi.cloud.listen_result()
. n: y! V% L8 d7 y: H" I       cyberpi.console.println(say)* ~  j# [( @- O( ^% A) A
       cyberpi.console.println("--------------")
+ @7 E: W' R: o       for i in say:
6 m- o! B6 F7 D5 M& w8 a+ p+ @5 q            if i == '':
! B8 n& t# a- Z/ ^$ \9 L                 keyboard.press(' ')
; l2 q  b: b- C$ j, J. a            else:
# N% G3 @2 U, `                keyboard.press(str(i))! p5 t- n$ m3 L; t* N8 `) w
                time.sleep(0.03)& c/ Q# A& G+ p# P5 _) U7 E
6 Q2 K! b# U8 j9 v( _/ ]( Z
matplotlib音量柱狀圖
- n8 B" {( i6 A8 r
import cyberpi7 x$ f2 _6 e+ ^" [, S
import time6 E) x% B' U* v( l0 J
from matplotlib import pyplot as plt, G5 R8 h; ~3 G" @

8 y3 M6 s) H* ?! [: k8 @3 oplt.rcParams['font.sans-serif'] =['Microsoft YaHei']
7 W% n9 W) v6 |plt.ion()% K4 \2 c- `$ n: t2 |& u
3 h. b" O1 o. W' Y% O* _, e
while True:, P: j; m& S9 l. K! L5 J# h
   loud = cyberpi.get_loudness()
) A6 A4 V( `$ v& Z   plt.clf()/ G, @' C8 L  w+ I) y$ J& \2 e
   plt.xlabel("數據名稱")/ }; f8 a6 D2 V- f. f2 w
   plt.ylabel("音量讀值")
) p* x4 i2 d0 @! P4 {   y_locator = plt.MultipleLocator(5)
7 J0 V  U2 ~3 o   ax=plt.gca()
* q' P* l2 ?# K. a- c0 |0 h   ax.yaxis.set_major_locator(y_locator)
) H( l, V* d; T' h1 C/ }% U8 @) t   plt.ylim(0,100)
: T1 @# i" ~- n* n: i4 w   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
# ^. Q% O2 s/ n% p; R* F   plt.title('童芯派聲音感測器讀值')' G4 z) b* E; Z& e4 x/ X
   plt.legend()  ]9 y- L+ Q7 H+ L
   plt.show()2 t- j* J7 D* L! k
    plt.pause(0.01)
5 I: E) m. R( c* m- u# _* [- Y) a1 t& G. P$ M& ?/ T. |: K

" G* V. R& Z# w- k& U* B+ V$ Vmatplotlib 多圖表顯示& q: x6 \# W- W# R, h
! l6 \$ Y" @  w& h7 {% E. B% e
from matplotlib import pyplot as plt: p* N4 y& v+ m% A7 f9 G7 @
import time4 f) n5 E+ u5 K# q
import cyberpi
. K. l8 C. r$ B% B
, f/ c, @% u; y  `, _loud_list = []
% w4 w2 P7 G8 Z6 Z; ^# d9 Nbri_list = []) n. B; X+ x+ q; P/ Y2 @
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
' ~) ?5 M( G& _( H. w6 c1 v+ `0 ]plt.ion()4 W% u& U" s# x) \
plt.figure(figsize=(10,10))
. }* U* L$ s& G6 j+ gplt.figure(1)
5 ?+ ~* n7 R$ g' W! l; Fx_locator = plt.MultipleLocator(5)
8 A/ ]0 A* l5 U' s- cy_locator = plt.MultipleLocator(5); M# H8 R+ `0 V" I4 d7 q$ L6 }4 {
while True:
! C  W) C; z5 g$ C4 k8 Q( B   loud = cyberpi.get_loudness()6 J, R  u! y  k: `7 I: i# [
   bri = cyberpi.get_bri()
1 u7 S6 V- b6 u9 X$ F5 r1 g2 _   loud_list.append(loud)
- G8 B! K( G1 }+ [   bri_list.append(bri)
/ C$ A) O  S$ f1 E. V2 G- u9 {3 k   battery = cyberpi.get_battery()
+ p8 V3 X8 P/ R+ X; A   size = [battery, 100-battery]
3 W7 N) f8 I  v( {   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
# }+ q; D  {5 I3 H6 q   ax1 = plt.subplot(221)- w- v5 L! f+ Z2 |2 g
   plt.title('光線折線圖')
+ j1 A6 m5 O5 W   ax1.plot(bri_list)
) L- o" T" }4 ~. r! ~1 g) k   ax2 = plt.subplot(222)
; A+ u: X% V0 P& O   plt.title('聲音柱狀圖'). j9 J$ U8 `- P; }' w: u* i. U/ a% _
   ax2.xaxis.set_major_locator(x_locator)
& g9 ~( @" q& ?   ax2.yaxis.set_major_locator(y_locator)+ ?8 |! z- @" t; y0 L+ E
   plt.ylim(0,100)
: U2 `1 \3 t8 R& u% {   ax2.bar('sound', loud)& W; N& q$ Q0 a8 K+ x- G1 M5 J1 ]7 O
   ax3 = plt.subplot(223)
( k, S* O" [7 F" L   ax3.xaxis.set_major_locator(x_locator)& `+ G. e; D) C& S$ l. v2 @
   ax3.yaxis.set_major_locator(y_locator)
& q$ O3 J& k7 s, P( X+ h, ?& ]) }) m# b0 s   plt.xlim(0,100)
* @" g  z4 C8 N+ l   plt.ylim(0,100)
7 U! l% ?/ @( {  u; S- O4 V   plt.title('聲音、音量散點圖')  }, m5 Q5 _: C1 j
   ax3.scatter(loud_list,bri_list)
! u  ~5 J- E3 }! @4 ]- f   ax4 = plt.subplot(224)! G- g0 L! O* j' x" m- g) W4 g! e  G
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
5 g/ C7 x$ y. w   plt.title('童芯派電量')# v  ]" Z7 `/ y, }
   plt.pause(0.2)2 j7 {( H+ l1 y1 m7 f
   plt.clf()
7 H! I# z) e0 t: v  s  ^   if cyberpi.controller.is_press('a'):
+ Z7 x( \9 Y6 U% l! B- Q8 x6 p/ Y       break( b' [; a/ z8 c7 ]( {" D- B3 G
   if len(bri_list) > 500:
1 f+ _+ ?# O, O0 p+ n& N' g       bri_list = []
( d; g1 k% o& z3 H        loud_list = []3 q, H- J% {8 X8 U! c
6 j" @% u8 t) q  `' H! Z

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-7-2 08:11 , Processed in 0.029013 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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