圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 7218|回復: 0

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

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

8 {: Z7 P# S5 Z+ {- L/ d4 z1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。1 |1 O! S0 G& M6 a" T9 t% w+ w

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

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

1 _1 |9 ^6 c# ]2 D- h0 V" S1 T
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。: T8 V+ C. U: A: D
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    ' [7 ~9 C" U$ }! k/ g. f5 k7 @2 M( h
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    0 W5 X% d+ X% c9 X3 K- H3 a

* _" ?* G6 r; H2 [0 h' Z* ]
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)" x& ?8 V# k$ ]% H0 o# Y  K

* g, `( _9 _/ W) ~8 K0 ~6 t8 p1 U
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    1 O" J7 a/ }0 }& ]
( `# @) Q9 c0 q% w4 ^2 e0 r
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。9 @$ D7 l  @0 [5 y

" B9 y$ L0 U) D! j3 b3 l3.童芯派第三方編輯器程式設計準備
; R$ h; i2 d! n0 X  a5 b
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。! {+ y" w( B: f- A  z' u

7 T) J4 h! I2 S5 j
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    4 w& J) V, t$ R; y# l' ^% l( q2 X% r

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

/ ]8 {5 e$ ?5 U3 M# D  g
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    1 ?9 Q' S0 D0 V/ K" ^  j; b" p

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


$ t! g0 F# n+ V2 ~; x9 b
查閱cyberpi API文檔見:童芯派API文檔
( `6 |8 K" `. }1 i3 J- D
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。1 x# t2 j2 E/ ?
2 |; ]; s( Q9 s9 |+ k4 F
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
  ^/ K, H3 [9 U7 w; u/ y/ m/ e
5.一些程式設計案例5 ]5 ]* m0 b8 ]6 y6 `$ `6 g
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
/ D+ c* a; J' m/ D3 @& ]
功能介紹:. F- A8 h# G' P4 \
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
3 V! {- D& f& ^/ j( |通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
% @- i0 K& Q5 ^3 B# i結合藍牙模組可以實現無線滑鼠的功能。3 i9 e+ k# e: n

) T2 [* J0 }( Zfrom pynput.mouse import Button,Controller
1 v, O# H" T/ N6 bimport cyberpi: B7 l* _+ j& f. C
import time" I/ J* G1 C- M+ T5 _& S

: K' N! n' X7 z& j. Qmouse = Controller()2 H4 v  g5 n% A4 x' p, g7 r

4 r! d, \( C: d: J( f2 swhile True:9 k) W' M" k9 |) |
   if cyberpi.is_tiltback():
: Y! L8 F0 ^7 D, @& {+ F4 O* o       mouse.move(-3, 0)
0 L; i, e$ B4 D       print(mouse.position). X: u+ A: o& y* m
   if cyberpi.is_tiltforward():
  [; r7 ?1 n3 B8 q" p6 @       mouse.move(3, 0)! o* H+ m; a6 P' I
   if cyberpi.is_tiltleft():
# b; `  x/ `2 T1 ^: i' N7 @7 O       mouse.move(0, -3)
# |; l8 h( r( V$ u( v; F  g. z- w   if cyberpi.is_tiltright():5 J: c" j' x# p& X# o) Z
       mouse.move(0, 3)5 F5 O3 O4 q# r6 _$ ]
   if cyberpi.controller.is_press("b"):
) J" C9 ]  x! s# G       mouse.press(Button.left)7 Z: _; s! X2 j8 X
       mouse.release(Button.left)
) P# V) O% q( I( \4 v# g  A9 j       mouse.press(Button.left)/ t& ^$ v5 n: m- F6 |  y: V/ _+ k
       mouse.release(Button.left), A$ e1 q' A& u6 q% e- O/ l0 [
   if cyberpi.controller.is_press("a"):8 f/ g8 O; ?( j
       mouse.press(Button.right)
2 R% a5 @% T9 v, e+ e$ t5 g- }! Z       mouse.release(Button.right)
7 u% [! s/ A6 V1 c* P    time.sleep(0.01)" a# M6 C% X6 @% B* N9 j7 g9 e
& o; O; V+ T: |2 i; K$ G* _
4 n; j: }! _6 ]1 B9 f* R9 n- }
語音打字器

# E7 w' L" p$ ^3 f  H5 A/ |功能介紹:
  i5 L/ I) K/ ^0 E利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。2 j2 u8 ~, C* h
