圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8508|回復: 0

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

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

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

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


% @1 \6 J9 h2 F4 T) z! z
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    1 C$ t! s* W* n- Q! T- B
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    % x6 V# u: G5 G+ C% j
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。* g3 M3 i( N8 J: p

4 b* x5 s% o9 W4 S
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)# K2 M$ i% Q; d$ d* s: F) y

: V# p; y$ S1 ~: m* D3 p2 G" w& z
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。$ y' C. T2 D/ ~2 S% M# w
2 ~1 M2 ~  `6 n+ I6 {
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    + G( J0 D) r  P6 P- B% ^

' ~+ r8 {* X, r' Z6 n, _3 A/ X3.童芯派第三方編輯器程式設計準備4 d4 h# m+ D% q% f# s4 v# O& y
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    & }. a9 |. Q$ @5 I
$ ?& u4 `6 k( O, K; `/ P: t/ W
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    / L5 _8 r; ]. X- ^, ]* ^. Y# T, Z

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

5 J2 f  a# e  i: J+ r% U1 V
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。% ]! `9 Z' W9 u! Z

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


7 N+ `- p5 x! I4 N
查閱cyberpi API文檔見:童芯派API文檔

8 z. U2 x9 d% s. D2 f
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。% B! A, _0 F' r  f

, C  R1 U0 X; E( I
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

6 M( i3 t# x. J0 s5.一些程式設計案例7 p) E  N- Q" k- [
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

, G5 ~; p! J% k8 Q功能介紹:
& r& C! M5 @( O' i/ U2 R( x利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
! x8 j7 S1 J4 ~) L7 i通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
0 O4 w# {% \4 x" q" }" |結合藍牙模組可以實現無線滑鼠的功能。
7 k2 i7 V( Z. q# Y9 w
+ g$ L, b1 t  mfrom pynput.mouse import Button,Controller
' v; i4 v' g+ rimport cyberpi7 ?' ]! h+ `4 y! r0 T1 J9 m
import time
" H! V/ }9 \: {; _  N
5 K$ f# B) j( r( [! Amouse = Controller()
9 w( i9 _0 l; |3 S: y
" r& b- }. l4 A' C4 s, }8 [while True:5 f8 I/ G1 B) g4 d. O( `
   if cyberpi.is_tiltback():
6 Q+ U2 x! d# @% O       mouse.move(-3, 0)/ x1 @8 D# |9 k
       print(mouse.position)" p1 p5 W, c2 U$ x/ n# T; I
   if cyberpi.is_tiltforward():
( b& F2 ?. G' D3 d. o- O       mouse.move(3, 0)
9 l0 W1 A4 @" a! e; F! x   if cyberpi.is_tiltleft():6 B- N. O* m) T# l- s: i6 ^
       mouse.move(0, -3)
% \) o+ X+ R9 F; d1 @* `3 w   if cyberpi.is_tiltright():
) D' c) v; {. c9 \3 r4 b       mouse.move(0, 3)2 j0 I5 k! f9 l
   if cyberpi.controller.is_press("b"):$ C; f$ h: n/ x9 y0 A0 M; k
       mouse.press(Button.left)
1 c/ G: x- e2 v( O  \8 C       mouse.release(Button.left)
( D' S4 J" w. O5 f( W6 a       mouse.press(Button.left)! D/ n" @4 M" `8 f
       mouse.release(Button.left)
9 d  S: N4 v" Q. j: X# l   if cyberpi.controller.is_press("a"):$ h9 P; L6 o& X/ l' _1 g
       mouse.press(Button.right)  z; m; w. [! Q7 O) x" x
       mouse.release(Button.right)
% E/ C8 j/ \# b5 S" Y+ a    time.sleep(0.01)
* h+ }4 e% \. e$ j. [
8 T0 h% v9 a* f7 o( `) k
" S+ _0 M  s( W# c0 D+ ^8 g  Z5 l
語音打字器

! `$ Z6 H' U+ w5 O0 t2 ]功能介紹:3 D& n& j" W- i9 \
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
! _0 M0 h$ Z- o& J( c" |- V% j將語音辨識的結果通過pynput在文檔中打出來。
  N& D3 w! s9 q" r) ^該程式目前只能支援英文。
" R, ~3 s. k1 K2 O$ r% u9 F3 K( X! P& ^! e+ o
import cyberpi$ d. T% r2 |- i5 ]5 B; R  M& Q( C
from pynput.keyboard import Key,Controller
# O* t& D( n; t5 [2 n- G$ [. wimport time( q4 C6 z$ Y; K
  \/ `! }/ J8 R- x
keyboard = Controller()
2 j7 c$ @8 K! }' q5 `cyberpi.console.clear()
. j  j5 i0 y6 x' F. ?cyberpi.led.on(0, 0, 0)
* F0 ^% v0 R$ C. X$ n6 C& ycyberpi.set_recognition_url()
5 p$ C& ^8 j& g4 q+ pcyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得) I+ l8 Q6 F0 X0 R( P) v8 l5 N
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")# d1 Y( R; ]' D1 [- ]
while not cyberpi.wifi.is_connect():
, s  `3 ~2 T. F' b2 A   pass
1 b3 z; y6 z9 K3 t4 Rcyberpi.led.on(0,0,255)
8 p9 m- q/ E0 Q8 V9 `cyberpi.console.println("WIFI已連接")& t# r1 [0 J6 |- _2 P( E5 `: L- |
cyberpi.console.println("--------------")
7 Q$ M9 b/ H) @8 {cyberpi.console.println("按下A鍵開始語音辨識")
; P9 t7 B" b& S$ swhile True:. [: O7 o* q( g/ ^& F7 }
   if cyberpi.controller.is_press('a'):" V; @! T' i  E9 B, F- E
       keyboard.press(Key.space)8 X* ?: ~* i. X6 S/ U- K# L8 y
       cyberpi.console.clear()) V, i6 r  o7 U
       cyberpi.led.on(100, 0, 0)
6 ^1 K, w3 F% b5 B4 x6 W7 O% A8 C       cyberpi.console.println("開始語音辨識")' g- u$ X5 P2 C; g5 Y
       cyberpi.audio.play("switch"): @% q- [# ]% t* d3 v4 \/ ~
       cyberpi.console.println("--------------")0 }# |6 g! @* D' R9 V! L
       cyberpi.cloud.listen("english", 2)! u  }1 L0 T+ N) `' m/ }& t' j- y& t
       cyberpi.led.on(0, 0, 0)6 K3 K2 p: @6 k3 Q7 i: K' `/ g* `
       say = cyberpi.cloud.listen_result(): E( P1 o9 h+ h6 E+ Z
       cyberpi.console.println(say)
; G1 P! |) n5 S- A       cyberpi.console.println("--------------")) V' p/ k' S4 m. G
       for i in say:
; W# @  K" J7 z9 c- [            if i == '':
9 p% e$ p1 `2 M1 x  I4 X; z                 keyboard.press(' ')
% c9 @4 Z# m+ h, C- C. [4 F            else:
* k5 N4 E) v2 \  Z; _' J5 R                keyboard.press(str(i))5 U# A* |' m, @6 J
                time.sleep(0.03)
