圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8449|回復: 0

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

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

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

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


1 n% V" l) u& P3 p! x
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    ( G$ a' M, d9 m$ B% I
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)  J9 o. i/ B0 N) i
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。  M$ @) y  a4 e, A
. e' s3 o- [4 E
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)+ _3 n+ |" J: s
) I% B! s/ l& p) @1 C0 Z, H
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    , D8 }* k' S' M$ |" O

& H( s4 _' X, h& e* w7 o
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。6 A9 c% I5 N( g# B" p2 v7 q( N
. `5 |0 T( S$ B6 Y
3.童芯派第三方編輯器程式設計準備
- B8 `' D) L0 r  y1 o* j2 }
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    # P# c* J; Y0 t9 }' w1 |- m! D
; F, t: {' g- g- O) a
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。9 I# ]4 G7 P- Q! {) H1 S% a  T. t2 s

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

/ @+ t3 @: C2 y0 q- {+ i) ?9 a2 K6 U
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    & h) J7 K# q( z9 A, Q  H

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


: W, |/ ?/ s  j8 s1 K2 M9 L6 Q9 s
查閱cyberpi API文檔見:童芯派API文檔

( {' s& \- a- N. K7 ?
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    ' M1 ?1 H" L! H, h- `2 E! V

' Q' |/ q% E3 W0 u+ r
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
; j1 W3 L) h7 T3 z9 a, D4 P
5.一些程式設計案例$ C2 b# o+ J# M+ Y
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

! h* g2 P( ~; W* ?' Q' ?& [功能介紹:
* H' z' m" E& w5 e4 J+ U, f# }利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
: |" ?# l3 Q/ M) s通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
$ ]; l' |; e6 P' E* u結合藍牙模組可以實現無線滑鼠的功能。+ p) E5 B! P" _% O' s9 |4 h4 K
% S% G# @/ A) m* \
from pynput.mouse import Button,Controller
8 b- S4 E: w9 I+ \+ wimport cyberpi
" s" ]" h; {, bimport time; C8 [- k  S: E. p
4 [/ M6 `; i4 F" o
mouse = Controller()' }& A2 _: I! `# U
% M$ F, A6 ]) r4 I  S+ ]- M2 G- ~
while True:
7 u/ a7 l" g  N( {   if cyberpi.is_tiltback():
. J% T2 [( _7 d# z& p2 k* @       mouse.move(-3, 0)
# k9 h4 H: X% J  m       print(mouse.position)
5 b0 O# z; z! C0 Z  S$ ?  H3 Y   if cyberpi.is_tiltforward():
7 C& E$ I" O  p. K       mouse.move(3, 0)
$ T# k2 I) Q& o. g* h   if cyberpi.is_tiltleft():0 T6 x) Z8 o: f# N$ C$ g3 f
       mouse.move(0, -3)' s1 z7 O& |2 m4 M
   if cyberpi.is_tiltright():
+ n( N6 I; I2 \# F9 G# {       mouse.move(0, 3)6 I' P$ J& z) h( l8 h
   if cyberpi.controller.is_press("b"):0 L0 b- j/ h  G& y( k3 c% X
       mouse.press(Button.left)
/ v# L, t! F) W8 m       mouse.release(Button.left)
. B4 A0 z5 x" M& d! ?# v* ?       mouse.press(Button.left)
6 R: ?! i8 ]* p4 H       mouse.release(Button.left)
- @. K4 K5 Z4 |9 Y; |' g   if cyberpi.controller.is_press("a"):
! l% t; S3 d- T; b       mouse.press(Button.right)
; A# O  Y4 V7 i       mouse.release(Button.right)! C' Z" i5 J1 ^; A, q0 o
    time.sleep(0.01)
- C7 C9 a; Z! {' m3 Z8 w* U2 B- m
! L: G+ q; i' d" E' x1 y' U$ F5 k! u
語音打字器
; K5 ]! M3 \4 v2 z
功能介紹:
+ g( G: x( K& b# Q3 R/ T利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
9 V, `% f# o- x* g1 G: U將語音辨識的結果通過pynput在文檔中打出來。
4 A; i) V7 d6 [該程式目前只能支援英文。
" ~& |8 c+ r& f) t7 U$ N/ i* b8 H
) }7 R! ?, j+ rimport cyberpi: J" x- s; G( v/ [$ `
from pynput.keyboard import Key,Controller) z4 w; q1 v7 N7 ]8 d" E* z& k, F
import time
: B% O  K. z6 s& _+ p. Z+ A
8 L  x/ B' {' f' k+ ckeyboard = Controller()
& U( c) Z, F0 c6 }cyberpi.console.clear()
. ?( Y) G- f3 e; y, O; N# gcyberpi.led.on(0, 0, 0); ~# C3 u: X- {5 V  B
cyberpi.set_recognition_url()1 T" u! f) \! _
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得- s# l% O0 c% \4 t- B, E; \
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")3 [/ e9 o! p; V% W% u
while not cyberpi.wifi.is_connect():4 Q0 d$ a9 g3 P/ v, z
   pass! \8 v' _3 h1 x1 ]+ L# ]
cyberpi.led.on(0,0,255)
6 j6 X6 t2 \2 T, Q, L0 Acyberpi.console.println("WIFI已連接")
4 A5 n- ^; h( U5 g- H. f' [, \& ~cyberpi.console.println("--------------")- r1 v$ _5 v* V) L* i, X5 T
cyberpi.console.println("按下A鍵開始語音辨識"). L8 `, o- Z% I5 x% @* x
while True:: F, Z0 [9 g; x+ [
   if cyberpi.controller.is_press('a'):
2 [) U0 u: n; A       keyboard.press(Key.space)* ?  b  \1 f6 r3 M! w2 q5 o. u. X  W
       cyberpi.console.clear()1 s$ r/ \2 o6 x# D  V
       cyberpi.led.on(100, 0, 0)& A3 w4 V  G7 J- \
       cyberpi.console.println("開始語音辨識")
( r9 Q2 G- B( s4 U! N- b       cyberpi.audio.play("switch")
8 k6 P5 m( P% n9 G8 J9 s       cyberpi.console.println("--------------"): U3 }. R: R2 o4 V
       cyberpi.cloud.listen("english", 2)$ v4 |" a4 q0 X2 c, q) L% P
       cyberpi.led.on(0, 0, 0)
( i/ }/ c+ c/ W$ V# [' k       say = cyberpi.cloud.listen_result()
* f1 q0 @" q4 d) J       cyberpi.console.println(say)8 \- m: P5 I1 P
       cyberpi.console.println("--------------")+ l0 Z( G' ^- G0 j$ P; p
       for i in say:# w& k2 B9 d' t1 m9 o
            if i == '':
. D( }6 p7 i: n& @6 z( G8 A                 keyboard.press(' ')# K4 T4 s% ?# |/ l/ v$ \
            else:% d2 ^1 i; c1 Y6 G7 z* ?9 P- D- z
                keyboard.press(str(i)). W# b9 A- S+ l" K$ ?- c# l
                time.sleep(0.03)
, Z1 p1 `" a9 I) c7 ?6 W; c
; w1 l: _" H. v( L
matplotlib音量柱狀圖

0 t+ R3 P; v' {1 i0 W& ?3 Rimport cyberpi
+ i" \% ^% u7 T( k7 D( [import time5 l# L# A( e: u9 M
from matplotlib import pyplot as plt
! ]/ S9 L- S  j: H' \) E ) y; V# J  @$ ]- N1 V* f( Y/ ^) d
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']9 Q! q8 |4 Z2 f
plt.ion()$ f) c* J9 {) a& |% [
/ z& N7 I3 F7 ?" y& t8 u: s
while True:. B% Q  ~7 E6 f0 |$ _
   loud = cyberpi.get_loudness()- M, x1 k8 D3 }+ F: w3 U- t2 u
   plt.clf()7 @& _5 F' g* `4 A1 z. o
   plt.xlabel("數據名稱")/ `2 v5 o. T, a( O. O
   plt.ylabel("音量讀值")1 o3 _0 M: N; C: P
   y_locator = plt.MultipleLocator(5)" ^* k! S. o% p  E
   ax=plt.gca()
( ?9 e% J  c  `. Y7 N   ax.yaxis.set_major_locator(y_locator): }# J) j1 w! L8 g' F( p% [7 h
   plt.ylim(0,100)) i0 A# c3 v5 v, i' [% ?
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')' O+ X3 o+ b4 E% k8 I' ^; R( Q
   plt.title('童芯派聲音感測器讀值')
