圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8412|回復: 0

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

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

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

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

+ z; t- T9 C, w' n6 n" y/ R
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。: L. j& w( X* k( ~3 h+ H) }8 R
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)7 f- \+ i" U" X3 _& n/ C8 V0 O
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    : l0 O4 q$ g4 |8 d7 C7 {. X& {

2 f7 {) L. U3 S9 _( L1 U
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟); T$ N: {" C7 I( ~  z
4 V6 w; N1 {. H
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。) S" q+ v2 g3 M- G
$ T3 S. v4 y0 e6 o. S: y) U5 @
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    - i7 c5 t7 E) J/ Z3 w
- x8 u2 S- J" f5 y8 Z
3.童芯派第三方編輯器程式設計準備) Q/ `& q( g( b! `
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    6 W7 ~' f7 F: s; q4 Z/ G& U; z
1 ~2 l2 S% i5 T* f; R3 t# \
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    ; r. y/ l& B( c. Y2 N) d1 K

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


' p4 ]7 m8 Q% f4 O! L
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。) c3 A( u' i4 d/ N8 \

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

9 p0 s8 ^3 m  Z9 I! O, m
查閱cyberpi API文檔見:童芯派API文檔
4 s* v+ B( ]5 z& r! H9 }# ]$ J* T0 _
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。! A( K& h$ c' K  H0 y! ?$ ^6 X3 e

  h. @& Q. X2 a
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

8 \5 n4 f/ E/ U0 r  c: g5.一些程式設計案例/ r7 w: o  X8 ]; [/ U
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

- ~( }$ a& O- n( |; `4 \0 y功能介紹:3 t+ I' \% z$ D9 A+ \8 P
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。3 ~! I1 E; o* T& y
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
" z% I6 y' U4 H8 V9 p結合藍牙模組可以實現無線滑鼠的功能。6 W) G3 m7 y. x

6 G" l* z/ H" B: Z  ~" A: J: Ffrom pynput.mouse import Button,Controller
, B; w* M! x* t% [. l+ `import cyberpi* W  V5 h( @8 y& j) x
import time$ f& k( _6 |4 o

% T6 D: [5 O) Q, K, d" Qmouse = Controller()
5 L4 I) C- l+ @
* h" J% f5 R1 n2 d1 k) ewhile True:5 [5 C7 t, p3 \) _& g0 N
   if cyberpi.is_tiltback():: I; g8 |& ~$ ?% K2 H
       mouse.move(-3, 0)
+ h1 n3 C7 U7 E       print(mouse.position)
+ Q" i6 r) Q+ O$ L/ h2 j   if cyberpi.is_tiltforward():
' Q7 N/ s/ `; K7 J  f* X+ k9 `       mouse.move(3, 0)
7 n& D% x, J6 ^6 e) U" E. ^6 a   if cyberpi.is_tiltleft():
6 Q) Z, `* n4 A$ @8 n       mouse.move(0, -3)
: C: o" l& t' k   if cyberpi.is_tiltright():
4 b4 R" d; F% [% ~! n       mouse.move(0, 3)
( j) [( ?" n. x4 Y8 O+ {   if cyberpi.controller.is_press("b"):
1 h& O1 v- u! y  w6 k       mouse.press(Button.left)8 t9 A8 Q, H# s5 I
       mouse.release(Button.left)
! t8 C- U" T' E9 D4 O  D6 P       mouse.press(Button.left)$ o3 m2 N% C, X" O/ A$ [) \
       mouse.release(Button.left)
4 e- h6 e, y3 F" p2 X7 q5 |   if cyberpi.controller.is_press("a"):: O7 h8 g9 a2 f- S) n2 j
       mouse.press(Button.right)
. ?8 f# X" X! a- t       mouse.release(Button.right)( g+ m8 U8 I: \8 x  ]6 I; Z
    time.sleep(0.01)
/ n% Y& x6 H+ B6 H& b  V3 K1 Y5 B) A2 i

# K. a& G# r& T! Y
語音打字器

) M, B2 x0 V. }- k! `6 I功能介紹:2 T4 }+ ^+ [9 [: Y
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。& f9 o* N4 w& ]. U1 W
將語音辨識的結果通過pynput在文檔中打出來。! l* M# o. h0 X6 ^0 z( r4 Q
該程式目前只能支援英文。+ ^* `" N( j' I8 ~$ t

! O/ u0 C5 j. U6 L' ~import cyberpi
4 @9 D( t1 H7 d$ ]from pynput.keyboard import Key,Controller
  U+ |: h/ z) f% aimport time1 \% R1 z: @3 k" e1 N$ i4 C* q
% X' y; ]7 `. ?0 S4 M
keyboard = Controller()
) r* N5 y. A9 g- R3 h. V5 Scyberpi.console.clear()
1 T/ _% u% p% f. Vcyberpi.led.on(0, 0, 0)2 L, A3 r* Q3 d5 A/ c- K$ J- I
cyberpi.set_recognition_url()
4 y$ z+ X3 z2 fcyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
3 t5 h* r4 i* z' b( K3 bcyberpi.wifi.connect("WIFI名稱", "WIFI密碼")( `  T, u3 N7 c' m0 ]
while not cyberpi.wifi.is_connect():
9 c, P9 [) W6 c7 T# j) P# `8 a   pass
( {( E6 X  K1 Qcyberpi.led.on(0,0,255)# B! R4 C" q( y
cyberpi.console.println("WIFI已連接")
4 b3 C! ~3 j2 {4 R1 ?8 Kcyberpi.console.println("--------------")" r! O% B# V5 l" @) P
cyberpi.console.println("按下A鍵開始語音辨識")# F( \- T7 R: \2 a2 N, K# Q6 O; P
while True:. E' Z' B3 U; ^+ Q
   if cyberpi.controller.is_press('a'):2 G2 P8 u: g' P! B' P( R
       keyboard.press(Key.space)
3 ~* s: ]# Q% k( `9 c0 S$ `5 s       cyberpi.console.clear()6 U0 d8 S4 `" T2 U6 ]# d+ H6 E
       cyberpi.led.on(100, 0, 0)
5 ~" m/ d; k7 V+ C       cyberpi.console.println("開始語音辨識")3 T- z6 T5 \9 Z% O" c2 Y1 c
       cyberpi.audio.play("switch")' V7 d+ P4 I5 P& g( k
       cyberpi.console.println("--------------")
; n% n$ w  ?9 \, W. v  d+ y7 V; J       cyberpi.cloud.listen("english", 2)* n" R0 e/ t( g
       cyberpi.led.on(0, 0, 0)0 _8 W, i# `, q  i! i% q3 C
       say = cyberpi.cloud.listen_result()7 C2 ^7 |( }$ g* g3 V
       cyberpi.console.println(say)
9 \8 e8 }4 ?- o       cyberpi.console.println("--------------")8 C( R* C: w# o$ G& m! w4 H. r6 U
       for i in say:
% P0 k- W& A5 o6 ?6 e6 c& t8 r            if i == '':
) w$ i6 x% V& w! N8 j! s% R                 keyboard.press(' ')2 H% }6 \" B5 }0 @& Q3 d
            else:! ^: d) Y% z* u# p2 Y9 c
                keyboard.press(str(i))