' E& Y7 X1 o3 p' H8 E. q
# A) X: p& [7 a% y' {! @$ W  J" ?
matplotlib音量柱狀圖

) c" C; w3 t! J+ s  S  b! S6 [, vimport cyberpi* k0 r; o) ^% w# k
import time' M2 T: Z& c$ h# v# k
from matplotlib import pyplot as plt. q- V% e% l" @4 K
" t3 [; i0 k5 G" K6 B+ l; g
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']9 F3 F4 s1 M$ R+ i
plt.ion()7 F* I# \$ [- w& X1 G
0 [+ z. u) ?! `2 B- k0 V, R+ T$ Q
while True:
: w3 Y% p) Q2 H* z; f   loud = cyberpi.get_loudness()
, {$ Z. j, S0 h: _" M" b) t  ?( U   plt.clf()1 [  i; L. p# v5 ^/ h
   plt.xlabel("數據名稱"), R  ]3 a! w% N$ }/ D% i
   plt.ylabel("音量讀值")
& m/ {! x  L* i: ~5 ~, r   y_locator = plt.MultipleLocator(5)
6 w' W9 _" k( P   ax=plt.gca()9 n5 L3 r& q( R& _# k' m
   ax.yaxis.set_major_locator(y_locator)
; ^) b+ u, {# T4 {   plt.ylim(0,100)
8 p  v5 z. D5 l4 n! D* R   plt.bar('音量', loud, align='center',label=f'溫度{loud}')1 C" D4 X& S9 Y: ^9 A9 a
   plt.title('童芯派聲音感測器讀值')
- X' J; n5 [& F4 z   plt.legend()8 P/ f, z. P4 W4 D1 {  ~
   plt.show()
; w. m  |* s+ E3 Y9 P6 j( C    plt.pause(0.01)
, C  G. e% l/ }# S9 J4 Y
6 l/ _, z- p. p# L8 ~+ }  n4 a; @# U( f8 H8 d
matplotlib 多圖表顯示. A) l- _- }; ]( I& a
) o2 T3 V- z/ w: f
from matplotlib import pyplot as plt
- R3 P9 ?7 z3 ^, u3 vimport time
" u, M* f0 P! nimport cyberpi
9 s6 ~; C& q5 R - W- R  X& s5 H
loud_list = []2 z. E6 D2 V2 d/ g; y# b6 W, A
bri_list = []: ~( v- p! J+ F/ d! P; b6 p% f
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體% ~2 X0 z6 H( k6 P8 k
plt.ion()
) N0 w0 f! }7 a/ L$ _- i) aplt.figure(figsize=(10,10))8 d; W- j: G$ X/ B$ k
plt.figure(1)
2 T9 d3 t+ L) Nx_locator = plt.MultipleLocator(5)
  D% S) N3 O" u) ?% xy_locator = plt.MultipleLocator(5)
' P7 ~2 @" l7 L3 R  p9 Bwhile True:2 M+ P  J$ ~) Q3 w
   loud = cyberpi.get_loudness()* d- `4 `4 P' {0 X6 I$ \
   bri = cyberpi.get_bri()0 D9 H) T" |9 I# i" e9 [, j
   loud_list.append(loud)
0 Y' G0 X1 e" O. K   bri_list.append(bri)
9 Z) ?3 w- r2 f- w   battery = cyberpi.get_battery()' U2 E: o& U0 E4 d: ^& q
   size = [battery, 100-battery]! H# k7 G( K/ Y$ W
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']! _$ r; N6 g2 l5 g" b6 w
   ax1 = plt.subplot(221)7 e5 f/ Z6 o4 x, Z' r
   plt.title('光線折線圖')
, J, K# M) ]7 K% ?4 u& E0 r" Q" i   ax1.plot(bri_list)0 q, U; f6 B( Q& x
   ax2 = plt.subplot(222)  [5 `% j! t  y7 m- |
   plt.title('聲音柱狀圖')8 o1 Q7 r' R6 l  X' ^2 p6 X; x; K; W
   ax2.xaxis.set_major_locator(x_locator)
