圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 7779|回復: 0

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

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

. d3 G( o" o6 N  n' B1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。( o. ^, R; ^. V% V% ~5 _

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

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

/ p/ W6 _, u8 B( A# [; ~+ |
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。# O7 s6 }; x- Q3 c4 a6 Y. |) d. R
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    $ U* r; w2 N6 o- ^% ~
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。+ O" P, y) `# g- R6 ?
2 z- z1 Z. J  D: x' Z/ G
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    0 E* S+ g: U& d, Z; j

% U' \: k0 w0 a' U$ t9 Y
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    8 Q. J; ~5 p9 e6 N9 D  _; _

5 U8 w1 u. |9 F, O& U) h
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。8 i& m+ i( W4 y: W6 S
+ _# T, f5 [$ D2 l! g, O( i  Y
3.童芯派第三方編輯器程式設計準備7 M+ ~% ~+ U% u* T( {
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    - t$ ~2 j, E. N

4 W1 f/ a7 t( J8 _# I
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。5 A5 z  e2 t! Q% f; f

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

8 _- g) \  D8 V9 C
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。( o/ h3 m  t) e/ u" z2 K

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


. `" B$ T8 w8 F* z" A
查閱cyberpi API文檔見:童芯派API文檔

9 d" ]* K. q( k$ t
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    , E& K0 y+ r$ o( P6 P

+ q2 v" h. c8 V. U! {/ E- x. {6 y
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

, S! K2 g: K: @+ c/ h" v* k* a8 F5.一些程式設計案例# \0 _3 o) i, }' I
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
* U6 o, s/ k5 p& |( y1 j
功能介紹:
8 h) A+ T2 G4 a/ ^: V利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
  I- u4 \1 E, v8 }$ L通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
2 {, @, f: U8 n( z結合藍牙模組可以實現無線滑鼠的功能。1 |2 _; j' n# K
6 R2 A- v% r3 [
from pynput.mouse import Button,Controller
* M6 y* P( n) y$ Jimport cyberpi4 M( D' _1 v; c( g5 Z: q
import time0 q8 \7 J; ?' H( r
8 \3 h6 t5 Q4 k4 o6 z
mouse = Controller()9 f; h& l% V- t/ @, P

+ v$ M  \! P, C+ ^9 F; ^while True:
3 y# E7 u* K, r) n9 k" U   if cyberpi.is_tiltback():+ {" o, Q  |6 g1 Y1 `' D
       mouse.move(-3, 0)5 J# i4 b" ?/ x1 ^
       print(mouse.position)
1 H) A' ?2 {/ P& s# |# h  n   if cyberpi.is_tiltforward():1 ?, X* e, s* ]5 Q; P# T0 l0 m
       mouse.move(3, 0)
( S4 w9 H- b9 K   if cyberpi.is_tiltleft():+ m6 S9 u! g' j
       mouse.move(0, -3)
  a9 B/ ?; M2 B" E! z) D3 h   if cyberpi.is_tiltright():* A8 u- j  f. L9 n; H) W
       mouse.move(0, 3)
1 P! i) B' z% L. q4 H   if cyberpi.controller.is_press("b"):
; h5 Q3 a4 n) j; R' |# c' I       mouse.press(Button.left)
, x3 t% S  Z8 D5 Z6 V       mouse.release(Button.left)
6 s# f9 y1 {* y" }$ i$ e2 c       mouse.press(Button.left)7 {8 E; m% n7 `  B/ O; R2 M0 m( D- \) ?
       mouse.release(Button.left)
9 `- h# J2 M2 a/ R7 v2 R) X   if cyberpi.controller.is_press("a"):
/ r6 T/ n% z4 Q       mouse.press(Button.right)
# o* I) `+ |  H& G# X/ Z       mouse.release(Button.right)
4 {2 G( x4 z  ]* d3 }    time.sleep(0.01)7 _( a. J; \) A+ v9 e

5 N, B, U5 E! j7 b3 L0 W6 d" Y2 m1 p; U, ^- C
語音打字器

' d' d5 f- n, I: E+ G4 l功能介紹:3 c# A+ c/ F* L/ G
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
( N' D5 s6 t8 }, l, v將語音辨識的結果通過pynput在文檔中打出來。
  `: m( b: _% M. ?/ b4 _; {該程式目前只能支援英文。
4 T2 G$ l3 A% I' W. e6 A  H  U$ k1 i2 r% d1 u: _$ M# S
import cyberpi
, |  p: J$ k  E+ Gfrom pynput.keyboard import Key,Controller' O  ^. h; q5 d, q$ X- J5 w: u
import time4 X: `, B  Y  `& m

; t9 ?% S4 _2 [, Okeyboard = Controller(), l0 Z7 O3 {- h8 f( |; u; r
cyberpi.console.clear()
0 |# e# T& E/ y9 f! N1 e& hcyberpi.led.on(0, 0, 0)9 }$ I! [2 D& P1 g. _
cyberpi.set_recognition_url()0 C& t# N6 k& [' Y$ i# J
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得# X4 e9 V9 c2 t1 V# a
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")) O% ?: K7 M: \. S+ u5 u* e* i
while not cyberpi.wifi.is_connect():& b  r  Y2 T( z1 q1 O" l
   pass
$ M* S, J7 O' G% D6 Q# C( Bcyberpi.led.on(0,0,255)
% o' V: C6 c- H7 x% K+ T. m5 d$ Rcyberpi.console.println("WIFI已連接")
6 j5 g) r7 \$ Ncyberpi.console.println("--------------")
! a6 g1 _/ l7 W* Y" \cyberpi.console.println("按下A鍵開始語音辨識")0 r" T2 j& j" n: \( j
while True:- s  o. @* N$ ]' h# {+ l- U. a/ \
   if cyberpi.controller.is_press('a'):
& J2 s" u: @2 G1 G. Y- V" }       keyboard.press(Key.space)% o0 T& O3 w+ D3 u! V
       cyberpi.console.clear()+ ~% ^2 h' |0 j4 S( w/ }& V1 F3 M  ]9 G
       cyberpi.led.on(100, 0, 0)9 P* N- B% e! Y/ U, l! r2 {
       cyberpi.console.println("開始語音辨識"). ^+ j1 u9 w% H7 V4 }  _8 R
       cyberpi.audio.play("switch")
# c" u3 W/ T8 k       cyberpi.console.println("--------------")
+ Y% E% V; L7 V# P4 F! [  m       cyberpi.cloud.listen("english", 2). ?5 `; u3 V. [! u2 w  q
       cyberpi.led.on(0, 0, 0)5 x5 w/ t  Z, J# z4 c
       say = cyberpi.cloud.listen_result(); x4 M' f) I6 v+ j
       cyberpi.console.println(say)! q8 z. \# w4 z
       cyberpi.console.println("--------------")3 ]% F& Z4 o; l. ?4 Y
       for i in say:3 g% S6 [: {! F2 p( R" J
            if i == '':
. y% `! o) f3 S$ u& z) P0 m                 keyboard.press(' ')
8 J$ J4 }2 U) c            else:
! v6 B$ B# r3 C% U                keyboard.press(str(i))
& T+ S& t, x5 G- j                time.sleep(0.03)7 U; R9 g/ @8 H
  i' ]( _2 j/ D( Q8 h8 J: {
matplotlib音量柱狀圖
6 }" N2 N: D$ [" o6 y: ?% I
import cyberpi" T  g% p* }' f* p
import time, `# e7 `* v6 b. w) t
from matplotlib import pyplot as plt+ {2 B# s: n+ [# Q1 u. Q2 H- I) ?

) o: Z; p- y% S' J/ nplt.rcParams['font.sans-serif'] =['Microsoft YaHei']
+ F. s9 v; Y, {) `plt.ion()
; E  i: V* C, f& y& b8 S# r
0 f6 M$ n2 t) j1 mwhile True:: o2 p! G: w1 R: Q  _
   loud = cyberpi.get_loudness()
0 y- A9 ^3 ]  X, }* s- ?   plt.clf()
" C" ~9 a: D" p4 a   plt.xlabel("數據名稱")
" t7 y9 p/ T5 M1 w  L  Y   plt.ylabel("音量讀值")
" {  P9 f7 O" `' Y$ C/ ]4 A, \   y_locator = plt.MultipleLocator(5)  A( t# h2 O' E* G$ R$ x
   ax=plt.gca()
5 s, }8 U# F1 @4 q   ax.yaxis.set_major_locator(y_locator). A$ A0 k9 b9 B; l' c/ R
   plt.ylim(0,100)  n" M1 I; o/ X3 U9 }
   plt.bar('音量', loud, align='center',label=f'溫度{loud}'): V& |2 a8 v! N. Y9 B, ?9 E: E
   plt.title('童芯派聲音感測器讀值')
2 m! n1 l+ _: V% x- k   plt.legend()2 r  y9 Z9 K7 g! j! Q
   plt.show()' f) O9 x0 p. t+ q
    plt.pause(0.01)$ @& l8 t: h- N) W. K3 m. E7 z

" }' Y5 t6 ^3 D+ S9 y8 Q! x! F' u5 o( C( ]* T* {6 R
matplotlib 多圖表顯示
* \) A4 |) m6 ~4 u" }1 m0 y

+ B. w! Y  r3 }; W+ O: c1 V) c+ rfrom matplotlib import pyplot as plt
) F4 a2 r* Q5 g4 ~import time
# r' l3 e& H+ k9 A8 u/ h6 ?4 d+ j2 Qimport cyberpi! S. u+ y  z5 M5 Y( y% A

