圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8410|回復: 0

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

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

" a0 t7 s4 r$ L% \1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。
    & Y$ u9 v0 u* n, @% c' k: [

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

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

3 n, N0 ?/ L) c0 f* z; S! j. h# C
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    - Y5 Y7 D7 z: v& R/ p( d7 {
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)& M! P1 a* y& N3 A
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    # _- M8 C7 n0 b( o9 M: [3 U
4 A7 |; [+ }" q4 I1 v
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟): m9 w2 R/ B/ }) R, n4 h
+ @6 n. R( H. @! o7 w
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。( i, O4 i  j- z8 q& v

& h* n. L$ q; x: R' Y5 g
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。" T6 V9 X: ]/ O. P6 u) N
  q# R% c0 W$ E" t$ j- z- Q  _- m# p
3.童芯派第三方編輯器程式設計準備# Q# o9 v& s3 ^
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。) n- R% Q* [% U; k6 N
: V3 S: W2 r% [/ K8 d) g
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。4 S0 a# J7 I3 B8 `- r; Z

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

% }$ N' J0 W# |3 W$ s
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。2 {& f1 u8 s( T

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


1 d: j  W/ N7 Z5 G" J: J7 l% l# A
查閱cyberpi API文檔見:童芯派API文檔
' q  G4 ~6 g1 z1 t+ N
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    - ^3 q5 m$ n. ?: o$ A0 I

+ v1 T' t7 i4 v* E
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
! Z9 R1 [, E7 I1 i
5.一些程式設計案例
& K9 G9 f! A8 w: }0 Z童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
5 e. n5 ]# ?6 Q5 K+ ?: v1 w' w
功能介紹:
+ E8 \* B, K$ k+ b利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
4 a& O) M( H9 `* J3 q& y通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。  V) M3 p8 t1 ~5 k# |8 {
結合藍牙模組可以實現無線滑鼠的功能。
; R; O9 X! q$ V9 O2 c6 M* a! ^% G
from pynput.mouse import Button,Controller
1 E) X: M  m6 P( U5 O+ a: y/ Timport cyberpi
/ S# k1 u* I" `2 r! Uimport time7 u1 E# E* @" E3 V- e1 w3 l  m
1 ?- D* R: P8 R) g
mouse = Controller()
: L) \+ f3 v4 r# A 4 E/ ^% j5 a* X
while True:
7 E: o; R9 S, X  Z   if cyberpi.is_tiltback():/ b3 D% b; Y/ `$ Q2 M) f  k0 I
       mouse.move(-3, 0)
( B1 C4 |0 t0 o+ u3 k4 d8 p       print(mouse.position)
" G' ]. P1 e2 _3 q: z   if cyberpi.is_tiltforward():
; s8 F/ [: a' F& x* l       mouse.move(3, 0)1 {/ q3 i. i3 F7 ^& w$ K- c. T4 f
   if cyberpi.is_tiltleft():. D& d, R' u, c8 @  }2 x
       mouse.move(0, -3)' s6 J/ @9 ?- t; H* G
   if cyberpi.is_tiltright():" b+ N0 Z* I$ g1 N7 y0 p
       mouse.move(0, 3)
, v/ E& t- _' U2 q. |' u   if cyberpi.controller.is_press("b"):# J" W' q' r0 k" e, e
       mouse.press(Button.left)
8 X% i4 `' _& y/ C" |' K+ z       mouse.release(Button.left): R6 l5 D* J, T2 C
       mouse.press(Button.left). |+ N! r. R$ D+ f7 x
       mouse.release(Button.left)
