圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 7761|回復: 0

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

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

+ R; p+ D( u7 A" M1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。4 S( M# D) ]! s* {7 }1 H

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

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

$ u/ _( u) M0 v7 h  B- S' [
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。3 r0 s* |' ]2 a  n* z6 l
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)- a. z% t7 g$ s6 \# d/ g
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。7 ?8 I  ?% v: e  Q: l$ P7 [) E

! q) C) Q( i& A& e4 {- B6 h
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)+ v) r+ V8 }/ X
6 B: d- q+ `  S1 p
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。/ X* m- N) {5 p; T: e9 T
6 x& s9 `/ Q) ]6 n9 Y) b
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。7 h  K' g8 G/ B; N

7 D/ I& ~$ o" F6 W& X( U6 _1 c; E3.童芯派第三方編輯器程式設計準備
- y. ]; Q$ D2 t6 s$ }
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。. U* v+ S( d# B! D
! y0 T5 v2 t6 G) ?
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    ) |8 o  }9 _; U6 |( B

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


: G; ]  H6 O& s: J8 e. i
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。  w& @6 n8 H/ H' l' J* j

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


) ~5 g3 g7 z- J8 }6 J% W' K
查閱cyberpi API文檔見:童芯派API文檔
7 x4 U) L5 q2 \9 u. a; }
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    5 |, q. d# _+ |# H3 B. D