3 o" W0 ~" g2 o- q% _5 }                time.sleep(0.03)
9 ?( X$ b4 r" [4 L! p- f9 `

6 H0 L* j$ Y. f2 jmatplotlib音量柱狀圖

$ R7 k# P; o  B. t# _* M# [( eimport cyberpi3 S" |8 C+ L/ B5 H3 {. ~5 j
import time4 |  W$ Q% H0 k3 y
from matplotlib import pyplot as plt1 L  l7 n3 h! _6 m
, B: d# n  s8 C0 D, @% F9 u
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']9 E. Q5 q& z" ?: l9 A
plt.ion()
+ H! ~' a; w+ V- m! v+ }; {- _( a# k 7 k9 ^7 @' a- o* q/ [
while True:$ a  g3 v& P6 b! H! Y
   loud = cyberpi.get_loudness()5 A7 q: l$ W! V' {+ _6 @& _
   plt.clf()
% Z# H9 n2 |& V   plt.xlabel("數據名稱")8 e  t. i; K' `/ |9 n" O
   plt.ylabel("音量讀值")/ {3 y4 L6 w# B8 J* O
   y_locator = plt.MultipleLocator(5)
' J! Z4 I- ?& C5 h: p   ax=plt.gca()
4 O8 n/ K6 W1 S   ax.yaxis.set_major_locator(y_locator)6 M5 ]7 A! F2 R& t
   plt.ylim(0,100)
7 y; H5 c9 x8 C  E3 v9 q& }   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
2 l# S) K5 e) {% p0 n   plt.title('童芯派聲音感測器讀值')2 }9 \+ B/ X/ ^' v7 A6 i
   plt.legend(), N# {1 z6 a4 {9 s$ m' e* b& l
   plt.show()! A1 ~$ W2 B/ K
    plt.pause(0.01)
. N' b" c5 u+ p; _# f' k# Q7 t5 W% \% l- m7 Q
' S) Q- M! i2 g
matplotlib 多圖表顯示3 [; i9 h' q8 i+ i$ f" s

* j" U- L% a# O+ l' Y6 ifrom matplotlib import pyplot as plt- `- F- v2 x1 q" i9 h" g
import time3 }1 ^" {* ?, `/ L, B; ~" @4 ?
import cyberpi7 _# Z2 n+ m2 s, p

! b& m- A1 \" I; u9 n  ploud_list = []
: X2 j' `% E  ]7 ]9 \+ {, Obri_list = []) n( B5 E, a: P) }# Q, A% @3 Z9 K
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
  [5 d: u) _7 f+ ?1 c8 V3 @# Bplt.ion()
% Y- L7 a- S# u# kplt.figure(figsize=(10,10)). w; ?5 C8 D; X5 u. a
plt.figure(1)2 S, [. i: U% n. P1 m
x_locator = plt.MultipleLocator(5)- q7 V" k3 g2 B% ]3 \' ^
y_locator = plt.MultipleLocator(5)
% C3 G* N& v) X  A. @. f: jwhile True:
' P2 G# X; b  H: A   loud = cyberpi.get_loudness()
& a8 e" G# C5 ]' ^" z   bri = cyberpi.get_bri(); ~) J, x- n1 J3 G7 X" M
   loud_list.append(loud)% p; T6 D. _( I: j
   bri_list.append(bri)# x, Q- T8 K- F& h* b
   battery = cyberpi.get_battery()
  _) t3 g: M4 p& b5 y   size = [battery, 100-battery]8 f3 f2 c& Z1 a
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
; x5 ^0 {4 y; l& D   ax1 = plt.subplot(221)2 k, v4 Y  n3 D; k: k
   plt.title('光線折線圖')7 z8 N$ p7 x& f" }/ U- q0 G
   ax1.plot(bri_list)/ v8 J8 W: o. E+ c7 t
   ax2 = plt.subplot(222), F! D% @+ h, \' w
   plt.title('聲音柱狀圖')
1 G+ ^8 _3 k* m% T) e* {+ i; G- ^   ax2.xaxis.set_major_locator(x_locator)
* ^! R6 o' u' \& \   ax2.yaxis.set_major_locator(y_locator)1 R# O1 k+ l" G/ W3 U4 V
   plt.ylim(0,100)# G: z. C: l6 j: ?2 {% j; u9 O/ i
   ax2.bar('sound', loud)& l* a5 A: X7 }) o3 W5 y# ?
   ax3 = plt.subplot(223)