1 b5 s; U, U% \0 w& S6 i   if cyberpi.controller.is_press("a"):5 K# A$ P8 S# E3 P. @& n! \
       mouse.press(Button.right)7 f; S4 f4 O4 O6 u; M7 G: V- f
       mouse.release(Button.right); {3 d" s; ?8 R% ^+ b& X
    time.sleep(0.01)# ~9 M+ C8 w' P! w. B" y

: b, J9 r- y# j  N5 O4 E
( U! ^% q2 A3 C6 f; B4 A5 [6 c3 g9 @: _' W
語音打字器
! h' K, y0 A6 c% h9 `! h8 d: g
功能介紹:
9 L9 B/ a* D) u+ Q利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
* W7 R# E) p* X7 L將語音辨識的結果通過pynput在文檔中打出來。
7 `# U2 S% T3 q* ?該程式目前只能支援英文。
. T3 X: i! q" _6 C8 U6 H  z
$ n: l2 L' K/ P2 eimport cyberpi3 |5 y4 c; v5 Q4 F
from pynput.keyboard import Key,Controller$ P7 i+ M9 X: y
import time9 f1 \2 {, y4 F# j
" R2 ]6 `+ \5 j$ i& }7 a) S
keyboard = Controller()
) Q4 u# D; ^3 ?# Acyberpi.console.clear()2 g7 b* l1 ]% N' s# b5 `
cyberpi.led.on(0, 0, 0)
6 l, \8 f7 E% p# E  ^7 V) Kcyberpi.set_recognition_url(); F& T! ^' m( C( d' r
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
6 l" h$ r7 d/ H" M3 I# rcyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
! [' y) O. R; D) @' e  `. Ywhile not cyberpi.wifi.is_connect():
3 `! G# ~7 D6 f0 b1 }7 M   pass
- a( m4 z  m% j1 T8 _8 O$ T/ icyberpi.led.on(0,0,255)
# o! Y4 @4 l: E. T. u* c+ j+ v) ]cyberpi.console.println("WIFI已連接")
1 `/ x2 U& p* k; Pcyberpi.console.println("--------------")
# D3 C8 P% x$ }4 y1 [cyberpi.console.println("按下A鍵開始語音辨識")
8 F4 S8 o+ k) rwhile True:3 M- V, ?3 _0 y
   if cyberpi.controller.is_press('a'):. v' l8 f/ h, v0 {
       keyboard.press(Key.space)( ^1 @, A$ I$ q0 o4 Q0 J
       cyberpi.console.clear()
7 R6 B) l  [0 D* F+ L6 p       cyberpi.led.on(100, 0, 0)2 C. @  i6 O1 o  a& m/ S1 N. o
       cyberpi.console.println("開始語音辨識")3 S# P. y0 P+ i/ f+ W
       cyberpi.audio.play("switch")
8 E: g; y& j+ b. N       cyberpi.console.println("--------------")8 E* g8 j# ?, R: ?& Q. L; O* ?
       cyberpi.cloud.listen("english", 2)' H4 f' ]7 `7 {2 d( r% Y
       cyberpi.led.on(0, 0, 0)
( y# \! q0 k. x! q       say = cyberpi.cloud.listen_result()" @4 \! X5 g' _
       cyberpi.console.println(say)
# {; _  Y5 C8 J+ w4 |- h       cyberpi.console.println("--------------")
8 G3 B3 J( y2 E/ p       for i in say:
. q/ x4 @2 ?3 N8 f7 t; S2 q            if i == '':) P* ~; `. C8 N9 }2 P
                 keyboard.press(' ')) [; f: D7 ]) ^& o
            else:* ?; V5 v* l/ b0 W) L% C( D+ ~
                keyboard.press(str(i))5 _, ~0 q: d: S4 o
                time.sleep(0.03). w4 x& H" F9 v

, o4 B2 w, Z/ H& \% L& y: F/ Hmatplotlib音量柱狀圖

/ P" O% [. Z) [2 V) L( `, M, Kimport cyberpi/ K' m- @& z) b- q* o2 E
import time
7 G9 f) @3 i( N( x! i( ufrom matplotlib import pyplot as plt; v# S# T( _* |

) i; i. U6 N5 ~1 O, F0 w2 D' Bplt.rcParams['font.sans-serif'] =['Microsoft YaHei']/ ~7 c3 m* K1 }) }; l! T. w
plt.ion()
( n; r$ Y9 H9 j% x9 \' x 4 ~. p) T& ~! b' a( ~# [
while True:* V' d' q: d: n7 ~6 Y( y
   loud = cyberpi.get_loudness()) ]' b( ^7 h) A3 R! ^
   plt.clf()# O7 A4 w; l# j! T
   plt.xlabel("數據名稱"), t* p3 k- J  _$ p0 V3 O, U1 \( r
   plt.ylabel("音量讀值")7 H8 k5 a0 f9 E
   y_locator = plt.MultipleLocator(5)8 L: M" R# ~' J- w$ U3 x2 l
   ax=plt.gca()9 }  r% h2 K$ Y. N! R) W
   ax.yaxis.set_major_locator(y_locator)! W2 X( A" d% w4 L/ F" {3 ~
   plt.ylim(0,100)( P4 Q5 z$ v( Y1 l& E4 n
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
& x$ _2 w" t' M5 F+ i, }   plt.title('童芯派聲音感測器讀值')
. v4 q+ s5 K$ X3 c2 @" ^   plt.legend()
0 i, |( C/ E; t6 X   plt.show(). v7 R  c; K5 Q0 Y8 Y- M
    plt.pause(0.01)! }$ V4 O8 x6 i$ n- J
3 m& s) m  G5 L$ E
" [( b0 I" I9 `! D# P
matplotlib 多圖表顯示) N' ^& [3 r( g+ ?& |- Q* E
/ C( {: q* [; U7 w; P. q- x& p4 ?, y
from matplotlib import pyplot as plt
. l6 o6 W& V& L6 J% W6 T5 A, T* Limport time
/ P4 j& X' c: w" z, k" Rimport cyberpi
" o  ~/ H/ |* A7 o5 V . w# ]& s& v* _7 y0 a; @/ b
loud_list = []
2 a0 g- T% S, P  K" f2 h  Ybri_list = []
- V4 p& E" E7 e# K1 T; ~' x6 Mplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體* k2 a1 o* B& a% a- V( v" P) Z
plt.ion()3 t9 s) A# W& {9 N" u4 r5 ~' u4 }7 E2 C
plt.figure(figsize=(10,10))
$ ]8 V% q% i$ p$ j# oplt.figure(1)
' b! A. N& M7 U: M; J7 Vx_locator = plt.MultipleLocator(5)# [  q7 m8 t, N5 n# m) H9 l% ~
y_locator = plt.MultipleLocator(5)% t$ s' [8 O. `
while True:1 u5 N9 Q0 N! {3 E; I: `
   loud = cyberpi.get_loudness()+ ^$ y: k( m5 L9 n2 A% B
   bri = cyberpi.get_bri()
+ u1 [( U% `5 v) N   loud_list.append(loud)
6 V7 P1 {8 |( @9 I9 g4 I) L$ \6 {   bri_list.append(bri)
9 P  Z! `; e; s1 j# ^   battery = cyberpi.get_battery()
$ ^  G1 s  w! j/ V7 L5 k4 h# K" S   size = [battery, 100-battery]' d2 X, O5 H8 l& x
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']6 N' V5 u5 |2 D+ m) |# }
   ax1 = plt.subplot(221)
) y6 j; `; Z" L( u) m7 h5 o   plt.title('光線折線圖')
3 G8 E' V4 i2 i3 G; N9 G. d4 {   ax1.plot(bri_list)) P( \3 J( M( i/ \6 T) U/ X
   ax2 = plt.subplot(222)
6 o# d- q9 B/ Y   plt.title('聲音柱狀圖')
4 |8 i2 u6 T2 l. Z1 _   ax2.xaxis.set_major_locator(x_locator)# `$ C: V9 `  i. I7 _
   ax2.yaxis.set_major_locator(y_locator)0 [% T) W' G# A# ?& X4 F
   plt.ylim(0,100)
( h7 B3 g7 p7 @   ax2.bar('sound', loud)
3 a/ W3 b' ^- L( R1 c   ax3 = plt.subplot(223)- i) w) H. \1 `! p$ |; F3 |
   ax3.xaxis.set_major_locator(x_locator)/ K2 I7 ]7 x2 y" k. r2 y2 o: g- T( X
   ax3.yaxis.set_major_locator(y_locator)( |' N! D( r7 @0 O
   plt.xlim(0,100): w8 \9 |7 _. ?! i' _# Q3 k
   plt.ylim(0,100)# y( O+ v- J5 M  G
   plt.title('聲音、音量散點圖')
* t7 P  k/ k+ b" z2 e0 z: X( J/ A   ax3.scatter(loud_list,bri_list)
; a+ B2 K5 i# e" j/ |   ax4 = plt.subplot(224)/ r+ i  k1 P; k  Y, p2 S
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'}), G) k1 _; L4 A" K6 D1 F; e
   plt.title('童芯派電量')8 n0 Z5 I9 @% M1 h
   plt.pause(0.2)6 D6 I, B+ L8 H) b4 c0 X
   plt.clf()
* {6 M* {7 ?# ?   if cyberpi.controller.is_press('a'):; u5 {" a; x' {* _
       break
1 o( E$ P: k/ l   if len(bri_list) > 500:6 ?3 {4 Z0 V6 P: k- M
       bri_list = []5 D, F2 e- _7 C/ @3 O
        loud_list = []* Q$ U* M4 ^% ~4 u: c. h. k
5 F/ z5 `- k4 o: V

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-25 07:50 , Processed in 0.026809 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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