* ^4 i+ h5 s5 G
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
! C8 m: x. e' ]8 z0 H0 O" c
5.一些程式設計案例
" h9 V5 n. Y" L% N+ }童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
' d; @' _- K% C) Z3 A4 n8 n
功能介紹:
+ D4 f% \( c$ r6 K8 q利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
2 ~2 o, d  Y! j& x, ^3 l通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
+ k' J9 J* O" F+ D; w. _: a4 ?結合藍牙模組可以實現無線滑鼠的功能。
9 N2 P4 A( E; ]( W8 _% B& [5 r, {" T) n) S% b. O" Q9 q- J
from pynput.mouse import Button,Controller
& B$ ?1 z1 [% h' p: h2 E2 Bimport cyberpi
; h9 u0 n' k  c" @$ a* s/ iimport time
- X7 `/ F) h  a- h " d3 i: p1 r  f* B3 [, h3 e
mouse = Controller()
3 J( o8 J& ?( I( |( Q6 g
$ d" ^% V! Y/ H+ n4 Ewhile True:. f0 i- \4 b' U9 n) b5 S& G
   if cyberpi.is_tiltback():4 q! j2 c  @3 u7 |
       mouse.move(-3, 0), f/ t% ]) X- B+ J
       print(mouse.position)
' v( S8 R# B5 ^   if cyberpi.is_tiltforward():0 Y- g0 D2 x0 r- l7 i
       mouse.move(3, 0)
, T% v; U" v* w8 Z! B; I4 M   if cyberpi.is_tiltleft():
) j( `3 |5 B; k  ]# ^4 n: A. I& |       mouse.move(0, -3)# g4 h+ Y5 G0 {5 s
   if cyberpi.is_tiltright():; y/ h/ F  k  f' k9 h: N+ P! w, m
       mouse.move(0, 3)
" j/ J' B5 Q6 [, {, N$ k# Y3 R   if cyberpi.controller.is_press("b"):; M! K$ W( Q) X& e4 z
       mouse.press(Button.left)
. ]( a) W" ^: \, ~+ q       mouse.release(Button.left)
1 @5 S% u  D. m8 e6 p6 z       mouse.press(Button.left)/ D6 [( Q; Z+ B" f  L
       mouse.release(Button.left)  B1 Y1 D7 A- z2 R9 X& m; z
   if cyberpi.controller.is_press("a"):
8 Q9 g" q; U! {$ s       mouse.press(Button.right)" ?. s3 g2 [, |
       mouse.release(Button.right)* h2 w6 e% W; J0 a5 I5 Q. ]& }+ ?2 d
    time.sleep(0.01)
" ^4 J- F2 o( q: W  y% \, U# j6 h' v0 C0 T+ x: o8 o: w/ y

! |' `6 T  G; D# i6 d
語音打字器
) z5 I* |1 V/ s* c
功能介紹:
' |5 [/ T6 n0 {9 B( k% R$ k1 p9 J利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。- x: D% T8 D# X
將語音辨識的結果通過pynput在文檔中打出來。
2 m/ d+ k8 G8 R3 w3 d. B該程式目前只能支援英文。
5 v8 J6 |  ^" c8 ~6 A4 _. f# V" y. ?. \4 ^' w( Q
import cyberpi
* d1 C1 U, ~# L: w! ?* Tfrom pynput.keyboard import Key,Controller) f& _& R) G  F) l2 M8 c
import time* k% f( Y: {  _0 A8 X8 U
) a) {. s. S! z0 [
keyboard = Controller()8 r) L! n$ o: [% M. X, I7 O* u
cyberpi.console.clear()
3 v% E4 |" h2 V2 O$ _: R% |1 b, {) v2 V% xcyberpi.led.on(0, 0, 0)
- l; f' q; {5 g1 d& R" V" ncyberpi.set_recognition_url(); k& M( s* G% r' I8 v
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得0 J3 H, [7 v$ h+ J
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")  N+ f  I9 e( }) t8 {0 I
while not cyberpi.wifi.is_connect():0 q4 r+ t! y* U+ d$ I% x
   pass# y; H, ?) \- M: ~0 m% |; \
cyberpi.led.on(0,0,255)% g6 [# h8 Y2 g7 I& u
cyberpi.console.println("WIFI已連接")+ C" W* [6 `) w5 `/ n2 M
cyberpi.console.println("--------------"); h. m1 R2 z1 e/ h/ ]& N
cyberpi.console.println("按下A鍵開始語音辨識")
' M3 Z. @+ V$ B% T. Qwhile True:
! g; M; Y4 R5 c+ D, ]0 b4 B9 i   if cyberpi.controller.is_press('a'):
2 g: o3 d$ @) {# E1 B* w( L       keyboard.press(Key.space)
6 s5 p5 ~- a' O& f       cyberpi.console.clear()
$ J2 p# p' `! ~/ I7 }+ x, l+ {       cyberpi.led.on(100, 0, 0)
& A  z* p+ p; r       cyberpi.console.println("開始語音辨識")5 ^  Y6 o* X  K* t; A* J
       cyberpi.audio.play("switch")4 P% L8 ]  _: t; v0 c  S- R: i
       cyberpi.console.println("--------------")
0 e$ f+ J7 H8 T9 X       cyberpi.cloud.listen("english", 2)
% p% _4 Y/ o( f: {7 M       cyberpi.led.on(0, 0, 0)6 R+ H9 r9 \& e! v
       say = cyberpi.cloud.listen_result()
' g2 K% r6 e' o       cyberpi.console.println(say)
& |1 K4 j8 l2 G8 b  T8 l/ j       cyberpi.console.println("--------------")6 ~  g/ _' m0 @/ @; Q5 G
       for i in say:
. l1 p7 J4 ]" E& @" ]! a            if i == '':) K0 P% Y" x* z' p% q% W# n' x
                 keyboard.press(' ')
4 p" J  D# W) O5 S            else:
: W+ ?) Y+ {0 ~5 B6 x3 T* M2 {                keyboard.press(str(i))9 ~! ^3 m. }( d% h, N  t- o6 i
                time.sleep(0.03)! g" z' V* B, c7 t
$ b$ \3 p5 i1 ]$ p9 h1 V8 g7 Q
matplotlib音量柱狀圖

5 G% L, o+ o( a. P+ V* i( \import cyberpi
3 w3 c! I; [/ J* O5 Y! oimport time
" p. F& f' c; U( {" Lfrom matplotlib import pyplot as plt# f0 C7 L- H9 ^- N# |+ ?
4 n, ~; \# l+ b1 c4 W4 ~
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
, U% a+ t( j( E0 {$ nplt.ion()% U; y% C, Y; G, \; x
2 d$ B5 Y0 l* V, n2 P
while True:3 t. K4 j, M3 L+ Z+ L5 |& k
   loud = cyberpi.get_loudness()9 ]4 Y, A9 C9 C* b5 r) H
   plt.clf()
& a% Z' C9 r+ H- r1 ~3 p' F+ ~  e   plt.xlabel("數據名稱")1 A! t) C; M( A5 Y  n
   plt.ylabel("音量讀值")' V* i% C: |+ B2 @3 U+ F
   y_locator = plt.MultipleLocator(5)2 I2 V: E" d/ ?( ?/ {! `9 A
   ax=plt.gca()) f, A+ S6 \: D( s; W
   ax.yaxis.set_major_locator(y_locator)9 V: C6 ~' v5 ?# A$ `
   plt.ylim(0,100)8 T$ S7 P, x9 v/ P3 |
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
3 y* }2 _0 j6 q+ G+ Q   plt.title('童芯派聲音感測器讀值')* d! Y' O4 @6 K  \  R
   plt.legend()
! Q5 F. D$ T+ ^, }$ x* R' M: M# L   plt.show()* i6 o/ m* S+ x$ j  h
    plt.pause(0.01)
& ~9 w7 A( d2 _; B; p0 U  Q+ G4 B. r/ A
- k$ \+ Q$ P. \' x1 O! g
matplotlib 多圖表顯示8 L  P% P( B# e+ |) A5 m  h

' S8 X, _& l6 N$ B6 s: R" `: ffrom matplotlib import pyplot as plt
7 `7 @$ V2 t% _+ n* G/ x1 ]4 {import time: S: {! Y$ x$ n
import cyberpi
6 s' ^" {  O/ A6 @- p
9 i2 a4 P9 d6 D; p- cloud_list = []1 o& Z' `2 `. _" a, v! M, t  j, L) m
bri_list = []
% r+ Y. r/ x  }+ Splt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體/ M' J# p$ e2 }7 U' y" |$ ~- M
plt.ion()
  S, H- ~* ~; ^( K3 s- i6 eplt.figure(figsize=(10,10))
1 G1 U; W/ `+ N. {( t* W  A8 Iplt.figure(1)
: b& S/ v* w6 c8 Q1 G8 Lx_locator = plt.MultipleLocator(5): l) ]7 B' @# ~
y_locator = plt.MultipleLocator(5)
( k) s! W. Y& i  I; a6 X: R3 F: gwhile True:( ~3 W0 X6 J! i+ m. V: w! Z% F
   loud = cyberpi.get_loudness()
1 R3 T' x7 c! c  p9 C5 h   bri = cyberpi.get_bri()0 v% w( P6 i$ Z% X; p- s3 ~6 i
   loud_list.append(loud)
" R2 Q, a, X7 ^, o2 W   bri_list.append(bri)
, r( y; J( I2 m. ?1 L* f* _   battery = cyberpi.get_battery()8 D% _8 X& ~: p0 K6 {! {4 w
   size = [battery, 100-battery]- b$ R% ^8 P" K% k: c6 M9 d+ l& }
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
+ c0 M% D" r5 P4 n/ W/ c   ax1 = plt.subplot(221)
- U8 S8 k( @2 N& @. s   plt.title('光線折線圖')6 a$ t5 _6 p: c% h$ }
   ax1.plot(bri_list)
$ k6 U3 R% n' k7 i   ax2 = plt.subplot(222)6 e& v# h) V: Y; |6 c% Z' f
   plt.title('聲音柱狀圖')
1 E, q1 d6 G/ k   ax2.xaxis.set_major_locator(x_locator)! {6 Z  w" q8 g2 S8 b- h: L
   ax2.yaxis.set_major_locator(y_locator)
, I2 v+ Z/ G8 c" A+ s$ h7 @' Y   plt.ylim(0,100)+ K; e; H1 R, E" P1 F
   ax2.bar('sound', loud)
& g  F/ w( @3 _5 X1 O- j   ax3 = plt.subplot(223)
& G9 P1 f4 v, M8 ~6 m* S   ax3.xaxis.set_major_locator(x_locator)
* B0 @0 O. \; `- D   ax3.yaxis.set_major_locator(y_locator)
+ S8 x; `0 u' C% p6 \2 [9 Z   plt.xlim(0,100)
* Q' \  g; @% y6 k- |, ~   plt.ylim(0,100)
5 R% e1 c" q9 r" w% }" \* A3 a   plt.title('聲音、音量散點圖')
" N( f7 w! ]9 j: q   ax3.scatter(loud_list,bri_list)) s& o5 q' I5 [) U7 h5 p' Q
   ax4 = plt.subplot(224)
* t; k; x! w+ }   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
3 M0 Y, X2 k0 P- _9 f( A( u   plt.title('童芯派電量')
+ A2 Q. ?: r" p3 ~5 m' m   plt.pause(0.2)% D' a$ h6 |3 f! r: m8 ?& F
   plt.clf()5 S4 z  W7 u3 `1 C. C& d
   if cyberpi.controller.is_press('a'):
' E/ m1 Y; n  L; d) T$ S/ G       break
- h8 P" e, [1 P: `# Q8 u) {5 [   if len(bri_list) > 500:
; N' `5 ^! R: X1 j# \       bri_list = []: E% V0 |7 _/ W
        loud_list = []
  u- l" q5 i* v- u$ o# `  X
! B- d# m2 j  y6 f

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-7-9 15:53 , Processed in 0.025658 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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