7 N( d5 {6 ]/ {, ~   plt.legend()! _- _- y. I. Y/ l: _( U
   plt.show(): D- k* ?" a/ A+ X) m
    plt.pause(0.01)
/ E/ o6 ]5 ]- I% I: e% F9 }. G  |; G2 ?+ C

/ R) O' b& h) N1 D2 Vmatplotlib 多圖表顯示4 S5 K% W- t! z0 o
/ Q9 n7 }; `& |# d1 T; k
from matplotlib import pyplot as plt
/ o0 O0 A3 l; E) k8 A2 g3 ?. wimport time# k! j3 g2 J) [! A4 }; J# F
import cyberpi) q) P/ F2 }, k: p7 Y2 J0 ?; W

% m+ `, p' \8 `) bloud_list = []
" B8 l5 Z4 n: t% A8 j, c7 H) @2 dbri_list = []2 O! w. U' {) j0 F) ~% p* x
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
1 a' ^7 }7 O# h0 `# j4 Y$ {plt.ion()
8 J) Q/ r& J9 ]) _plt.figure(figsize=(10,10))
$ s7 j' r! e( Lplt.figure(1), d# \- J; @8 D+ [
x_locator = plt.MultipleLocator(5)
6 Y/ O" m+ Z& J6 H. z, Y. ky_locator = plt.MultipleLocator(5)
9 b+ H8 N3 J) }, u8 s- [; }while True:
6 q% A. e' U  J) }. K   loud = cyberpi.get_loudness()
" T* v: m; {0 D+ R% d# B3 {   bri = cyberpi.get_bri(). d1 f1 I7 B3 N* ~
   loud_list.append(loud)
