圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8379|回復: 0

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

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

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

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

! r# f0 t6 P; _" _8 \! s6 A
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    9 h# Q& r/ J" Q( |. R! v- h
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)6 q; l2 ?' b5 B( E; p, p
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。8 b0 |: ~/ p9 Z. l9 o: i; o, z
( n) B) R3 M$ G5 \9 v- V
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    9 ~' C9 _) u4 \
7 Q% u8 Y: B. @7 Z- _" S
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。/ B  d5 K$ q7 p
/ h* e6 n5 v) a* ^+ H! V& _" e* v9 K
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    3 Q) l6 G5 B1 L/ a

* I" S6 i( `& v* m! ~3.童芯派第三方編輯器程式設計準備
$ i6 p- j: L* V
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    ! D- r2 ?2 [' U
! i: z* H9 Y. i, M/ K
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    , U6 X+ J. @# |+ w( Y1 H8 Z

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


4 X3 s* D0 D- o& Q& `; [
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    / ?) R5 s' J6 y! ]& j

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


+ j5 ^' g8 G9 {) `
查閱cyberpi API文檔見:童芯派API文檔
# \) V; i: H) N1 s: H$ T) L
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。! O* }' Y6 a! \' g; y) f3 p/ h: w
, z# N& a& t3 ^5 R( d2 B
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
- q) y9 U/ v) p. D
5.一些程式設計案例& y3 }0 l' Q* g
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
6 F- M1 M3 l7 L% n
功能介紹:" Z- c3 k2 q) M
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。9 A9 m! E7 k$ i0 m
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。/ H4 U, U0 ?) f9 s  O
結合藍牙模組可以實現無線滑鼠的功能。* b( v  M7 z6 r- \" W

3 h! O/ X( Q8 l4 x% kfrom pynput.mouse import Button,Controller
( w" S* g! T; C" z# Pimport cyberpi
& k# m9 R, e9 o$ d* t. Jimport time6 y9 v  s# j7 D

* K4 \7 L: k7 h- qmouse = Controller()4 j! V+ I5 E7 j1 H7 R

: X- m4 Y5 E7 L7 d) L! Q0 @& bwhile True:& D; ~# G% x* P( o
   if cyberpi.is_tiltback():
3 ~: H( r9 @& d4 t4 U       mouse.move(-3, 0)0 z- J5 X* R8 J9 \9 O! Z  H! W
       print(mouse.position)
4 U  [8 [; [; C; N7 q   if cyberpi.is_tiltforward():* z9 W: S/ t- E( N. T' E: Q5 U1 ^
       mouse.move(3, 0)
% L7 q" A4 P% @   if cyberpi.is_tiltleft():& u" ?7 \6 b' V7 B
       mouse.move(0, -3)' z, I! B! \( d
   if cyberpi.is_tiltright():
5 l$ t8 r2 y7 b       mouse.move(0, 3)
5 i) N; s; Q6 @4 C  b8 Z4 d   if cyberpi.controller.is_press("b"):
+ v* P1 Y' X7 _3 I% T/ \       mouse.press(Button.left)% J( Q, n6 o7 Y% ]
       mouse.release(Button.left)
' \$ G' m) j1 t1 L. B8 b       mouse.press(Button.left)
1 f/ ~: M( I/ S0 T( M  y- ~, {" d       mouse.release(Button.left)* ^# Z. ?# z1 M0 k
   if cyberpi.controller.is_press("a"):
! C1 d/ z  w9 V2 Y) b" G. p" a       mouse.press(Button.right)- W8 c8 U# n# F4 h% _4 y
       mouse.release(Button.right)& x) W! }/ E1 s9 t- X# H
    time.sleep(0.01)
/ O+ g' J$ I9 h) z/ N0 U, u/ ~: m. v1 l/ M4 s- D- x" L

2 B; g1 c+ ?7 D- h5 N
語音打字器

, E7 p4 X* r( t& W8 ~. m功能介紹:( ?, N; b& H; b+ Q- I
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。) e! j/ ~$ a6 X" S: p
將語音辨識的結果通過pynput在文檔中打出來。
/ B3 c* i8 L. e1 z0 g& g5 |  v' r該程式目前只能支援英文。
- s' N1 _# ]9 n; W( G5 e* R2 b7 R5 Q( ^+ s, w$ |
import cyberpi
1 h; W( r. o4 N8 v5 Ufrom pynput.keyboard import Key,Controller
+ e: t8 p( _8 M* E9 V) Fimport time7 t; {& O* ~, H7 z9 _
( r9 |" M0 W5 z& \. w
keyboard = Controller()
" i- i1 T( H, I$ ~8 vcyberpi.console.clear()
. }4 f2 u7 _0 O9 |! xcyberpi.led.on(0, 0, 0)
& y% ]$ e. Z( kcyberpi.set_recognition_url()
6 Y; m1 t! \; R% T9 [& w2 j/ rcyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得% b, F9 B2 M% Y: U& V
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")8 e! _3 P1 |) [* x' c2 T
while not cyberpi.wifi.is_connect():. g8 m$ o7 v9 `% c1 {
   pass3 C4 ~* r4 Z1 \) A
cyberpi.led.on(0,0,255)
. K. _3 O& a$ @; bcyberpi.console.println("WIFI已連接")# j( N6 I- M. s) S- z: W
cyberpi.console.println("--------------")1 \) H! Q( ^" L' u* ?  o
cyberpi.console.println("按下A鍵開始語音辨識")
9 C8 J  Q! F. k2 T) G4 ywhile True:
, r4 R# q: s8 A' o. P% y   if cyberpi.controller.is_press('a'):
$ l  U" g- S: z( C4 C  ~# z2 j       keyboard.press(Key.space)+ l8 P% p5 u4 W6 ~8 O8 g& u- k5 m1 u
       cyberpi.console.clear()3 A) v! A% d  |! P4 j) q
       cyberpi.led.on(100, 0, 0)4 |7 Q# W' P- h. k% E; p
       cyberpi.console.println("開始語音辨識")2 W# P# V, g9 |0 ]8 U# W
       cyberpi.audio.play("switch")3 A0 T  ^; v/ K% B, F+ W
       cyberpi.console.println("--------------")% N' p0 p2 ~7 z
       cyberpi.cloud.listen("english", 2)
; q$ \) J5 G5 b9 _1 H& y$ c       cyberpi.led.on(0, 0, 0)# Z4 a( g; a; _4 W9 ~
       say = cyberpi.cloud.listen_result()% A" F: v4 _# b( p9 {" l
       cyberpi.console.println(say)# C& S3 Y/ c0 A. v
       cyberpi.console.println("--------------"): O. V" @5 Q# C- ?1 X' V) ?
       for i in say:
( t8 W! F  [- K7 f  _            if i == '':
) _% Z& q& _4 d3 T, o                 keyboard.press(' ')
+ U3 ^5 d# `/ T% F3 w            else:: n' Q2 f$ s  C# s0 T8 ?
                keyboard.press(str(i))
0 T$ I: j! j4 M4 {( A                time.sleep(0.03)
, p0 q8 C, @# P+ i. F) T

7 ?0 F8 a8 k; @" U7 S, }matplotlib音量柱狀圖

; K. e6 }" c& x' Q6 O: Z* A- Nimport cyberpi2 T! X' ?' a. c- ]/ f& q
import time1 t- S2 E' k2 T% M& W- |/ P
from matplotlib import pyplot as plt
8 ?, @. C& v! y4 P# @% Y# W
1 c- o: E5 `! R; Eplt.rcParams['font.sans-serif'] =['Microsoft YaHei']0 S# j% L0 p$ E7 [7 g' Q6 v, A
plt.ion()
% D' P2 d: ]$ I7 b/ }1 s
& G0 W9 {. ?8 b2 o$ Jwhile True:( S8 p4 ^4 j. Z+ n
   loud = cyberpi.get_loudness()
7 K5 F" I/ x% j/ \: E   plt.clf()# w; j8 |, m! Q( m, d1 R. i
   plt.xlabel("數據名稱")- h5 ^3 t0 x* }# H' U7 k
   plt.ylabel("音量讀值")
( a& R2 X7 F; d, K9 E! @# e# f/ O- f   y_locator = plt.MultipleLocator(5)& O' x$ u' B  x  ?: E1 S
   ax=plt.gca()
: m! S- l) E# B) Z5 z- x   ax.yaxis.set_major_locator(y_locator), @; T5 P: \6 w- D9 ?9 T8 m; h
   plt.ylim(0,100)
; i, J2 A# r& }6 G" S& b/ H   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
3 D6 I, }, j, b9 u   plt.title('童芯派聲音感測器讀值')" v+ r9 T" y! L, d- T7 B. A
   plt.legend()
) K' ]; l, N3 k/ N' b* ]   plt.show()2 ^9 e# H/ L7 V' r! g; q
    plt.pause(0.01)" _/ I7 K9 r' a! M( }' X3 P- s
4 z5 Q9 C# o' S7 `# Z

( h9 I; ~7 b1 k1 H3 s" A) k8 hmatplotlib 多圖表顯示! o' I9 |- [  B3 U7 V* h

% j  r* N8 }; `  gfrom matplotlib import pyplot as plt
; J- w+ q  h/ G0 U& Simport time
. o1 `0 a6 N! Fimport cyberpi
9 f2 t" t& D4 u8 `1 _7 \
# c4 F( D& j  N% E8 L$ \loud_list = []# w" i( L( m0 N. e6 q& n; V
bri_list = []
( f, s2 [1 I$ X$ tplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體6 p2 n4 i4 A9 Z' X1 @9 c
plt.ion()! A& Y* c8 Z# ]
plt.figure(figsize=(10,10))" Z0 l) r( r" O6 K" [
plt.figure(1)4 q- |! }. e9 l7 a
x_locator = plt.MultipleLocator(5)
. U) f$ {  Y, ^3 L2 v/ e: E1 {$ \y_locator = plt.MultipleLocator(5): Z0 `! `& N# _' C8 C* k  q
while True:( J9 x# a- _. y, e) a; v! v
   loud = cyberpi.get_loudness()
: L  z9 l1 K+ N; l, R! e   bri = cyberpi.get_bri()
) q$ t$ X( `: e0 @* s   loud_list.append(loud)
9 d2 V+ ]0 a7 Y( r; v   bri_list.append(bri)  c" x9 `. S2 `4 c: C% u
   battery = cyberpi.get_battery(): I/ y$ a5 _2 a0 {9 Y' S( U  a2 u
   size = [battery, 100-battery]) [6 u/ Z$ f2 R3 V8 K; F6 T
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']( b! p# x* l: I7 A
   ax1 = plt.subplot(221)# W; P) y* x7 t* g9 ?8 P4 @
   plt.title('光線折線圖')& L; I6 X0 P! _
   ax1.plot(bri_list)
( [7 z2 J8 W. c. K4 C" {' p" S1 m( X   ax2 = plt.subplot(222)+ e; E/ j& I2 B, B# `5 X5 y: N
   plt.title('聲音柱狀圖'), j- d# R1 G6 p: m2 l2 N3 [. X% c0 V
   ax2.xaxis.set_major_locator(x_locator)
( v4 c+ m5 ^+ h3 o   ax2.yaxis.set_major_locator(y_locator)
: q) T) W/ d$ z$ D: F   plt.ylim(0,100)
- O8 F# K+ z+ g) u8 _. j* y   ax2.bar('sound', loud)
3 i  H& ]1 @. U   ax3 = plt.subplot(223)
9 U/ ^, g9 A( {! g   ax3.xaxis.set_major_locator(x_locator)
4 m9 o7 M1 Z9 d6 J) }+ u   ax3.yaxis.set_major_locator(y_locator)
/ I( d7 |/ ~# ~' O; y9 a$ A   plt.xlim(0,100)
- o! |" c) G: {; W; O. m/ C1 h   plt.ylim(0,100)8 g! X- G. B" U. r
   plt.title('聲音、音量散點圖')
$ O3 ?$ G( C/ [7 a4 e& e   ax3.scatter(loud_list,bri_list)& M8 S' R- ~$ w0 }3 b- y
   ax4 = plt.subplot(224)
( x- |' |$ f8 p( z3 n( T9 q+ y   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})0 O2 m, _( m8 p/ G: N
   plt.title('童芯派電量')
& A5 P* s) x7 t& w2 t* C   plt.pause(0.2). m3 s  X3 V/ U$ c( [) P9 ^
   plt.clf()
$ z' y! W6 [' A/ \6 X) H6 }   if cyberpi.controller.is_press('a'):
) S4 o* h: d8 a! v+ v5 E% ^       break' V& E+ U" ^4 ^. _& m2 d- Y
   if len(bri_list) > 500:+ E9 u. `* _8 N2 \  L' x
       bri_list = []* Q7 D6 i; j3 I( v
        loud_list = []9 u9 A; ~6 O& M

7 C* {# ]4 ~* H8 S3 z* O

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-22 03:52 , Processed in 0.024503 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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