將語音辨識的結果通過pynput在文檔中打出來。% ]+ J' G+ I" ?2 C6 N2 C" ]8 g7 r) D
該程式目前只能支援英文。
- J. F8 P8 |$ N) I2 M$ H
! k6 j4 x3 ]- i% G: D: _import cyberpi2 ]$ [* X/ X: K0 r( {1 Q
from pynput.keyboard import Key,Controller
. D, Z. z$ I0 z  g* _% i- i6 Iimport time
. [, F! `- x6 E+ s3 V( U & G# D3 }: x, T  L: A
keyboard = Controller()
9 O" H' k% k3 ?/ d* pcyberpi.console.clear()
6 N2 ?" c  M0 B* o9 Y/ b5 Gcyberpi.led.on(0, 0, 0)9 R* g9 y3 j* i' K
cyberpi.set_recognition_url()
$ }" Q3 H8 W& P+ r" Y3 Z: Bcyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得" f6 [5 |, e, ^' G; \0 T1 S: L* j
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
" V) n; z& A$ R0 }# Qwhile not cyberpi.wifi.is_connect():
4 R8 ]. c8 y) l3 d* Z" W" ^   pass$ g9 S% E5 w5 j0 p+ o, y, m
cyberpi.led.on(0,0,255)
9 U+ R3 G, r/ {" J( Ycyberpi.console.println("WIFI已連接")
' ]8 s# k) U2 p1 Acyberpi.console.println("--------------")
6 }4 V' d1 i. ^  ^cyberpi.console.println("按下A鍵開始語音辨識"). [" x) j& g+ o
while True:; n( r1 ?: u. g( W
   if cyberpi.controller.is_press('a'):
; R$ u5 d) t* B( T       keyboard.press(Key.space)( p1 w0 w5 @& i3 ^8 H: p1 D- M
       cyberpi.console.clear()
% E* c) T/ y7 k6 t2 C+ T! J       cyberpi.led.on(100, 0, 0)' w& s1 _  T0 f
       cyberpi.console.println("開始語音辨識")5 ?  p* Z# w3 W: ?! x/ N6 b$ n% a9 |' k
       cyberpi.audio.play("switch"); b/ ^1 R1 S" n7 L. `
       cyberpi.console.println("--------------")! k, d/ ~2 w" y3 I/ {
       cyberpi.cloud.listen("english", 2)
6 q0 P, R# K* D0 U8 e       cyberpi.led.on(0, 0, 0)0 [+ _" x" Z0 E8 h
       say = cyberpi.cloud.listen_result()
0 }! |7 G' S9 L( r# v       cyberpi.console.println(say)+ c$ h0 Q( e9 \! ]2 j$ p
       cyberpi.console.println("--------------")% R6 k- D6 h7 _. \$ v0 J1 r3 _3 g. a
       for i in say:
  R. u+ y/ W1 S+ B0 v; d. q+ a            if i == '':
/ x! w( p/ z1 p* s% V  W: C+ C                 keyboard.press(' ')- p6 j9 b7 [. O! c4 S
            else:& \; R! V% \6 I0 j/ h; n1 }* B1 [9 A  F0 s
                keyboard.press(str(i))
9 D# j! h$ ~6 I- `" U, ~  w. |( [                time.sleep(0.03)
; c5 D. p1 L0 S, Y1 ~3 {# \$ \
  S- D5 u7 Q& h/ C
matplotlib音量柱狀圖

/ \7 @' N0 H$ a  R+ c+ Pimport cyberpi5 |7 ]( {& c7 ?* c8 J2 y7 p; d
import time# V7 O! ~2 e" t. Z" N5 R
from matplotlib import pyplot as plt
7 c2 F* f& v' A2 M " f2 o- ?" R- \" L1 f: _
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
9 S5 g: _3 }: B$ Y7 c# mplt.ion()! X& U+ k0 O' m( ~
2 L, v/ \/ [" }: r; n7 m' t
while True:" ~* A4 b4 e( y+ |. n
   loud = cyberpi.get_loudness()2 `4 E+ Y  I$ t/ M$ L* u
   plt.clf()- C; o2 H0 u- k; w; [
   plt.xlabel("數據名稱")
6 i3 u0 n0 E4 s   plt.ylabel("音量讀值")" s) E5 T8 }4 e6 G& n; h7 b$ K
   y_locator = plt.MultipleLocator(5). \3 H' e# r% V4 Q( w
   ax=plt.gca()
4 W' e9 D: H6 j3 s5 t5 B9 A( ~   ax.yaxis.set_major_locator(y_locator)/ Q) D1 F" X8 e3 E4 P& D
   plt.ylim(0,100)
# o+ i; @/ p# J# D   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
$ [6 o) U. {9 n4 o5 l2 R% q   plt.title('童芯派聲音感測器讀值')2 D. F) B6 o' M1 A+ T
   plt.legend()
$ U  s6 w6 _1 |2 T* O) o0 C   plt.show()
5 l( j  a: s; `* M1 }    plt.pause(0.01)3 d3 K: y% p3 j  k( E5 H
9 r/ e, e" {3 i3 w" d' g
& s3 N5 j' M8 l: _' E, K0 }
matplotlib 多圖表顯示
$ i: G9 ?5 W! ?+ B

+ b; A8 T' [3 b/ ^8 afrom matplotlib import pyplot as plt
9 D/ T" ]- ?+ y5 ^/ {& aimport time* ]; j& o: h& _# V0 p
import cyberpi
) ~$ c( t7 P/ S/ z- V; H : }' a' L) r7 }; q3 q$ x9 p
loud_list = []7 c  D7 G2 s- H, O+ l$ G
bri_list = []
/ c) D3 r$ p' s/ ?5 Iplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體/ y# D  P2 u+ `; @8 i% Y
plt.ion()
, L1 u) k+ @7 D8 a) f- jplt.figure(figsize=(10,10))
6 v7 r# d) k; j* b1 y# Kplt.figure(1)% K4 I( a; r& B% |" A* f: V% v
x_locator = plt.MultipleLocator(5)- m; z$ e# e, ]9 e% F& x9 _0 N
y_locator = plt.MultipleLocator(5)* }: S( t$ B; f2 M2 U$ h
while True:4 L' H. P4 k6 l# l
   loud = cyberpi.get_loudness()) ?; t! I5 I- t
   bri = cyberpi.get_bri()) L' S  }6 R1 Z; h
   loud_list.append(loud)
