圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8528|回復: 0

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

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

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

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

8 |5 E2 h/ f3 e" \! B+ v
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    % R/ `( o3 o% K5 S" Q# p7 y
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可), V5 d. W- d1 W4 \
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    ' L7 X' z, s4 j! k- K( ~
! r: L0 Y6 Z" P$ R7 }
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
      g& b6 {7 H+ v5 p$ B' L* ^5 G" ~
# n7 o% V+ A! |& n2 [+ y
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。$ S. D; }6 K4 r  x7 G9 I* |$ o
* E$ J3 b, j, \- ^; ]
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。/ I/ T7 ?6 }) b2 i, [

0 R: U, _# d1 t( b0 ]3.童芯派第三方編輯器程式設計準備
9 W  p7 V, @# b' F  u) B
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    8 x2 V! A  k( }' |8 \+ R# O1 \

, ?7 v2 X% b. A3 V1 u, E9 v
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。) ]( i# s' v0 K) ?% c5 E

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


7 `* m# _- i% C! K4 c0 w4 h7 A
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。' X  x0 \: R7 p, r  t( W

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


8 T/ f. h  W6 f
查閱cyberpi API文檔見:童芯派API文檔
3 h' [0 {0 K8 r4 X
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    9 e2 X4 L& T3 x2 r/ b

( i1 L/ R/ f) A. z
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

* Q1 L0 T  k' ~- E/ G' a8 t# r' f5.一些程式設計案例
, G2 R1 I/ U5 f! q童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

