圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8082|回復: 0

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

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

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

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


: r% y7 n. H0 e
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    # X! w. ~( A2 u  k; y, x
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)  x9 P/ o( R. @1 U' a: W" b2 A' O" c
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
      G5 q. J0 F) y9 `
- M6 r* z( K( U2 i/ g
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)% e  K0 ^+ s6 W3 q  E
& K6 c' H3 Z# d' w
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。9 U- ?5 I" X4 e1 ]
1 l. C5 ^6 r* D, _
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    + i4 {5 V+ q/ R5 K  a( k& r% m
4 b- `1 F- `5 ?( ~# [& y% V/ v
3.童芯派第三方編輯器程式設計準備' `1 V$ U- A& ~& }
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。3 F2 q2 w* w/ t2 A* A
0 t6 h; y, L' R( j8 E  S- c
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。7 ]# n$ X' j) p7 M- S

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


# v( j: F( {  Q* R
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    ( h; K4 `7 G, C: m  O$ k3 u

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

$ [' l0 E  [- L
查閱cyberpi API文檔見:童芯派API文檔
! W6 Q0 \* @  {) i/ u: @
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    ! b" {% m9 n0 d9 Z

" D) S4 D* C, P2 o, n9 @/ I
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

4 l' c4 C& {$ r: h, b% B5.一些程式設計案例
5 I& X) Q, r7 Z# d7 J- X* X7 l" X童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

9 P( f0 V4 E* `# S* P0 L$ D+ p功能介紹:
' j+ A8 s; _  w! c6 }5 {, a利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。/ _2 u" H% F$ z: ?1 R% E
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。7 g6 \1 c) G: b# }9 ~, F9 H1 u7 I
結合藍牙模組可以實現無線滑鼠的功能。( C& B2 Q& }# w8 X+ ^
% G* c; [* U: L( o6 M+ y$ Y: \9 t( F
from pynput.mouse import Button,Controller
8 X" x4 u" v2 mimport cyberpi5 \" u" n8 Z; l; v: v
import time
- X1 i+ G8 q0 z , S/ E! I' P$ }) ?/ X! \$ L
mouse = Controller()
* {2 W0 n  m# ~ + P& U; D- B6 K2 G
while True:
5 z. L+ d) ?  d   if cyberpi.is_tiltback():% |* b- m' j- A; u  n1 o- O7 C
       mouse.move(-3, 0)
4 B6 f" `2 M2 C9 R/ d       print(mouse.position)
) h$ e- m$ |( T1 L( g. l& v- T   if cyberpi.is_tiltforward():! w9 G$ T" u. ]
       mouse.move(3, 0)
3 G. z( y1 l& {+ \   if cyberpi.is_tiltleft():
. J) U  O- D0 g) E; j( X       mouse.move(0, -3)2 `- M0 k' o) Q  `! [; U( Y
   if cyberpi.is_tiltright():% _" h8 w  o; ?7 r* V8 H8 \3 L
       mouse.move(0, 3)
! w5 Z4 i0 \* D0 P   if cyberpi.controller.is_press("b"):$ m1 P2 `0 p1 G0 u6 y
       mouse.press(Button.left)8 a2 e- d2 E0 J! X  r$ j+ Z
       mouse.release(Button.left)7 k. I0 @9 g  m( m
       mouse.press(Button.left)
) c  F5 E7 Q% H% i4 P8 I2 d9 Y5 N1 {5 y       mouse.release(Button.left)
# p+ |. o4 o( N$ {% j. r  F3 ]   if cyberpi.controller.is_press("a"):" g: l% N* z! v" i2 D; O8 p+ Q
       mouse.press(Button.right)) b9 u8 }' E. q5 U6 A
       mouse.release(Button.right)2 Z2 K& R3 P! k+ a# o: I5 k
    time.sleep(0.01)
9 ?( D) a5 X# X7 `- f1 s
$ t" U, Q1 E, A4 c; y  x9 X- d  {  h
語音打字器

+ X( i2 \4 O1 R8 y- G0 I! k5 g功能介紹:
( `! s5 k. e/ q9 R利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
9 y7 }" U- |2 z2 k6 q& ^/ b將語音辨識的結果通過pynput在文檔中打出來。; }, o& ~6 E9 P6 _. k/ W  L
該程式目前只能支援英文。
* E5 x" i- R& }5 W% e
9 V/ D6 l3 I7 a% ~* ~! w7 \import cyberpi
1 _, h" A- p4 M" [3 n% Hfrom pynput.keyboard import Key,Controller
8 ^( Y8 f$ I4 Nimport time
1 j; V- C$ i3 {+ |( ^/ ^9 z2 P
/ X. k$ j1 m$ Z  C' I7 c0 qkeyboard = Controller()7 _- d: C. I/ |: [
cyberpi.console.clear()
' Q9 \5 h4 o& xcyberpi.led.on(0, 0, 0)
3 E6 I0 f6 y6 Q6 scyberpi.set_recognition_url()
! [2 ]" F% ^9 Acyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
% `2 m) @4 j7 B% l4 X/ wcyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
6 P: Z7 `( u3 S% B' Q& L8 Swhile not cyberpi.wifi.is_connect():* M# W! l% W* K: C
   pass3 s) p! l' B- Z9 {2 i- l  J* D
cyberpi.led.on(0,0,255)
0 c& }9 {: b/ O; n  z+ }) Jcyberpi.console.println("WIFI已連接"): [' j4 C3 p. _1 _7 Z0 \" r, W
cyberpi.console.println("--------------")
; S' B2 v, ]" Z, B& B: _. D9 y. k9 kcyberpi.console.println("按下A鍵開始語音辨識")2 C) l8 ?# n) ?8 @4 V
while True:& F* B6 G% L- ?: D; O9 q$ P6 L8 v* `
   if cyberpi.controller.is_press('a'):
1 P4 Y7 [' o9 y4 u* x       keyboard.press(Key.space)
- `0 ]4 W* ]; W& q7 `( \8 m6 M       cyberpi.console.clear()9 v  g9 Q9 s* j/ M/ A# }  v2 z: N
       cyberpi.led.on(100, 0, 0)
; J6 y! W  ^' L- w. e       cyberpi.console.println("開始語音辨識")0 m! A: U% q9 |
       cyberpi.audio.play("switch")
0 w! E3 \4 x( r- o3 Q       cyberpi.console.println("--------------")# c+ _1 W2 [5 w
       cyberpi.cloud.listen("english", 2)- K" q& n( ~9 [$ P
       cyberpi.led.on(0, 0, 0): G- R: F* A  u' q
       say = cyberpi.cloud.listen_result()
/ o* H8 t) \1 I) H8 F5 v' i( c* @       cyberpi.console.println(say)7 s7 g0 `  [9 [4 }9 f" t
       cyberpi.console.println("--------------")
1 [8 N, v1 N$ `0 o' N% m       for i in say:
2 h) I9 G( G% D7 I9 z            if i == '':
* K% j7 j8 x. o$ {                 keyboard.press(' ')
& E- k4 p7 o& u6 x: Q. v7 n5 _# C            else:; \( S/ _& s0 T9 N3 H4 j% m3 G/ i
                keyboard.press(str(i))& Q8 U/ F. V. t4 K5 F
                time.sleep(0.03)
# t& f6 G1 j. O; I% i+ y

1 |8 K! d; x& @0 k3 M( c. P8 x- ]matplotlib音量柱狀圖
5 I, U4 L% F$ J% _# E. X' w# l1 {
import cyberpi
0 j" }  a3 ~& Q* q# x% A8 pimport time/ I. L4 H! m0 j/ S
from matplotlib import pyplot as plt
& j9 o6 ?' s9 \: K
; T& e' o  J4 H1 w3 `0 Tplt.rcParams['font.sans-serif'] =['Microsoft YaHei']! R; D4 _7 v6 v/ @
plt.ion()
7 Z) e6 n4 M7 e  m% u2 x7 A' o " i) j6 x" A0 h; P/ H8 Q
while True:0 ]- j* [$ }" W- g# d. C0 a
   loud = cyberpi.get_loudness()7 G5 q/ H* |9 k
   plt.clf()
' r3 |) U6 N! N- s8 ~& e( b! B   plt.xlabel("數據名稱")
9 C! k/ o9 f) G6 k# A) B7 z$ E   plt.ylabel("音量讀值")
% k9 ^/ ~- l2 h! H3 A/ `& x9 _# ~% P   y_locator = plt.MultipleLocator(5)
; z' @5 c% l, l   ax=plt.gca()
+ n% C/ o$ ~$ J( B   ax.yaxis.set_major_locator(y_locator)* s- D* m# @9 R: X  G0 z" u
   plt.ylim(0,100); m7 e" V$ l9 `: O
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
3 w/ C3 u. M3 j0 G   plt.title('童芯派聲音感測器讀值')* I2 o- D. t: P. N
   plt.legend()
  W4 m$ r& S& P. K0 J0 a7 }8 J- N   plt.show()
0 Y2 g& B: \6 v- w0 D    plt.pause(0.01)& |& N5 m2 @! S+ L$ Y" O5 o

1 n4 [7 J0 V. F/ q: C! D9 B' h4 F' I  T
/ o. e  ~% ]' ~9 v0 m3 zmatplotlib 多圖表顯示
4 N3 h9 `* d$ Y7 I( M

9 j7 m: ]3 H8 _, }: Q# N; ~/ Sfrom matplotlib import pyplot as plt- X* P$ f7 |6 n0 u/ [$ X+ Y4 ?+ e
import time
9 D& S, k, ^8 e  O: Bimport cyberpi
$ n* O7 e! {. | ) N( N5 T2 D! p* `7 y
loud_list = []
$ N$ b5 Y% G: B/ Hbri_list = []
' I" Z1 t2 O9 A4 v0 \. \plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
' s$ U6 b' m1 Kplt.ion()# I1 T. B0 v# H1 g+ n
plt.figure(figsize=(10,10)), f( A1 O( A' N) ~1 a
plt.figure(1)
) e% n6 I2 x& B# S) _, P7 s1 mx_locator = plt.MultipleLocator(5)
3 M. X4 ?2 l9 l3 Sy_locator = plt.MultipleLocator(5)
  C" ~. A1 j( M# a& V6 Fwhile True:
* _: f: y4 K! z   loud = cyberpi.get_loudness()7 T: }) F3 d( `* B/ o" R* o$ H
   bri = cyberpi.get_bri()
: [! u% g) E$ L( K: c" R' h   loud_list.append(loud)) z8 ^6 Q; h: d  t
   bri_list.append(bri)
  I8 G- u5 I5 p' a) _8 }* M9 k   battery = cyberpi.get_battery()
0 I( p2 M. S( o3 A1 F" e! M   size = [battery, 100-battery]
5 i$ t9 K: ^1 D% |% Q0 J. K9 D   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
- y/ X' r: `" Z$ |5 [9 ]* u7 i7 y* B   ax1 = plt.subplot(221)* Z8 ^1 h8 p0 u1 w8 _2 _  v
   plt.title('光線折線圖')  W1 R. H( W) k- \, {, `
   ax1.plot(bri_list)8 X6 D- m! v: \$ z! x  Z
   ax2 = plt.subplot(222)" [/ `' d. X! r, k( y) i7 I7 \: |
   plt.title('聲音柱狀圖')
# U& t) O  a) k8 T) |   ax2.xaxis.set_major_locator(x_locator)
2 r% [1 g' @) F# ?; ?+ _   ax2.yaxis.set_major_locator(y_locator)+ {8 i  \% h; o/ G
   plt.ylim(0,100)
* U1 O2 ~1 ^/ q' i% t  T   ax2.bar('sound', loud)
+ {; N; P: ^* j( Z7 h* |   ax3 = plt.subplot(223)
) [9 M" W, G2 w% E, n7 b   ax3.xaxis.set_major_locator(x_locator)1 H6 H! A; [3 `/ ?* C) F$ E
   ax3.yaxis.set_major_locator(y_locator)
  K  k0 y6 k. F- D1 V$ [$ a( _   plt.xlim(0,100)* f& [) R) p( L
   plt.ylim(0,100)
1 w! Y( M6 ]& t   plt.title('聲音、音量散點圖')
8 K9 a! D: ~9 o( W: L4 U   ax3.scatter(loud_list,bri_list)
. u" S6 q  g2 a9 P% w3 l   ax4 = plt.subplot(224)( ]. T$ c4 }$ C* X' M; z+ _# G3 C
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
3 [- E6 _: X* i! z  l( h' E' Y3 @   plt.title('童芯派電量')* o1 B0 Y$ G, }) E* V. N+ X
   plt.pause(0.2)) N5 y9 m* F( ^0 G9 B: [; X% H& N
   plt.clf()  j: Y- ~% r/ H% l1 J% h$ z
   if cyberpi.controller.is_press('a'):% j  T0 K9 `) u) ^
       break% m, n/ A5 u7 |9 I- j
   if len(bri_list) > 500:
- P& w9 b0 H' T! c9 E1 C$ {1 ?* Z/ }, B( z       bri_list = []; b/ Q7 P6 ^$ j- R+ U
        loud_list = []3 Y8 E; c" K+ d! S) t

1 j% k8 C1 Y" x" J# t* ~- l" t# H

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-9-18 10:03 , Processed in 0.026615 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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