圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 7733|回復: 0

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

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

9 W5 G( c% `) O# L2 D1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。" @9 x$ e) l+ v7 j4 u7 z+ _; }  {

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

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


! y( u$ |* d+ i3 |( q+ H- r
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。7 k8 r) z& J( w" _; x. N4 o
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
      a- D5 x: E6 [* s
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。8 K- ?, Z) B/ L# O7 H- v: ]

+ M1 a+ F( ~- u6 S
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)  L4 r& I8 w) ^* b
0 e+ S9 U6 h* O* s/ e; w# y" ~
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。+ C$ Q2 Z- d) K1 V- k, H

5 S( ]  j: t1 J4 f
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。' O  G  N, s  x- c: y5 t

, Z3 A6 `4 ~6 m0 j3.童芯派第三方編輯器程式設計準備
6 Y+ F& A* c# u5 Z5 ~
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    : w9 \- N5 Y+ D9 K8 y

8 p& l" d4 E; [0 n' ?: y
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。! v3 k; r4 I! z

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

  A. H, T+ b* Z8 N' z: f$ D
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    8 C5 K9 k, a* @

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

" F" {5 W1 V8 T, E8 q4 C
查閱cyberpi API文檔見:童芯派API文檔
; m1 |. ?2 z# M- [0 s9 Q
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。9 y7 f& ]) w: H  v3 T. n, F
1 Y6 G% U! B  ^. [* n
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

* s9 \0 W" {( ]: J, Y5.一些程式設計案例
" N$ J8 H  ~1 O, j3 `2 F童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

9 C1 [$ k1 U2 w7 U4 N4 W/ R/ E功能介紹:4 v+ b" f- C& S+ C7 H6 s
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。; W( Y/ d  i* `, c7 B6 L  C
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
! S0 q( o" H* m+ Q; ?結合藍牙模組可以實現無線滑鼠的功能。
7 e/ h+ d- ]5 l0 @. D3 N. j% J  h; W% Y8 r+ J! A
from pynput.mouse import Button,Controller6 j8 L) q; @% ?. d- u
import cyberpi
: z0 |9 b, z8 U& Jimport time( M4 B3 n0 J: a$ h9 K; {
$ C% c  Y3 e: o
mouse = Controller()
4 F$ v  }2 a4 K& Z8 O7 ~2 l7 W % B& B2 d+ p6 i
while True:
6 [0 ^9 v2 W0 O3 g6 g) I   if cyberpi.is_tiltback():$ Z" [1 q% N6 d+ S( e0 r5 e
       mouse.move(-3, 0)
) A1 i4 c( G: k' M( ]       print(mouse.position)
& o: G3 d# N% h! r" ~   if cyberpi.is_tiltforward():3 b. H( K" [9 G) d0 O4 c
       mouse.move(3, 0)$ z1 d  u  R( {" Z
   if cyberpi.is_tiltleft():3 A! M* g& x3 z; Q5 N
       mouse.move(0, -3)
$ w* `! T3 Y. |/ W# b5 j   if cyberpi.is_tiltright():4 a7 W( p, v$ Z8 y' |2 s% V
       mouse.move(0, 3)8 L# ^  J1 ]* @, v
   if cyberpi.controller.is_press("b"):2 u* x1 J0 v. k2 }! G
       mouse.press(Button.left)! R) j! D1 J' A# o/ S2 [, w
       mouse.release(Button.left)
5 H5 r  d9 G4 G) Z8 J% |' @       mouse.press(Button.left)
1 D/ I% ^3 R: B  K8 `) j, i       mouse.release(Button.left)2 V9 ~. Z6 D7 I  v4 l6 C
   if cyberpi.controller.is_press("a"):
; s0 R9 E8 q5 i  x% p+ V       mouse.press(Button.right)4 I" c; B: C0 Z$ m; l
       mouse.release(Button.right)
# H9 c" ^# k$ R/ ~/ T+ s    time.sleep(0.01)1 q1 i8 ~0 t. ~5 s- y) Y) T  t& f

0 r7 R9 f& g: T0 U
! z3 l, e2 }% ~* P# V
語音打字器

& A" _, v+ p9 Y. p' [6 h1 u功能介紹:5 K& r& J$ f3 N: H5 M
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。; H* s6 \& N& S9 H  |
將語音辨識的結果通過pynput在文檔中打出來。* E6 v: c% N8 q" I* d/ i7 Q# T
該程式目前只能支援英文。; }& K: J7 g. ]8 x

" Q1 y: h9 C; ~; gimport cyberpi
! M# I0 U7 s$ Nfrom pynput.keyboard import Key,Controller
7 b  }" C" J) h% [# pimport time
. m+ h: N, Z1 G! F& J
6 B2 b& I/ |/ y& Q7 Wkeyboard = Controller()' }% `1 D% `1 [" Y. m9 Q
cyberpi.console.clear()
4 G( c2 {5 `" @  j7 |cyberpi.led.on(0, 0, 0)2 ?7 w" Y# G2 W* ]) L8 q8 b, X
cyberpi.set_recognition_url()
/ E, V( ^1 w1 l* r+ Y" b1 icyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
- X) O) {$ ?) H2 P$ ?cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")$ e+ a" a/ G! B2 d% z1 O
while not cyberpi.wifi.is_connect():
+ W/ c% V# f1 Y! K) d0 \+ l   pass1 o: u; \& Y  n7 y
cyberpi.led.on(0,0,255)6 N5 F4 C' K8 y( ?" y' N# ]) [; S
cyberpi.console.println("WIFI已連接"). S, P  J4 d3 L% P: G3 o
cyberpi.console.println("--------------")8 V7 |8 S+ K* z0 \- Z. K, M8 b
cyberpi.console.println("按下A鍵開始語音辨識")) d" d: Z: j  Y  U, J$ ?
while True:7 s8 G2 |% r3 A: A# R$ m
   if cyberpi.controller.is_press('a'):
