圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 7707|回復: 0

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

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

5 X3 l  |6 e9 O8 A1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。
    * O: H; s& \4 Z, U- }9 e% _

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

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


/ l) N5 \# \+ ]: O
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。  t- d) t3 q3 S' v2 O
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    $ m8 j4 F/ v) a+ T6 m& X; R! V
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    + D8 p% T% H' R+ n) Y

& ~; u; Z, D, q4 ~5 r
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    & R5 T! P( Q# X3 C
- y: Q1 K) {5 R/ d
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。# |- M. X+ c$ X

  B, Z3 ?8 x: x& [
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
      x2 [' U, O7 P! M6 x8 j5 _

- D* @0 E  R- [. r3.童芯派第三方編輯器程式設計準備
' c+ H6 M' q% c
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。: L% |, U- k/ c
9 L) ~$ d- y) g1 X
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    * S$ J1 L& z3 V& e) E% l5 B; Z- I) g# ]

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


1 j4 G6 J3 R( N
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    3 P8 e  Y/ W& S+ @

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

, A# M) B  C: t! s) ~. W
查閱cyberpi API文檔見:童芯派API文檔

& Z7 z2 z3 J. \  m% x# q# Z
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。% E$ c" o/ P7 b5 k$ B

/ s3 d7 n* j8 U8 }5 m
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
8 Y- N/ O3 E  T3 c/ U
5.一些程式設計案例! b2 T4 J9 X! t) R6 y7 G
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

" j8 ^6 l1 G3 X( d4 G. \0 i功能介紹:
/ p1 ], \7 W+ T2 X利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
7 u  }4 U; ]6 M% `9 q3 V通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。( ^$ ?; H  R; p0 u
結合藍牙模組可以實現無線滑鼠的功能。
2 O) X' N& n6 G$ A2 X  H) J. r# Y7 |- d% ?# L8 r( \
from pynput.mouse import Button,Controller
0 y$ Q: w7 B" V' Nimport cyberpi$ B6 t, Z/ r5 H% p" g! w0 ~: B/ W) A
import time
* t& s! d  C- T* J; ^  g4 ?. I- | ' d5 w, j4 v% B/ e0 C2 t
mouse = Controller()$ A5 u  x; H2 L1 k' e( ]8 R% a
$ d# s" ]; w9 U
while True:$ K' [. ~0 s# V5 }  r* n& a
   if cyberpi.is_tiltback():8 r( P7 K- a# z0 E3 `8 R4 [5 c8 V; M
       mouse.move(-3, 0)5 P6 p; ~0 c; s
       print(mouse.position)% x( D& _! o+ ^$ \
   if cyberpi.is_tiltforward():
3 V( u3 U: ^+ p0 n  \       mouse.move(3, 0)! V& h2 @+ o' {
   if cyberpi.is_tiltleft():- ^& t4 g% R  o: ~. ^/ x' i1 [  }
       mouse.move(0, -3)
8 Q5 V( ]" J# V$ C0 \4 f/ ^. d   if cyberpi.is_tiltright():- T5 ^6 r# S% b2 P& L9 C
       mouse.move(0, 3)5 K' Q( G4 R" H& W  l+ p
   if cyberpi.controller.is_press("b"):
1 u& _% I6 T4 ]) ?4 `       mouse.press(Button.left)
( o& a- c% i6 ~7 o- O" a       mouse.release(Button.left)& Z# E9 _' Q$ ]2 I5 ?/ F& b
       mouse.press(Button.left)
0 `7 n/ m3 Y; k       mouse.release(Button.left)4 t5 S  D* W- p; u) l
   if cyberpi.controller.is_press("a"):