4 O% @) d: [% M$ d  u5 L' [! h+ S8 x   bri_list.append(bri)
' A) ^- \5 B; J7 I   battery = cyberpi.get_battery()* E( P7 l  U2 Q. x
   size = [battery, 100-battery]& u+ N, \8 v- {8 N
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']+ S3 s* }8 w* d+ Q5 z' K! I3 X+ O
   ax1 = plt.subplot(221)
+ j+ ~& {$ x7 D  [4 j( }   plt.title('光線折線圖')
5 x! E' z+ D8 @6 M* s5 M  ^   ax1.plot(bri_list)6 P7 \* G- @5 M& O4 R5 {
   ax2 = plt.subplot(222): `( K# R. K1 c+ e
   plt.title('聲音柱狀圖')$ I) l" t9 f# K9 I$ w
   ax2.xaxis.set_major_locator(x_locator)5 ?# k, p. L6 h' [( X# C
   ax2.yaxis.set_major_locator(y_locator)2 w  c4 U& A1 a
   plt.ylim(0,100)
$ E$ v, X6 y. t# Z' q   ax2.bar('sound', loud)
3 i7 B2 u; _! N; j/ i   ax3 = plt.subplot(223)4 g8 U& d3 L2 `0 B1 [
   ax3.xaxis.set_major_locator(x_locator)+ d0 r( c# a2 w! _: p. g+ ]  m
   ax3.yaxis.set_major_locator(y_locator)
- M" D# i; l6 d6 N" \# k% H   plt.xlim(0,100). x3 r: r4 N! M' r( b# a( W
   plt.ylim(0,100)
! p! D- d; }8 r. U5 X1 a# H+ A   plt.title('聲音、音量散點圖')' q6 I6 p# ~( Y( l+ o
   ax3.scatter(loud_list,bri_list)3 m7 O; q1 Z7 f) B/ x
   ax4 = plt.subplot(224)6 n6 |/ h# }8 ]- H
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
% C$ R; l. v' s& F( ^: q; q   plt.title('童芯派電量')/ S; |3 n* a* A$ m" E
   plt.pause(0.2)
; G2 g5 w& T+ }5 o5 i' r: x* L# m/ U+ J   plt.clf()9 J. u# z, {8 }# N
   if cyberpi.controller.is_press('a'):0 X/ v  e) [0 V2 G6 l
       break# V2 F) |: h6 M) D
   if len(bri_list) > 500:! G" W* J( K" N! l& r$ W
       bri_list = []5 \- }7 j6 O' X9 N9 e( F: Z+ `5 d$ e
        loud_list = []6 j: x5 o2 Q2 J8 g

( a8 w3 j5 h( h$ e3 ^6 V0 h. F

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-29 09:03 , Processed in 0.029236 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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