3 i. y5 L" b5 b; g, ]- K& Q! U/ u       keyboard.press(Key.space)
/ J. Y* ~5 D# A7 D* W. w! H0 ?       cyberpi.console.clear()# j! L# F5 \: I
       cyberpi.led.on(100, 0, 0)0 P5 n2 K, N2 b- g
       cyberpi.console.println("開始語音辨識")
+ W! r6 F! c# h1 [- e       cyberpi.audio.play("switch")- x3 V. m* m" g
       cyberpi.console.println("--------------")
8 H2 k2 t& Q: M2 m* X       cyberpi.cloud.listen("english", 2)1 M* F. A4 V3 i; Y; ~6 n" G3 L
       cyberpi.led.on(0, 0, 0)
) j- X* A. J7 E' H       say = cyberpi.cloud.listen_result()
* `+ t7 C. N9 x: s& j* m$ V9 @       cyberpi.console.println(say)5 a: p7 h9 p" i/ K" t
       cyberpi.console.println("--------------")8 }( k" e4 y( `; k
       for i in say:! ?3 p5 w0 H( E: {
            if i == '':
7 z4 K- o1 f" w2 Y6 h8 @- A                 keyboard.press(' ')5 I: H5 S% R! _( n' T  M
            else:& e  ?6 m( q+ _7 }8 J
                keyboard.press(str(i))
+ }/ y/ F; U. x8 \# ?  G9 ^# g' F                time.sleep(0.03), d5 c: m* a, o: o7 V
# Q1 I+ K  p/ X# @7 j% T
matplotlib音量柱狀圖

; q, N8 [+ N# E+ |1 Qimport cyberpi9 d! q# n7 o" `" s! S$ N' l) f* j
import time" I4 Z7 H% u0 i0 c
from matplotlib import pyplot as plt
: \) c" X( @- z7 t 5 k* f) O- C; j3 M1 _
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
. Y+ j* W5 z4 d' v1 V0 Z& Rplt.ion()
: [5 m7 t9 C7 Q1 d3 s4 c" P 2 G+ W( q2 L7 n0 ]; K
while True:  l  C3 G2 j5 [
   loud = cyberpi.get_loudness()
# i3 K; o3 ^+ }+ P$ Z   plt.clf()
$ W3 x7 e: F: U2 n" W! H   plt.xlabel("數據名稱")
2 K9 n$ K; V9 y! H  T) k   plt.ylabel("音量讀值")
+ V7 g! `* S/ Z' o8 ~   y_locator = plt.MultipleLocator(5)$ @+ t6 e! W0 _4 V9 g) O5 ~
   ax=plt.gca()
) j3 h4 ~3 e0 K$ R" _+ o$ t7 h   ax.yaxis.set_major_locator(y_locator)
: D  ~2 {1 X* T. p0 }; E   plt.ylim(0,100)
2 W% S$ U! i0 D/ r( L8 @$ t$ {   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
% K1 k( J  o! ]: L. m, _  [$ f% V   plt.title('童芯派聲音感測器讀值')
* u. Q/ a6 m$ Q   plt.legend()5 @% D. u3 Z! d/ `
   plt.show()% c# z! {! l( D. H4 J" p
    plt.pause(0.01)
7 |5 ]( d* P  l; i# L+ ~1 ]. q! d, s8 |7 p
9 U" Q" p& w) k( J/ |1 W( @
matplotlib 多圖表顯示
2 e9 n# y% \2 v7 D" p9 ?% O. E- Z  w

3 {. t$ Y0 q( Z! Ifrom matplotlib import pyplot as plt
3 A& [7 _8 b6 L) ^6 C# Dimport time
0 `) H, u8 k" N) O" ^' o" K% ?, [import cyberpi
! E, [. J% S' n5 K. D% K9 J 5 u  M0 {6 f+ q( f: _4 E( U& R) D
loud_list = []
) R) U6 u" x* c- M9 Xbri_list = []
, |+ e: `5 _, c; V( C% xplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體' Y" M# r. N' q
plt.ion()( [- L0 |& p: @; Q0 y
plt.figure(figsize=(10,10))6 h: U4 x8 V2 z: Q
plt.figure(1)/ `  h5 Y4 f3 v: S! x
x_locator = plt.MultipleLocator(5); S9 c% I, I3 E& m# g% D$ T  _3 O$ G
y_locator = plt.MultipleLocator(5)( R* _- ~5 S9 y. y+ @- [, f! X
while True:4 z; l' V, Q1 n2 t# a
   loud = cyberpi.get_loudness()
: M! n6 Z% _" n% [$ ~0 G   bri = cyberpi.get_bri()& I$ h5 ]. G& P' g# t
   loud_list.append(loud), `4 U% T/ o3 c- q7 w# B" f
   bri_list.append(bri)$ X6 h+ c3 z) ]9 Q% m) `; S7 p  o
   battery = cyberpi.get_battery()0 L1 _5 j2 E$ l7 i9 }& P. ^7 X# Z
   size = [battery, 100-battery]6 y7 Y' u" I! v
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
) l. i, M# b0 H+ j5 b' t4 K   ax1 = plt.subplot(221)) W. |* q8 ~( q
   plt.title('光線折線圖')' x4 x( A9 s5 {1 d/ ~/ c
   ax1.plot(bri_list)9 c/ `, o8 k( q0 ]9 H& n- i
   ax2 = plt.subplot(222)
- m$ W6 m" |9 C0 W   plt.title('聲音柱狀圖')( p7 `6 N* {+ y1 v# o' S" t
   ax2.xaxis.set_major_locator(x_locator)5 }* T8 X# y- P' @: o9 V1 A# Z
   ax2.yaxis.set_major_locator(y_locator)
$ ]; ^- r; K) c! k+ T   plt.ylim(0,100)1 Z) y" A4 C5 P; a* O; ~
   ax2.bar('sound', loud)8 L6 X) t8 O2 y) K
   ax3 = plt.subplot(223)
