圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 6260|回復: 0

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

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

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

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

/ V* O* l) ^( \+ l
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。  x3 e0 h# Q) S8 j" t
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)( W6 A! l1 [' k5 O3 n
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。% h" i  q9 V1 k; @0 Q% k" D5 O8 S+ J

+ m4 r( r4 i- X- |1 ]# r3 {
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)5 ^$ a/ F$ x, D. w
% h9 G: O) Q  G; Y+ p
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    % O- Z$ h4 K: F: `7 h
- t. I: S& p/ ?* N+ W; S2 a) C
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。9 U( c$ |' P; N. t! v
2 B6 {2 ]- @7 k8 I0 n. \
3.童芯派第三方編輯器程式設計準備
( P8 [8 S% V5 w3 j' @7 |
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    # x" c% n; Z. W' [4 o4 {" _: G  o+ o& v
; T" g0 X$ h& f# c: B
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。1 g& r! h6 T5 F( ?9 M% U. s1 o0 ^

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

' o& q) C3 ]+ M- U9 k  V: g
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    ; m* C" q+ y" ^, k  i! A# u

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


3 D' U1 B8 h/ e8 f8 p
查閱cyberpi API文檔見:童芯派API文檔

3 I. ?; c% ?$ P/ c# L
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。  ?0 O" O' l8 K. {  P

- x6 `$ c6 z0 ?8 j  c. K
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

) V7 L$ c( ~. l4 C5.一些程式設計案例
! U, B0 O" H3 z; o童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
! p1 B) |& ]7 c& C3 Y" e5 G
功能介紹:
; e* ?9 G% S. h4 W$ b6 H6 o. p利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
1 P4 Z) ~8 Y( O- P- T通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
' g+ j8 Q7 H7 ?" `) D- {結合藍牙模組可以實現無線滑鼠的功能。
' T- y" w' G) G" m
7 v% I; e0 q: dfrom pynput.mouse import Button,Controller. n1 G7 u6 ?8 B+ u1 x% }" v, t
import cyberpi% W' O/ k9 Q8 y8 p. j: u. U" }
import time
0 C* [& ], q- b8 {- K " m5 y7 B+ ~; A$ b. v# U
mouse = Controller()
+ e+ f& ?6 ^  U$ e3 |$ M, E
. z8 i6 i3 M$ }0 U$ Q  u. Ywhile True:( f6 @0 o8 ^) X
   if cyberpi.is_tiltback():
" R  S6 M1 ~' V2 V/ J/ v# z0 z+ n       mouse.move(-3, 0)5 ^, |  s% Z5 C, G4 E
       print(mouse.position)6 k2 X/ t) g0 Q
   if cyberpi.is_tiltforward():, @2 }4 G! \8 J+ @+ c8 }
       mouse.move(3, 0)
  g8 B- @2 J' I) @) E/ w/ d   if cyberpi.is_tiltleft():- |$ @$ ?- r1 a- r
       mouse.move(0, -3)
1 B! g5 u" R1 u+ j7 F   if cyberpi.is_tiltright():
/ _7 _. D/ t0 W* E       mouse.move(0, 3)5 T  _" X( l. y
   if cyberpi.controller.is_press("b"):