/ Z5 c+ x8 |7 |7 T, W       mouse.press(Button.right)
4 T7 i$ U: Q- f9 O0 A) g, p! z$ `       mouse.release(Button.right): j" E; T! e/ o
    time.sleep(0.01)
; a; ?# F5 a$ V! h9 k7 i; ?" m' X+ ?

. q. |+ x+ k* @& F# g/ ~
語音打字器
7 J. b' r/ @: r+ s: d: I
功能介紹:
; w) c2 m6 ~3 s利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
) n0 _; U, i+ ]* F4 Z* F6 V將語音辨識的結果通過pynput在文檔中打出來。
, C0 [  A. j: w該程式目前只能支援英文。
# C3 j. Q; w( F8 h6 t; a2 q
% q  f& R1 @) D* M" m+ v$ J  |" a; Vimport cyberpi
1 y9 u0 j# g" O7 efrom pynput.keyboard import Key,Controller$ E0 L* E3 M9 |# W" c6 t, S
import time
" E9 D7 e3 D: a% K: [
. e( @6 s) Y; G% Ykeyboard = Controller()' F1 y3 L4 v1 P# C! C- ?# C
cyberpi.console.clear()
. ?! f4 k+ W# jcyberpi.led.on(0, 0, 0)' W* V3 }# w1 m! c( h: C8 q
cyberpi.set_recognition_url()
) \! b7 ^0 u4 P8 Y3 scyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得) C6 P# f+ V: ]. `: e/ n
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")' t7 x" K, S1 V( t) u" U8 E) P2 X
while not cyberpi.wifi.is_connect():" X4 M& D! S2 v
   pass3 a( f' o  f) q  s: ?
cyberpi.led.on(0,0,255)
' ?- d$ {6 H/ ~2 L1 [- \% B6 vcyberpi.console.println("WIFI已連接")
9 y% x# Q- c4 x% D9 Jcyberpi.console.println("--------------")
$ i2 a; Q, A" f3 u3 l; y4 _cyberpi.console.println("按下A鍵開始語音辨識")! B3 l; F3 i+ |$ K- T5 c
while True:) C$ r5 B! R& `, R! {: O
   if cyberpi.controller.is_press('a'):
8 O0 S) e% I% ]! V6 T/ C0 C       keyboard.press(Key.space)0 V' \1 V/ y4 p( A" r4 u& ~
       cyberpi.console.clear()
( T8 _, P; @9 U: y+ c5 J( `! Z       cyberpi.led.on(100, 0, 0)
; f& g: K7 S. t5 G       cyberpi.console.println("開始語音辨識")
* E6 n; N" F: @- X9 Q% h" u       cyberpi.audio.play("switch")
5 {2 d. H) x) f  `- E       cyberpi.console.println("--------------"). @% z+ y1 b. s: M6 o& `/ G- U
       cyberpi.cloud.listen("english", 2)
* F' x. ]" L) i; T- D0 u( z$ `0 Y       cyberpi.led.on(0, 0, 0)2 A% _% }5 o3 k8 r" ]9 m( Y
       say = cyberpi.cloud.listen_result()