' S( k. A" O: _3 P" |! e   ax3.xaxis.set_major_locator(x_locator)
; x3 F  u4 K( ^5 S( q   ax3.yaxis.set_major_locator(y_locator)3 u8 g; j( Z& k! x% I
   plt.xlim(0,100)
( ^9 X' K' {- j2 Y+ z   plt.ylim(0,100)" c3 W) ^9 b- s1 q- [: f! W- j# T/ r
   plt.title('聲音、音量散點圖')8 o) i) ?/ T- i# n
   ax3.scatter(loud_list,bri_list)5 {" U5 O; j5 W8 Y% n4 b
   ax4 = plt.subplot(224)
; ^2 R% G9 Q$ a   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
6 j0 W( `7 H6 q! v+ C1 r. b   plt.title('童芯派電量')
# z/ c: s5 v1 g& v/ j   plt.pause(0.2)! C3 ]  u3 g: {9 D0 h
   plt.clf()
5 E$ X4 i: K5 B* Q; I- j( ]   if cyberpi.controller.is_press('a'):
/ v) A) B$ J. m3 l6 @9 q       break( H3 O' T- x" I& {$ X
   if len(bri_list) > 500:
4 V& c0 ]& R% V+ t, r) U3 B       bri_list = []) U; b2 X) `) a8 o; \
        loud_list = []: m( M* Z% a' A  ~" K5 Y) M3 w( c7 Z
( Z6 W2 [6 U+ O

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-25 13:12 , Processed in 0.017497 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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