5 N6 p/ E8 i* _% t! N   ax2.yaxis.set_major_locator(y_locator)4 B# F( y( [: s
   plt.ylim(0,100)
% i9 @% f) E5 y. O   ax2.bar('sound', loud)1 c4 k6 e, d7 p% O% E
   ax3 = plt.subplot(223)
% ^: Q0 E5 c# B% Q' w+ L8 \   ax3.xaxis.set_major_locator(x_locator)
) E+ i3 k  l' ]: j   ax3.yaxis.set_major_locator(y_locator)0 T& ~# E3 M* }4 ?3 V
   plt.xlim(0,100)
$ N# g: d$ v0 |" I3 C' F   plt.ylim(0,100)
* K4 S& Y! N* |; h: G8 I   plt.title('聲音、音量散點圖')* l1 r& u1 A% G1 B1 x, G1 q7 u2 \
   ax3.scatter(loud_list,bri_list)
( s; @( d0 B6 X   ax4 = plt.subplot(224)
/ w% q! O; h# ~+ v+ s2 i   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
- ^5 ]) s7 }% v5 [2 x   plt.title('童芯派電量'): H0 v6 z7 d. J+ M/ B5 a' U
   plt.pause(0.2)
5 P0 u* Q& a/ y$ p2 s/ B  t   plt.clf()# R& U# J1 T7 d; ^( l' p
   if cyberpi.controller.is_press('a'):
. V4 |6 r5 W/ M4 Z9 Z- z: a" o       break1 e7 N' }/ \; p4 \; {" n
   if len(bri_list) > 500:
5 u% T$ l% c3 k! m2 E" v       bri_list = []4 E: x( C' j2 V# a5 h
        loud_list = []5 E: ~# O; B, i8 T2 {  ^

, X+ C0 }0 @/ Q' Y2 j( X3 f

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-3 02:54 , Processed in 0.024616 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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