圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8496|回復: 0

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

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

+ e7 j6 K5 I4 y3 h) x& d1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。' o% f9 ]0 K6 w# {9 G: b+ |

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

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


' d5 f7 j* ]5 ]; N  b
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。" {, u$ }# M! _+ t8 ~
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)6 s- ?: }7 m5 \0 [6 b7 a. G
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。  S. B9 U- i8 k
9 \: V: U, U! F) P. p1 [5 V
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    * _3 Y3 ?7 U5 \

3 `( T8 m) y) A( P' Q
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    % n8 D, @- s+ f8 t

" w* K, {8 @+ Z! u' q3 Q
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。. U3 {* z1 i  l, H" K

: C* c  _) ]4 y) b& a; O3.童芯派第三方編輯器程式設計準備9 M- m3 a* ~% Q9 w9 }; E) B
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。2 R" U- L. p5 X5 N/ G9 l. D! [
  B+ @8 U  ^) `) o( l
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    6 E0 H8 [6 r7 W1 g

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


* [! p3 y7 V* h. s& R2 G: x
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。# H5 q$ a) t% z9 h: l# Z5 C  j

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


  o; x0 T8 U- C  w, t3 p( J0 C; R
查閱cyberpi API文檔見:童芯派API文檔
1 E7 u% ]7 ~5 t' }
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。3 E! l; K0 E0 C. C

; u: d3 j: E2 \% o* W$ U& K
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
! i9 ^3 x) O( k5 _( L
5.一些程式設計案例' Z, l' ]* g9 D& \( E# o
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

2 H. ?5 V( c3 f0 `- {9 S) a功能介紹:8 V3 U9 @" O+ P9 _4 _! T# e0 K' f* d
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。5 J; E0 z0 K5 [4 O2 }  |
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
' S" ^0 t* i: v) R結合藍牙模組可以實現無線滑鼠的功能。4 `" W. @, r. w8 ], V

, i" @4 h# N3 \2 [5 Ufrom pynput.mouse import Button,Controller$ x+ {: k( E9 S- x! W1 f, l
import cyberpi& d$ [/ n7 ?& @' y4 X2 N
import time7 w+ i2 |$ H$ e
2 X5 D! B6 C+ u
mouse = Controller()( `/ q  T" ?+ \7 v7 J
3 o0 s4 L5 e" i: W$ k
while True:* |. d8 D6 U! s8 Q2 {0 s
   if cyberpi.is_tiltback():1 V% L9 z! ?* R6 a
       mouse.move(-3, 0)
0 w) z6 R7 ~, r7 _3 [% [7 b* O       print(mouse.position)
3 U( u6 {, e9 W; n& t   if cyberpi.is_tiltforward():6 j( ~% [2 S( V. y
       mouse.move(3, 0)' }4 n/ {! U3 A* t2 o4 [# m
   if cyberpi.is_tiltleft():( G7 ]0 Y) b: W( Y
       mouse.move(0, -3)
5 e6 y! c3 [" ?   if cyberpi.is_tiltright():
: ~0 r1 k$ A( M" N8 \       mouse.move(0, 3)
1 ~* b% B* l. p4 f3 E, K' j   if cyberpi.controller.is_press("b"):& D- T8 `% [$ X+ r
       mouse.press(Button.left)
5 r* ?& N4 P4 b( _7 }       mouse.release(Button.left)8 _# h9 I  s4 i% {! ?+ `7 C
       mouse.press(Button.left)
- ~5 v4 {4 |% m       mouse.release(Button.left)
9 h. S0 E$ x0 F, g& J: A5 ^   if cyberpi.controller.is_press("a"):+ C: B2 C# g7 u5 D1 Z1 s
       mouse.press(Button.right): w9 g8 Q% S' \5 ^! V
       mouse.release(Button.right)
6 u' X. c( ]4 j4 \- |, L    time.sleep(0.01)! P. Z* }: G' B

8 x2 a  x% G, |+ R- R, V4 J4 P' L$ {( @- Z5 g5 O
語音打字器
! d4 n. a! ], n# @+ x3 H. m+ C# v
功能介紹:
9 \8 N. P% q: B7 i利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
; B  o9 [2 O5 C) n將語音辨識的結果通過pynput在文檔中打出來。3 m: h' Q% d' ^5 v8 C- g
該程式目前只能支援英文。: ^5 R5 ^& v% B( d# R
& R3 v" f, b1 a" w( |/ L
import cyberpi/ t7 A1 X5 Y( d7 G! Q6 L
from pynput.keyboard import Key,Controller
5 U1 l+ K1 o2 v: J0 Z  N+ c. p- Timport time
2 t; D* [8 A+ R
0 R: b, a0 f$ \5 d+ g+ xkeyboard = Controller()' V4 m' O9 s0 e' r0 H; j' n
cyberpi.console.clear(); T" g+ W' V& a' F, d' m6 d$ Q' u$ [/ b
cyberpi.led.on(0, 0, 0)
9 Z- @, `+ L. {. a1 Fcyberpi.set_recognition_url()& ~$ ~8 j# F6 J1 c0 Q: g
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
4 d# r& S" u% R: u2 Z' acyberpi.wifi.connect("WIFI名稱", "WIFI密碼")4 N; {, W4 a; b$ C
while not cyberpi.wifi.is_connect():1 b0 c/ T3 r! [" w
   pass. I! ^, O( u) q% k# W3 P
cyberpi.led.on(0,0,255)2 o4 |4 b* A* J% m/ h! b4 [* t$ m
cyberpi.console.println("WIFI已連接")
* m% [+ q6 [3 ~5 B7 rcyberpi.console.println("--------------")
9 l: z! q- q7 W- ~( y+ \cyberpi.console.println("按下A鍵開始語音辨識"), E2 I0 l. p+ I
while True:% W8 e* z$ Q4 L* Q2 ^* F' g; e
   if cyberpi.controller.is_press('a'):. y# q- ]" n' g7 U% ]; V0 W
       keyboard.press(Key.space)* G9 ~0 p0 k5 I9 S& c3 g/ T8 c+ Z
       cyberpi.console.clear()
- g! {' H3 b) G5 ?8 j- T. M       cyberpi.led.on(100, 0, 0)
% z% ?$ }4 v% n6 |       cyberpi.console.println("開始語音辨識")  [& Y+ E5 W& W* G
       cyberpi.audio.play("switch")( {5 j; u7 s" P4 t# `5 {' F
       cyberpi.console.println("--------------"). @; o5 p# n. F8 L
       cyberpi.cloud.listen("english", 2)
9 O5 S3 _4 a* q& z" z# x. ]8 s       cyberpi.led.on(0, 0, 0)6 S1 r2 l% Y, ^# q0 a  i5 R4 E; L3 ]
       say = cyberpi.cloud.listen_result()
7 M* x$ ~+ C% R( P- E       cyberpi.console.println(say)
, v' [! N5 r  B: {4 W       cyberpi.console.println("--------------")
+ |/ [6 p3 C- T, i; D. w( M0 y       for i in say:
9 x" T1 w7 C7 A& O) ?2 x! y) ^            if i == '':
& r2 \# q4 C1 @) R2 f/ J4 o                 keyboard.press(' ')
# q  [/ J, d$ z" J) m            else:
' ~' ~$ W- q5 M7 H- i; k                keyboard.press(str(i))
% a% V8 M; S# Y+ a                time.sleep(0.03)7 f8 {2 d! g4 ^0 Z; F; G  Z/ K

4 K, X1 ?  h$ N4 umatplotlib音量柱狀圖

& a6 A$ {, h4 ]/ uimport cyberpi
0 X8 w+ c0 j6 E  Z8 \. Fimport time0 i6 G! b- b$ Z2 [6 ~
from matplotlib import pyplot as plt. A6 [) ?' r% V5 p
; r8 k1 Z" ?( Z& o+ q2 Q  V
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']. o. ]7 \0 n& U$ {0 @4 H3 ]6 g
plt.ion()
8 A5 |$ P0 {. R  f  { $ B$ B' {. s" L: h4 p  H
while True:% F" K3 k, j. a% i. p
   loud = cyberpi.get_loudness()& j* C  x: n2 o+ R  Y$ u5 B
   plt.clf()) e, S2 s2 J$ w" ^3 ~/ v
   plt.xlabel("數據名稱")0 [, D  D' ]  n. A( [9 i
   plt.ylabel("音量讀值")* ~& k* z! x. L4 Z
   y_locator = plt.MultipleLocator(5)  s  B( ~5 E, b
   ax=plt.gca()6 C: M  ]) P) I& W
   ax.yaxis.set_major_locator(y_locator)
& x9 n& S6 `+ \' {   plt.ylim(0,100)+ Z8 t8 p2 G7 Y. z: w  W
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
$ p3 Q. d& ]4 `# P   plt.title('童芯派聲音感測器讀值')& \* }' R7 r, q+ T8 q9 o
   plt.legend()
8 L9 F% P/ ~1 h6 _0 N2 E   plt.show()1 {$ B- @3 c  }
    plt.pause(0.01)! N" d, x3 z- Y  R
! J: [0 \7 @8 b# r+ Y, ~. {+ J# [

" g7 M1 |0 E# T  g" Z) U1 ^matplotlib 多圖表顯示$ f0 e  f7 ~* J' O' b
4 W6 y2 `& T+ K8 R* W# Y( C% B+ z
from matplotlib import pyplot as plt
0 l  J9 K! H4 V- Eimport time' R. ~, E$ c* M0 `
import cyberpi8 K5 n6 T7 `9 I* b- ]- \+ o
% ]7 v6 ^" K2 P& q- a" S0 m  k
loud_list = []+ y9 p# M- b) n! t8 `6 c
bri_list = []
1 G: c- R) q: r9 q( S; {* vplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體5 R* V& h! D& d4 p0 _, P* x
plt.ion()( o0 O' h  U2 _5 v1 H* W5 k6 x
plt.figure(figsize=(10,10))7 f2 \% u+ l, d% H% x
plt.figure(1)
1 }8 Q8 l' \0 o  q* Y' z  |# [x_locator = plt.MultipleLocator(5)
6 ^1 G! Z5 [2 c, K/ j* hy_locator = plt.MultipleLocator(5)( A7 ?; f2 n6 H! s; l8 L& S
while True:
0 ]3 B5 k% H. j& m   loud = cyberpi.get_loudness()
$ V8 P% N4 s5 {, M   bri = cyberpi.get_bri()
3 c7 E: d( n6 p$ _2 Z/ h+ G   loud_list.append(loud)+ d' m1 f0 P8 c  f" E6 F! k
   bri_list.append(bri)! x3 T8 h* i/ U2 M9 O2 h" [3 s
   battery = cyberpi.get_battery()8 |- W% Q( ^0 }
   size = [battery, 100-battery]
2 c" L3 y$ I6 P/ o   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']% L/ q1 \) d% ]8 D7 J# t
   ax1 = plt.subplot(221)$ {2 u3 w' y( p; Y" Y
   plt.title('光線折線圖')& K' l9 y0 ]/ V9 O; p5 X
   ax1.plot(bri_list)  j! }4 e. @+ d" \
   ax2 = plt.subplot(222); {; v: y( U; m9 K( R3 A
   plt.title('聲音柱狀圖')
2 X+ A/ Y. C2 \+ x: }   ax2.xaxis.set_major_locator(x_locator)
) P7 C4 M) d" z* A7 t1 M. z, [2 c  ^   ax2.yaxis.set_major_locator(y_locator)% ~. S3 x! t; t. R# O6 U$ ?6 A; s
   plt.ylim(0,100)
. k0 ^" b" z6 t   ax2.bar('sound', loud)
" X; O/ _8 b3 i  A, m6 L, I) }   ax3 = plt.subplot(223)2 K) @' G! f0 T/ k: U8 ?, P: u
   ax3.xaxis.set_major_locator(x_locator)( ^: G; G+ w$ _  u% K
   ax3.yaxis.set_major_locator(y_locator)3 I3 L+ O% u8 J4 O
   plt.xlim(0,100)
* L6 a; a/ U- w9 R0 L2 ?   plt.ylim(0,100)& H  S5 ~, F1 f& Z, y- K, F" J5 O2 P
   plt.title('聲音、音量散點圖')1 p5 @+ B+ m8 x4 F
   ax3.scatter(loud_list,bri_list)
. X0 j- k8 c5 L   ax4 = plt.subplot(224)
( y6 S" h4 R. |4 _   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})' i; A" [9 d( h
   plt.title('童芯派電量')+ C% C. n3 [) e8 I2 x: I. i) E
   plt.pause(0.2); v3 k- w$ e' Y; C. E/ ^6 W
   plt.clf()
; e( Y) t/ G5 [, t   if cyberpi.controller.is_press('a'):; v7 L4 ]7 e0 v" t  E4 |$ l) c. }
       break3 I' D: _. B1 G* ]% c
   if len(bri_list) > 500:
/ v' Q1 _$ u6 j: d; e       bri_list = []
7 ^7 V$ ~) k+ E; w9 }        loud_list = []
9 z. _& Q* u' y0 r6 v, H4 |( C$ j( s& R$ m

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-2 03:03 , Processed in 0.028380 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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