6 ~2 a- A: L$ l3 R0 q4 V) M$ W- [; ~       mouse.press(Button.left): i0 f* [4 ~& R. u' V& O& s5 E
       mouse.release(Button.left)6 w4 f5 ?' p( B* t! {; Q: M5 O
       mouse.press(Button.left)
' o) ]  b% E+ K" I5 h- T       mouse.release(Button.left)
  I, A, f- d% U/ V; h   if cyberpi.controller.is_press("a"):  K8 n+ \4 z, |+ q
       mouse.press(Button.right)3 _; @$ r  F) U1 @; O' L" i! b
       mouse.release(Button.right)' B1 `0 h5 T4 ]9 ^) B% `8 q
    time.sleep(0.01)
8 z9 c' D- D" |8 n: i8 l
% `' j  m0 }/ j& n  x) A  o+ B' @6 u1 u7 f/ |! H+ F2 N5 ~
語音打字器
) f. ^; i9 O3 b
功能介紹:4 _- x; S2 v1 A' k' g) C
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
1 j' Z6 e$ q* d2 A4 x$ L將語音辨識的結果通過pynput在文檔中打出來。
. Z( u# _4 q  ?" O! x: G" }該程式目前只能支援英文。
1 A0 k/ w8 f- x; f. e( d5 m) j( y' [, |* [7 j+ H2 V6 r7 h7 X! \
import cyberpi" w# I# k6 {, M' U( t: T; ~7 g/ ~
from pynput.keyboard import Key,Controller
1 V( p+ h, T: t8 ]8 j; ^0 A  C1 R; ximport time
7 l0 o1 ?  O; v% f
5 O& {! b0 t! A0 t% nkeyboard = Controller()* O2 `5 b: X  j! y/ ]
cyberpi.console.clear()
- V) u) I: n! h* R' l/ rcyberpi.led.on(0, 0, 0)/ ^; w* T. n2 r& x0 ~/ m! o
cyberpi.set_recognition_url()
0 s. t! A* @8 s- P6 `: Ocyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得; }! }' P) p% n& E  h
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")2 N& a$ g( k: J- ?3 B* a% U+ J9 A' B
while not cyberpi.wifi.is_connect():
# f3 W) B- R% n1 ?   pass
. z- M& s' x, {( W- Z& V, m6 }cyberpi.led.on(0,0,255)
- d" N( @/ {8 ~' Gcyberpi.console.println("WIFI已連接")4 O  O, d; H/ b' x
cyberpi.console.println("--------------")4 {' s+ n  H0 [! x) k
cyberpi.console.println("按下A鍵開始語音辨識")$ Y6 ?! H  @2 A1 Q
while True:
; M  }0 S  ]" s2 E) T   if cyberpi.controller.is_press('a'):
( b  J# J; x8 [9 _; c; A       keyboard.press(Key.space)
$ r+ F5 I3 G( ?& D; w       cyberpi.console.clear()
  p* ~, s0 J" j; k0 m5 ~. ]/ }) M" E       cyberpi.led.on(100, 0, 0)
6 f6 x+ ~; B8 @. ~' e. j5 O       cyberpi.console.println("開始語音辨識")
8 W: d! W3 r- Y5 Y$ o       cyberpi.audio.play("switch")
  t! G5 s$ |/ z& _       cyberpi.console.println("--------------")
/ d* z; p( j2 m       cyberpi.cloud.listen("english", 2)0 a6 T3 F2 i7 V. v6 Q' j' O8 {9 T
       cyberpi.led.on(0, 0, 0)9 b. c5 ~9 |# _1 P' X
       say = cyberpi.cloud.listen_result()" m1 a6 j3 m: y
       cyberpi.console.println(say)& E. E0 z4 G: Y
       cyberpi.console.println("--------------")
' \6 l8 e% D7 M+ l, s1 F0 {) N       for i in say:/ C/ d* n+ o" a8 |% |$ t
            if i == '':
. H1 M  c  s2 H. T; i9 Y' S                 keyboard.press(' ')! U. p  w4 m  ?
            else:' n" W5 P( I( j, {# ^; M
                keyboard.press(str(i))! H: ^* t. U8 `1 }, }4 R7 t
                time.sleep(0.03)