, n& E! X, `* _# a功能介紹:
3 i0 I# c- a! o" E  Y% }利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
7 U# M( S+ p0 W5 {5 ^9 g7 T3 b: E通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
2 T- f- q) r! k4 B+ f結合藍牙模組可以實現無線滑鼠的功能。
) z3 s( n8 f, W, Y2 p6 s5 V/ j/ w, Y
from pynput.mouse import Button,Controller
+ t* X9 ]6 @; [' }) n/ b7 k0 ]- ?import cyberpi( f" q1 i* ]* k# _1 S
import time
" B+ N9 r3 z, U% L, h5 N
0 Y: z5 O  N. Mmouse = Controller()1 f  e% J1 H/ Z# n2 V

4 ^  x# G( w7 ?0 v, r& M2 S, Ewhile True:+ t4 G" b7 |( O* }8 ~$ @- p8 X
   if cyberpi.is_tiltback():& t4 L0 z" z8 x, X7 T
       mouse.move(-3, 0)
: E8 z- s1 @6 c5 ~6 W       print(mouse.position)
3 c# P) n; H& M   if cyberpi.is_tiltforward():
8 L  e5 L/ B9 j9 g0 X% w4 y       mouse.move(3, 0)
4 {! @0 \, r9 t7 S) ?. w+ b   if cyberpi.is_tiltleft():& r1 p; w4 V% n! o' I& }. m
       mouse.move(0, -3)
) O9 m: j  R; p% p3 `% G   if cyberpi.is_tiltright():
  Q9 z9 ~, B* r+ ^/ v       mouse.move(0, 3)- s+ |. M. D& ^' G# Q. @7 Q0 }
   if cyberpi.controller.is_press("b"):6 G  s/ Y( j6 [1 f
       mouse.press(Button.left)
9 c& i+ s- S7 t7 o# `2 c3 D. G       mouse.release(Button.left)
, T* \! r1 q1 J' [6 Q7 d. d       mouse.press(Button.left), @1 b' l+ K! M
       mouse.release(Button.left)0 f" u0 b0 F  L* d
   if cyberpi.controller.is_press("a"):
/ l. w7 n- r) o' C' h       mouse.press(Button.right)
- v+ R) j, {9 F( u6 N3 v3 G3 c       mouse.release(Button.right)
, M+ U+ {4 Z; O' [+ G    time.sleep(0.01)
* @# X% Q1 [+ X. c8 U
/ M. f# t, t  ]9 q, t4 M8 x4 n+ _- x# x7 {4 [4 P
語音打字器

) s( t: M9 {' F7 h1 P功能介紹:# q) y+ n0 d1 ]+ ]: ]% Q% s2 u% r
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。, _. z4 V$ x$ i0 C
將語音辨識的結果通過pynput在文檔中打出來。+ G) r1 d" M' r% A
該程式目前只能支援英文。
* q& {+ B/ Y7 A2 j$ y  w  S) J- y( Y- K$ F' Y( Y4 E
import cyberpi
1 k/ U5 z4 O* s9 S* T+ @6 bfrom pynput.keyboard import Key,Controller
( S4 D5 \+ ?: \4 P9 a  M) bimport time9 @' r9 H  @8 j* i& t* V

$ W' I  a" m7 C0 xkeyboard = Controller()' E3 y; r& ?2 d* [: Z% _: B- f! f
cyberpi.console.clear()1 q0 Y1 j- N* o# u  t
cyberpi.led.on(0, 0, 0)7 q, S# |6 L2 M4 }' x6 z1 r
cyberpi.set_recognition_url()
0 n4 S6 F1 J; I5 @3 tcyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得6 [) B+ _" \: H
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")( K, {+ a$ X0 c; p& X* V! [$ w+ \
while not cyberpi.wifi.is_connect():( u3 \  D# @+ U% t
   pass9 P; P" \' F" @+ [+ a! J' I. b
cyberpi.led.on(0,0,255)  {+ b0 x; W: E; a* S! ?3 c/ i
cyberpi.console.println("WIFI已連接")! C& h% k" V, t  l
cyberpi.console.println("--------------")
& p. W1 K$ U; X% E; D& C/ S7 `cyberpi.console.println("按下A鍵開始語音辨識")
8 a+ @1 O: b7 n. B; E+ q  mwhile True:4 B  L, z1 c/ r1 J2 `& L5 I
   if cyberpi.controller.is_press('a'):
7 N3 W+ g' H* C) J       keyboard.press(Key.space)
9 ~, {; s! X2 r7 y( F( e+ i       cyberpi.console.clear()
# S( X* Y3 U' G  I& M       cyberpi.led.on(100, 0, 0)% j! K. ]: [9 M7 X5 L4 |
       cyberpi.console.println("開始語音辨識")4 y6 _' ?4 l: o& u0 g6 h
       cyberpi.audio.play("switch")) S/ D" ?: k6 n0 W/ y& N0 X" W
       cyberpi.console.println("--------------")
$ F. I& O9 E5 L) L* D       cyberpi.cloud.listen("english", 2)+ M* p5 {  F% @# R& {& i
       cyberpi.led.on(0, 0, 0)% \9 H+ J* @" b8 k& B
       say = cyberpi.cloud.listen_result()
! t$ J& j6 O, ]& p       cyberpi.console.println(say)4 W/ R1 i( _2 ]8 a
       cyberpi.console.println("--------------")- j$ e3 Q$ f) f( M! n. b5 Q9 K
       for i in say:& `& C: g' i% Z$ ?+ N3 y) f/ G
            if i == '':* @* R6 a( x. K% L! o  N
                 keyboard.press(' ')
$ N6 ?% l8 J& c* v, E' e4 z            else:! m" k) m; P( B* M4 w
                keyboard.press(str(i))
+ P$ S( Q5 |- S5 v2 m                time.sleep(0.03)
& w  e! v: e1 v! b0 Q: A

$ b' b) F6 u0 z  `  Wmatplotlib音量柱狀圖
7 E% u' s1 N6 h% A
import cyberpi
- R6 l$ m. L6 Himport time
, D1 j- p& S, e# I! S6 s  W  L  |9 Dfrom matplotlib import pyplot as plt1 b3 \: `/ k$ J6 o) `& M
; o8 m' n' K/ x
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
! \* X, J$ G3 k+ O3 Wplt.ion()- U) ~: p& q- J! L# P4 n
3 y9 l% |; K  C. @; X$ a1 P
while True:: V9 o* r2 s& T
   loud = cyberpi.get_loudness()7 U) d, j2 x! ]1 G, \0 o( V6 ~% i: ?
   plt.clf()$ j! M, V7 T) I8 ~
   plt.xlabel("數據名稱")
$ v! L* N9 e. k$ M   plt.ylabel("音量讀值")
2 x5 V) B, q$ R7 N$ d( B6 P! ~   y_locator = plt.MultipleLocator(5)
4 b9 ~" K; g( w, p" X# o   ax=plt.gca()
: ?* h# v0 s3 m( c7 O6 q5 j   ax.yaxis.set_major_locator(y_locator)+ R6 n/ c9 K9 V6 o; S& \3 F5 C2 Z
   plt.ylim(0,100)( L5 s' k5 {3 Q6 k1 {. T  ^5 h7 t2 b
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')) c; ], _9 n2 G& Y4 F
   plt.title('童芯派聲音感測器讀值')
  \# `- c  _; C1 c: G) U: E7 C0 s   plt.legend()  n) ~1 ^7 G& ~" s
   plt.show()' P- X; C: g4 {' w8 Q# g
    plt.pause(0.01)* I: {( E: \5 i

8 A% b6 t+ K& G1 O
# v& g1 Q" [: S9 |+ Z2 V! `matplotlib 多圖表顯示1 _7 \8 C3 b2 A1 p% F
" O" v& B# i3 i9 s( {4 m  v
from matplotlib import pyplot as plt( z2 N+ I3 H# R2 |
import time6 g4 Y/ |5 c+ r* s/ d; F: }) a- k
import cyberpi
$ ?$ q$ N! {( B, p  u/ |- q
' ^" [  W) L3 H8 J4 S+ ~+ Z6 E! g! `loud_list = []
; D  V8 H% n! e1 e5 J6 }: ebri_list = []
7 y5 o7 z, F0 e' w3 }0 K) @plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
7 c% W9 d5 ]; J* i9 o& D; Bplt.ion()
  `1 J, h2 `8 k. Y' o0 ~  D" ~plt.figure(figsize=(10,10))' X. g( d3 g6 Z2 s( |$ s$ C. J/ @7 M
plt.figure(1)$ k) Z. M/ p9 K* f# w5 M! R& x5 ]2 p
x_locator = plt.MultipleLocator(5)8 i8 f. f6 R5 o8 v
y_locator = plt.MultipleLocator(5)
# L: `! [- |2 wwhile True:
+ x8 ^- E( {' H8 N" }' C% i   loud = cyberpi.get_loudness()
( X/ m0 Z0 W( p, G, b5 E+ V   bri = cyberpi.get_bri()$ }1 E6 J$ o  U7 A2 q9 y* z* A
   loud_list.append(loud)
5 v2 Q3 `, U! G0 Z2 Y" T1 O   bri_list.append(bri)
! F8 n3 j! N+ _2 ~' M" [   battery = cyberpi.get_battery()
4 f7 y: \. K6 e/ X3 Z$ |   size = [battery, 100-battery]6 @" T; ]+ z' c% Z+ ]2 W
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
) b1 A3 @: A/ i2 O3 J2 @- \   ax1 = plt.subplot(221)
, R" ]' c. |* s$ Z* t3 U   plt.title('光線折線圖')
6 A. a( b% [$ b$ v- j6 G" \8 X  Z   ax1.plot(bri_list)
" }5 E3 V/ V  b4 a  v5 r   ax2 = plt.subplot(222)$ f4 V% c# D/ e8 V. _0 @! M
   plt.title('聲音柱狀圖')
) C; ^4 J; j2 @2 |4 J: i   ax2.xaxis.set_major_locator(x_locator)
( @! N, l- w8 B8 v! t) }   ax2.yaxis.set_major_locator(y_locator)
( y: J  w( f6 t# f; t/ f   plt.ylim(0,100)
' x" d7 d6 }, N/ i: }  a9 `" g# v4 U   ax2.bar('sound', loud)
- {  i7 N/ H8 M3 s/ t1 O* e   ax3 = plt.subplot(223)
0 K8 n6 R) w) {- K- L0 G( m   ax3.xaxis.set_major_locator(x_locator)
6 Z6 \9 o  |6 q* d   ax3.yaxis.set_major_locator(y_locator)! q9 m: E( k# B  C5 T, n. c
   plt.xlim(0,100)6 ^; j5 s) [. g% h
   plt.ylim(0,100)
  Q4 }: W6 y/ x1 e  R   plt.title('聲音、音量散點圖')
( R! ^4 p: `* Z# w4 f   ax3.scatter(loud_list,bri_list)
/ e/ R7 ~0 z8 t) _% _. d: S& s! ^   ax4 = plt.subplot(224)
1 k' V, o7 q1 {) F; e   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})& z7 u% a/ s: U$ K3 z5 m0 ~; D
   plt.title('童芯派電量')2 _0 A3 u# d2 n0 F; C+ m
   plt.pause(0.2)6 ~3 _! v  }2 l9 _# x
   plt.clf()6 E: S: {5 Z% Z4 _
   if cyberpi.controller.is_press('a'):
! v) Q9 N5 M% V. A$ L       break5 G7 I- P/ G' C- M
   if len(bri_list) > 500:/ |" m+ G& _' S; n6 A1 X) R* u
       bri_list = []
; [; G: a( N0 t5 J. I        loud_list = []) @6 \7 S! ]7 l8 }: y2 G- F

, k) M5 {' W3 j% ^' V

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-4 14:06 , Processed in 0.020138 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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