8 _+ L! s: c+ ~! L, l; T) N/ |   ax3.xaxis.set_major_locator(x_locator): f7 p4 i3 u- U( Y, T
   ax3.yaxis.set_major_locator(y_locator)
# a' z0 j$ R- X# Z& w* E4 `) b   plt.xlim(0,100)- \, R; W3 \/ S
   plt.ylim(0,100)
) a3 m4 B/ j* n' B5 F$ v; {   plt.title('聲音、音量散點圖')* j9 K/ T* o( e% [/ w; r! `4 C
   ax3.scatter(loud_list,bri_list)
% [2 V' s5 Z( y# I   ax4 = plt.subplot(224)
. g1 |3 e2 ^& G- K" S( M5 ~, W   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})+ C, e- e& B. {+ o0 G
   plt.title('童芯派電量')
. N0 R, q! d7 U5 {1 I# R& m: G   plt.pause(0.2)
3 [9 P0 M5 Z5 d" F   plt.clf()
$ Y7 t* w+ K  v   if cyberpi.controller.is_press('a'):
9 ?2 S3 w7 d+ q2 o       break, ?7 u- ?+ }) ^6 T( \# L$ k, y+ ~. f
   if len(bri_list) > 500:
( [% L  L3 u% g! t; ^6 J, I% _       bri_list = []
0 s4 M5 z$ ]1 ^& S        loud_list = []9 G: o8 `. E% J

2 k  ~: b2 s" ~: V! g

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-7-2 22:58 , Processed in 0.029839 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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