$ v9 i7 ]# k! O       cyberpi.console.println(say)) f: h: \. w* H
       cyberpi.console.println("--------------")$ j! Y4 ?( b+ m& K
       for i in say:( `5 S6 E& t- S! @: u( I
            if i == '':; i8 E  A- E& p/ x$ ?
                 keyboard.press(' ')! d0 N1 l9 P6 w) K& r7 o
            else:/ |2 K. C0 c' Y+ Z) ?# k) F
                keyboard.press(str(i))
8 P0 g- ?$ R  ^+ b8 z0 C                time.sleep(0.03)
0 Y+ d7 F% q, ^; s$ E' t0 f" h
0 ~4 ^* j$ Z4 N5 B
matplotlib音量柱狀圖

9 E. V" _( [  W1 k1 _4 b5 \import cyberpi5 _" ^4 Y& Z6 x+ A2 A
import time
- C" O5 o" z) Hfrom matplotlib import pyplot as plt+ T7 R% e5 V" S& d

3 x, J1 w# l; R5 i- Qplt.rcParams['font.sans-serif'] =['Microsoft YaHei']
5 q) t' h& I; ?4 G/ |" H9 R% Fplt.ion()
5 r8 S, L& b5 Q' O- a
9 v  j  h* a, n5 ?, kwhile True:
" i( i0 k% L4 v5 J. p" w  h& f   loud = cyberpi.get_loudness(): u+ {$ h* f" p( _" N2 e3 c
   plt.clf()
" }$ u3 ^) @3 _1 G0 f9 T   plt.xlabel("數據名稱")
3 o) {6 l& k" s( v3 j   plt.ylabel("音量讀值")
( A6 n- }) j* Q6 C0 b4 Y   y_locator = plt.MultipleLocator(5)
0 E- B; k' M1 w% z' a" L; W   ax=plt.gca()3 _! D3 w! g( |# X6 P
   ax.yaxis.set_major_locator(y_locator)
4 N) ~2 q% P( o: w) b% n( c3 l   plt.ylim(0,100)5 O" j' f0 B+ E7 ]- ~! {
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
) [* x- {1 g) f& W3 k# @( {   plt.title('童芯派聲音感測器讀值')
% I3 s" L2 G" u# y   plt.legend()
  G6 c. H4 n; S5 z   plt.show()
4 X! |0 A! y8 l' v, w. j+ p, U/ f7 C    plt.pause(0.01)
* o. k/ D/ ~4 [1 E; e, w
' k( Z  F1 o/ E; x# Q- E" `8 i: C
. Q6 k& ~* G2 p" I6 @5 Bmatplotlib 多圖表顯示
: P% ?) G6 z$ R5 t

7 H$ N* L; H0 Z" Z2 Xfrom matplotlib import pyplot as plt
5 W& P) B. N9 ]import time
0 d0 _1 m: j: N7 U6 k- t. rimport cyberpi2 b$ ?8 l$ R+ M' h+ X: Y! x
, q3 v7 l6 A7 e3 f" Z3 z6 t
loud_list = []6 a% V7 b; D7 \, T" e$ Y1 k% O1 \
bri_list = []* S) l% E; t+ o: k
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
) Q; C8 T! k# ?% cplt.ion()
2 V' g4 g$ o/ f7 r9 iplt.figure(figsize=(10,10))/ |" H2 b) ]" u5 O- Q) A. b: X
plt.figure(1)
3 L1 i! |9 x4 E( i$ K% |. x% nx_locator = plt.MultipleLocator(5)
- R( H3 V* S$ [. ^y_locator = plt.MultipleLocator(5)! T4 Z. O) L9 L5 ]8 ~
while True:
7 s( h" q! ?7 ^- C: F7 `7 m   loud = cyberpi.get_loudness()2 j( w2 f) W$ Z! v3 ?
   bri = cyberpi.get_bri()
' [$ d  F% L# E4 c2 \' @   loud_list.append(loud)
1 L- r2 g, L% `4 p5 w: ?+ q$ y   bri_list.append(bri)
& x& \+ t" e+ \3 c/ {* q   battery = cyberpi.get_battery()
+ C" L! X& ^6 y) K  G   size = [battery, 100-battery]5 M$ Z% p5 m; e' B$ Q
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']  K# I% @$ P4 N: _. B: @; o+ s
   ax1 = plt.subplot(221)
6 C0 N! S) f4 M8 G) v   plt.title('光線折線圖')
2 ?$ t$ I# i) m   ax1.plot(bri_list)
- N3 ?" A/ N% e0 c. F0 f   ax2 = plt.subplot(222)
) V4 I9 D& Z+ h  N; y' h& ]   plt.title('聲音柱狀圖')2 @2 f3 H  o( r
   ax2.xaxis.set_major_locator(x_locator)
- C$ J8 ]* G9 M3 Q9 y) H   ax2.yaxis.set_major_locator(y_locator)& F; a! m5 u: `# u" y. V( Y8 G
   plt.ylim(0,100)# n. x) V+ W; f6 g9 s& l1 v. A
   ax2.bar('sound', loud)7 M) X4 k! f+ ]) q$ u
   ax3 = plt.subplot(223)4 U6 X$ ?6 H/ a& t
   ax3.xaxis.set_major_locator(x_locator)
5 s. `8 Y! ?# c# n/ J$ x   ax3.yaxis.set_major_locator(y_locator)* o) n; X& u( v
   plt.xlim(0,100)6 f( O; f  E! d8 W
   plt.ylim(0,100)7 S+ o/ o! O9 X+ v
   plt.title('聲音、音量散點圖')
9 u) N) S, V% ?5 n   ax3.scatter(loud_list,bri_list)
0 ~, L5 Q3 h0 R# B   ax4 = plt.subplot(224)0 O0 K; Y& d$ B. b& H
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})& ?: H! b5 U2 B: A* J
   plt.title('童芯派電量')
" s1 Q+ l. D% p/ p  H% ^7 v   plt.pause(0.2)8 c0 |. `; y4 D' |
   plt.clf(), C+ f, Z4 D* b" K) Y, l3 o
   if cyberpi.controller.is_press('a'):
$ T0 {  @2 S* g* T       break# d3 k1 P. F; N" y% ?6 G: x
   if len(bri_list) > 500:
$ f7 }$ k. K9 r       bri_list = []* o$ m$ i( \+ ]8 A! ]1 C& ]
        loud_list = []
" O8 B6 m- {3 Z" Q) I
0 r; U! a: |, A5 j  B6 g- k) P

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-6-27 20:53 , Processed in 0.026240 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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