( p9 M2 v% f5 z' S
5 @( a" L5 ]- j: t4 T6 l
matplotlib音量柱狀圖
( K. J7 H7 h( s$ j
import cyberpi/ T+ b8 B; b9 n; H2 b
import time
( S) k/ K+ \: ~& j& ofrom matplotlib import pyplot as plt
+ _0 E' [0 ?* U0 z9 @  a/ k & V. [7 ]5 Y+ S7 K* P$ L, F
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
$ k# H8 w4 W3 e6 I" s" b. cplt.ion()
4 q* [8 d7 }% `/ }. n! N; ^( _   E% S) d! y$ w) n. [; ?
while True:
% @# V1 I, w, K4 s9 A   loud = cyberpi.get_loudness()
" S" k, K; k' ?2 _" G* a   plt.clf()
( A& ~$ w" ?! ^0 q# W+ M   plt.xlabel("數據名稱")& L* S9 x1 K* w$ q& b( |* ?
   plt.ylabel("音量讀值")
: _) U) Q; Z0 Y* r   y_locator = plt.MultipleLocator(5)+ ~2 }5 B' n$ Z* Y& D) X
   ax=plt.gca()$ w3 }. c8 b0 S8 i8 F6 F
   ax.yaxis.set_major_locator(y_locator)1 x5 m9 Y4 c: G: T0 r' h. G3 r6 I
   plt.ylim(0,100)2 a8 m' ?+ l6 {# S1 A8 n$ w3 S
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')) W  h- ?. z3 _5 X- _5 f. I
   plt.title('童芯派聲音感測器讀值')
5 {! a6 y' w4 x( X: L- g* }9 Z0 [   plt.legend()
1 X: L, E# |" J  F7 O( h2 e   plt.show()
& v7 ?$ F- C8 k; u+ G    plt.pause(0.01)* u3 I! m7 H: u8 h: d7 P8 o

+ ^! p/ @# t  g- p+ Z. R* C* i% T+ p+ T! f. Y8 W! r" J) @
matplotlib 多圖表顯示  k8 K0 e* U" L5 m$ c- v
. D) o+ x5 X9 i  h4 {" k  c1 r
from matplotlib import pyplot as plt
/ Q  d+ s' L/ e* e. _  S% I3 pimport time
: m5 J/ Q0 D8 p- \7 Simport cyberpi
& k: U6 Z1 l4 @4 o7 ?0 A$ L* a/ [
( B3 f( t& w! T" [* U' Vloud_list = []
" L' k4 u& ]3 X$ Xbri_list = []6 ?  ]( N6 f4 K& ~% }: h
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體( C6 V/ m' S3 D4 \& P
plt.ion()" ]! g; w5 R' R( f
plt.figure(figsize=(10,10))& `$ K- P2 V% Q+ N( E, t$ Q
plt.figure(1)
1 [* w( P6 I+ h$ nx_locator = plt.MultipleLocator(5)* r) D4 _6 `3 d# ]3 {
y_locator = plt.MultipleLocator(5)& @, t' x+ J& o6 B; |
while True:
1 Y4 A7 W4 m% f' l; d( S0 P( L! H   loud = cyberpi.get_loudness()" k0 a$ G/ w# Z1 T4 s
   bri = cyberpi.get_bri()* b0 r# a7 }/ {
   loud_list.append(loud)
8 e' G6 @$ O( X' @/ b' o   bri_list.append(bri)# h% s8 E: w6 c9 \1 o2 S- W# Q
   battery = cyberpi.get_battery()$ _$ `4 X5 }8 E8 M) f) q
   size = [battery, 100-battery]* D2 V  O2 a' n! ?
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']& x2 n! h& Z9 [; }
   ax1 = plt.subplot(221); ]; I6 {! m7 B5 ~# L
   plt.title('光線折線圖')! x) n! C8 y/ ]; L* T* J
   ax1.plot(bri_list)
0 s3 @  X* Q6 T/ ^( }   ax2 = plt.subplot(222)0 d+ h! F! Z2 k+ N
   plt.title('聲音柱狀圖')  o9 F6 g6 p  L( Y: u
   ax2.xaxis.set_major_locator(x_locator). l, r8 {$ Q" ^! x7 b, h) P
   ax2.yaxis.set_major_locator(y_locator)
3 b7 p8 A8 F4 a3 W) v: W( ?4 W6 J   plt.ylim(0,100)
3 B: M$ L- n8 C* b+ U3 z  Y   ax2.bar('sound', loud)' n& l! C! C  H3 D: S9 l
   ax3 = plt.subplot(223)
" o3 _. J$ P6 a   ax3.xaxis.set_major_locator(x_locator)% Y/ E5 `7 T7 m5 N2 M* E
   ax3.yaxis.set_major_locator(y_locator)
7 B* t" H% d" ~+ Y/ p   plt.xlim(0,100); M1 w3 ^2 [- ?# I
   plt.ylim(0,100)
! F" N8 s2 _1 q7 f0 S! s9 w/ J   plt.title('聲音、音量散點圖')& z0 b& E' U* q4 t
   ax3.scatter(loud_list,bri_list)
9 L( {1 C9 ?1 P; y7 O+ M4 F3 X" A   ax4 = plt.subplot(224)0 e! [7 |6 W# U6 L
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
, H: g  G, ?# V" k   plt.title('童芯派電量')
( y6 l% h! Z8 k   plt.pause(0.2). ?2 ?4 @% t5 A/ ^. P/ M; E# C
   plt.clf()
! m: j1 Y) L. `$ r! I   if cyberpi.controller.is_press('a'):, |7 l9 x% B( q  a
       break5 R* j6 ?2 B3 q  s
   if len(bri_list) > 500:
8 \! a9 E- |2 F- u) G       bri_list = []$ {& s; u8 `- O: a! a. A
        loud_list = []
% J2 z, n! c3 o; ~: N2 Q- N2 [
' D0 I! i$ U8 Z

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2024-7-18 05:49 , Processed in 0.030201 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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