0 |5 X. q) z% \" |* g: Qloud_list = []6 j6 c. h" G5 R
bri_list = []
) T" G+ a6 j2 ?6 @plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體2 H! t& l3 k$ O
plt.ion()4 q( A" p9 s$ d) R! J
plt.figure(figsize=(10,10))
. c4 `" t. ]4 p* |; P2 N0 V  Tplt.figure(1)
0 V7 d7 w- D9 y! C: Cx_locator = plt.MultipleLocator(5)
2 f  t! U, n/ l- E9 \4 Cy_locator = plt.MultipleLocator(5)5 p  W' b( T" h( y+ P& d: v  z
while True:# v# C$ X: L# x4 Y9 U0 l
   loud = cyberpi.get_loudness()  n1 q+ ^8 L: s& k: ~1 @$ u3 K
   bri = cyberpi.get_bri()  e. o( T' N; y4 Z% @1 Z
   loud_list.append(loud)3 e4 r( p% o( Z, j9 A
   bri_list.append(bri)0 F) }+ b5 C3 V
   battery = cyberpi.get_battery(), I6 N3 L, _5 _: \! H* Q& C
   size = [battery, 100-battery]$ C& x: A' o- H- z! h
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']# f6 p! ], N/ o) v
   ax1 = plt.subplot(221)! q- d$ O* y0 l$ a
   plt.title('光線折線圖')
1 m0 A0 {, Z' P: u9 D6 ?8 k; e3 @   ax1.plot(bri_list)
' ]0 }8 _2 C, g, A   ax2 = plt.subplot(222)+ K8 D5 L" I; S& m2 l9 c6 X
   plt.title('聲音柱狀圖')
* A* }$ K4 K5 |- ~' f9 i& _. E   ax2.xaxis.set_major_locator(x_locator)
3 `! X, o+ C, T4 K$ t   ax2.yaxis.set_major_locator(y_locator)
9 Q6 @' I1 `1 C" P   plt.ylim(0,100)
% a# W) E- e+ e2 y0 y   ax2.bar('sound', loud)# |& l2 z! {4 Q! d# U: z% \
   ax3 = plt.subplot(223)$ k0 i9 _$ A5 Z0 I
   ax3.xaxis.set_major_locator(x_locator)
+ O% h* D( s" {7 w# ?   ax3.yaxis.set_major_locator(y_locator)
; k, L) U; o% p+ e6 X; L   plt.xlim(0,100)* g8 i" @! ~. O, X, S9 Q+ ^0 J
   plt.ylim(0,100); {1 d7 n$ b( E6 K" [
   plt.title('聲音、音量散點圖')  `" T0 [6 O  D  U0 @
   ax3.scatter(loud_list,bri_list)
4 L) O8 x1 Z8 L, ]& j' k; a! }! f   ax4 = plt.subplot(224)
) N( ]9 o5 b/ @0 m8 C4 Q' \   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
1 o2 N2 m* N& F2 |& r% X8 A# J( }6 N   plt.title('童芯派電量')
' H: o& |- O! q: {/ h2 [+ \   plt.pause(0.2)
0 P* p' s# {9 |7 ]7 U4 e  O. J   plt.clf()1 W6 f: m! q& w/ \- t
   if cyberpi.controller.is_press('a'):
5 a. n9 g3 J2 E: P, o       break
) t7 C5 b- m0 z- b   if len(bri_list) > 500:1 |5 O$ F2 S9 W
       bri_list = []+ u! d+ q; Z* d
        loud_list = []
# C) q: z$ D" U; C! U
. v3 {! Y/ s. k0 O

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-7-12 10:24 , Processed in 0.026361 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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