# y/ s( m* D  H# }   bri_list.append(bri)
: r9 ]! a" [. Q6 A   battery = cyberpi.get_battery()
5 R# ]' _& {- i# o3 k9 u   size = [battery, 100-battery]- u9 ]( v3 c# }* p8 C
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']' J! f- z2 ~% c6 b2 n4 [5 W3 Z' R
   ax1 = plt.subplot(221)6 t- O+ W! R0 d0 b8 ]8 Z
   plt.title('光線折線圖')/ }. Z4 z7 i. l1 S" T
   ax1.plot(bri_list)7 L# I/ }8 W- x* P. b8 @
   ax2 = plt.subplot(222)
. z; ]& T% D; S   plt.title('聲音柱狀圖')2 Z& v$ e8 i) V* d& H2 O' V2 }1 r
   ax2.xaxis.set_major_locator(x_locator)
% S$ q% [! ]" P4 c7 Y+ e6 Q   ax2.yaxis.set_major_locator(y_locator)6 }$ J/ s" v) |: w. z: f( h
   plt.ylim(0,100)5 v* I* A! ^4 I. s5 I' L
   ax2.bar('sound', loud)9 v8 v3 s8 r* _1 C
   ax3 = plt.subplot(223)
) G/ g; p+ h7 G2 n4 P8 [   ax3.xaxis.set_major_locator(x_locator)
6 s! D/ |: h9 T2 ~1 E9 `" y   ax3.yaxis.set_major_locator(y_locator)
2 y+ E% p$ R1 |3 J' P8 @/ \   plt.xlim(0,100)2 x1 D5 L, R3 U- w1 S( j- g
   plt.ylim(0,100)
1 {  I. t- d2 n! M' g$ ~' z   plt.title('聲音、音量散點圖')
1 e' w6 I7 ~2 o2 N$ W   ax3.scatter(loud_list,bri_list)1 e6 `, [) o, M8 w- V1 B
   ax4 = plt.subplot(224)
6 U3 ^; M# ?: \0 b- H* w2 V7 k   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})# r6 s" }% j7 T0 h8 ~
   plt.title('童芯派電量')/ s' Y0 D2 @$ w: a
   plt.pause(0.2)
, ?; a. w4 w" k5 C( D. c   plt.clf()" s. t! Y+ Y- y8 M& T. N
   if cyberpi.controller.is_press('a'):
: P1 i) P$ ^: J$ x7 {. d1 ^. L& z       break
! z5 y4 Y, K- O  z1 D   if len(bri_list) > 500:
4 j( D+ q7 D0 O5 e       bri_list = []& L/ {+ ?% n' Q: |
        loud_list = []
+ z+ ^6 s4 W" u% f# p
7 p" ^0 O% d; |+ b5 k: Y: D

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-2-19 06:59 , Processed in 0.024153 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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