圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8044|回復: 0

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

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

* D# e. _8 A. A7 M, W1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。
    $ r2 Y. u7 R2 t

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

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

$ P, `8 r' Q5 ?  L7 M6 A
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。9 v' N, S8 r8 D9 ^
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    7 I+ ]3 ?7 C; ~$ b
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    5 C6 N% A4 h, q8 o
* e' I" z7 e% `' J* _
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)0 K* B  `/ U! K7 l

- n1 p/ L/ f! T0 q
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。. ]7 u2 h" b7 R4 u$ Y
& T' _/ R( l9 J' b8 s. k* \
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。" S7 i3 O* ]' G: f/ y

% s$ o0 o! h' I: o3.童芯派第三方編輯器程式設計準備: \4 C  F  G5 E# Y0 W
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    $ I& ^8 S& j9 Z! X- E/ Z! \5 _

7 Q& a9 z! U. T) m% }' u9 `
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    * r/ W& H8 N1 N4 ^

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

6 b- ]* A2 c1 w5 S  n
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    2 V- Q% M: B) g* o- H, V# D- ~. |

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

3 |. C1 \  Z3 \% ^. r8 X" [
查閱cyberpi API文檔見:童芯派API文檔

0 a; G. r% v% x; c5 p: y
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。; E- [. ~6 K4 F- I) W7 P# O  z

+ F4 @% m' L* s8 ]2 ~. v5 Q4 H
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

/ D' Y4 D4 m# `3 [( v5.一些程式設計案例
& ~$ @& D0 x* F  j3 k) p童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
- L: i+ \2 Q9 {; V# \* {
功能介紹:
7 R9 S  l; c) K! y$ F利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。/ c9 Z* C& ~: q6 N" a0 Y9 {
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
0 b2 O! z  h& o* I4 x3 F2 |4 T$ E結合藍牙模組可以實現無線滑鼠的功能。
1 y# K% }2 n' k- s, n
: }( _- `6 C$ D4 {from pynput.mouse import Button,Controller
  F! z! l) ^  S5 C8 _: U' G* w" Fimport cyberpi
9 j* Q" d" `1 p2 Himport time
' k( g3 h, j- j! t6 J 3 x% `; T% t. T7 i
mouse = Controller(). c7 {7 X4 b+ z3 O4 H
1 j2 }8 `- E4 Y, j& q( _5 C4 @
while True:
* D2 B/ ]/ A5 L9 l   if cyberpi.is_tiltback():
- ]7 m. m0 y: q8 i" i; g, Q7 F       mouse.move(-3, 0)
$ }9 h2 X! V3 Z" M       print(mouse.position)
7 @9 L, l5 n! }+ n+ a% i   if cyberpi.is_tiltforward():
+ |8 j1 G: V- u% z3 @, H       mouse.move(3, 0)
9 \/ t6 v2 q: l: e9 t( N" P   if cyberpi.is_tiltleft():" u" x: D1 B; D7 M7 M. W- F7 O
       mouse.move(0, -3)
& c  Y, ]0 d+ T0 z) K( ~  q0 c   if cyberpi.is_tiltright():
' x2 [: a1 x! b1 y( Q; p& F       mouse.move(0, 3)( I' G, o% r7 O+ y! n, o
   if cyberpi.controller.is_press("b"):
# F! O, K$ t) n- W       mouse.press(Button.left)' X( a: G0 o7 k) ]- l. Z7 t& {; D( F
       mouse.release(Button.left)4 I3 K' e7 a" j
       mouse.press(Button.left)
7 n- H. d3 N# w6 f7 P  A       mouse.release(Button.left)6 v7 u0 d; j: Y* G7 }
   if cyberpi.controller.is_press("a"):9 I7 w2 ]- n8 Y' o5 b
       mouse.press(Button.right)
0 s: x6 j/ j9 Q5 h1 N/ O       mouse.release(Button.right)
7 j2 b, N/ W/ x' N    time.sleep(0.01)
% j' L+ S3 L# A) M8 |6 x6 J, h( p) n3 U

3 i( J/ r. g% y% Q
語音打字器
( R, C3 ~, `% y: Z* f
功能介紹:! s( w4 D& B& L
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。1 g. r" X7 A7 ^2 A
將語音辨識的結果通過pynput在文檔中打出來。
% _" m  ]) {. S( A該程式目前只能支援英文。
: Q5 w& m+ h# i6 N
' r5 E3 G! c( W, {$ _* _' Z/ Zimport cyberpi3 }; ], ?3 a2 G9 l3 u7 P% `% W2 F
from pynput.keyboard import Key,Controller
3 `5 L& H& j" {) ^+ Himport time: l" k( N# k5 n' `/ B# W2 {

1 c  Y- R! Z. S* m& Skeyboard = Controller()
# ]) _4 @/ V4 rcyberpi.console.clear()! O! N/ l8 }$ T" k. X6 l) I3 w
cyberpi.led.on(0, 0, 0)
3 L! K* f, P( W7 @) n4 s, ], Y6 Fcyberpi.set_recognition_url()
8 q' k* m; i) d7 g) Acyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得: f: m7 @+ H& E0 W* w
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼"). {0 j) R7 P3 X9 @4 k6 _
while not cyberpi.wifi.is_connect():
! a; u, ]( i" f5 d7 {- G. |3 i, k   pass
' r9 d4 ]  k0 |7 V, b) s( R9 Kcyberpi.led.on(0,0,255)
# x& o6 E$ E& Qcyberpi.console.println("WIFI已連接")  c. H! o2 \) D/ a6 k
cyberpi.console.println("--------------")
* p7 T0 s4 w0 r, q2 wcyberpi.console.println("按下A鍵開始語音辨識")6 D. C, M* }% M" T7 @7 [6 h
while True:+ `' [1 f; l  `8 Q: h
   if cyberpi.controller.is_press('a'):
8 a8 A, V+ L4 w& |6 b& [( y       keyboard.press(Key.space)
" y5 E. Z( h4 X3 r' w  A       cyberpi.console.clear()% @, Z" U; E- f# V% I1 m* G- f
       cyberpi.led.on(100, 0, 0)( w7 \% d6 R) M/ |, h% Q
       cyberpi.console.println("開始語音辨識")
/ ~: r) l0 d2 S( T5 s* v. _+ f! L       cyberpi.audio.play("switch")2 T+ v( A2 m. t; U9 j; W, ~4 f! Z
       cyberpi.console.println("--------------")% a: ?8 F3 O' ^! W. n
       cyberpi.cloud.listen("english", 2)6 L1 C- n! }; h( W" D) ?
       cyberpi.led.on(0, 0, 0)
! h$ [0 `) q6 Q- }* z$ K       say = cyberpi.cloud.listen_result()
, O  e) }9 f# U# D5 }       cyberpi.console.println(say)
# M  J% u  U8 z       cyberpi.console.println("--------------")
) o. j0 a) @, Q/ q       for i in say:) `3 o4 s8 T# P* O# f$ c
            if i == '':
3 |* m: ^+ p9 V% y                 keyboard.press(' '): T8 j1 {3 R8 b! L; I3 g0 U
            else:' w/ Y6 ?3 q, Z! o' q2 b2 w8 r
                keyboard.press(str(i))+ z5 f: U* s! d* a9 E# `
                time.sleep(0.03)
  U/ H' R8 H' K5 m+ T  ^
) S0 J5 m% W% z. o* T; h) Q
matplotlib音量柱狀圖

- l9 I  [! K% B) R) f9 }import cyberpi
" ^" H" |+ w; aimport time/ b$ h9 C4 r4 p! l9 |9 h
from matplotlib import pyplot as plt
6 I8 K9 ?, R9 J! D% C
4 P; Y9 n3 a$ @3 {2 L* D2 {plt.rcParams['font.sans-serif'] =['Microsoft YaHei']4 ?" F3 ~- A/ L+ r8 g* P/ c; I/ A: @
plt.ion()( l: V: H( i$ e6 j! k# e
- V3 V1 e4 R3 Z2 {! f
while True:
. a0 h; `1 I% s# J   loud = cyberpi.get_loudness()2 s* C3 a7 T# E8 L1 r
   plt.clf(); L, W" k0 T) d; {( s! s3 u
   plt.xlabel("數據名稱")
/ ?! j2 S: w- Q5 m, G4 \) e   plt.ylabel("音量讀值")
  `! O/ h% O2 S+ U3 ]   y_locator = plt.MultipleLocator(5)5 n7 `2 R( c3 z8 D7 c/ E
   ax=plt.gca()
, A) K) l. B+ M9 m; T   ax.yaxis.set_major_locator(y_locator), Z) y2 G, f* h0 R
   plt.ylim(0,100)' Z2 v2 U* O( M) {" f6 |5 z
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')9 z/ X8 ~. p9 X6 _, }# z
   plt.title('童芯派聲音感測器讀值'). k/ M$ u0 B% c, }0 l: \) s3 i& H# `
   plt.legend()
# B5 S$ M3 e  x/ E- \1 M' s   plt.show()
( y6 H! Q( x/ s    plt.pause(0.01)
- ~( W9 s, X5 [; k. X& l0 B' P- _  E% |% w% b# ?& T
  c4 @! O8 R/ O3 @2 B" A  E$ X2 J
matplotlib 多圖表顯示6 f0 f2 k  @0 Z; E$ q
/ ?5 G/ `: h' p5 L/ I5 H2 Y2 C
from matplotlib import pyplot as plt2 }9 J6 V$ u9 W  ]
import time8 d! l- J7 i, v* a8 s- ^. T8 C
import cyberpi, R! l: ]2 S6 W4 z. J  ?
3 c) x7 Q: k8 }, E! z5 k
loud_list = []: y7 N4 T( Z2 U6 L. p
bri_list = []9 ^# x3 i( `* B4 S
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
, X( S/ @" D0 i1 j8 F/ `plt.ion()
1 F6 W6 Q1 j8 fplt.figure(figsize=(10,10))
4 W, B& l+ X! g. a9 {0 o) Pplt.figure(1)
5 C2 k7 R, T3 N. L' j0 w4 Lx_locator = plt.MultipleLocator(5)
& s' L/ N% g! [, T$ ^0 u3 V& Hy_locator = plt.MultipleLocator(5)5 R3 R2 e+ E3 F0 [, A5 j! j7 g
while True:
( y# r) c$ |' V( h   loud = cyberpi.get_loudness()
* f" }: F' S- z8 P   bri = cyberpi.get_bri()
8 |/ D2 J/ Z% Y8 [2 M$ e- }0 j9 h   loud_list.append(loud)1 [* y0 O& E) K; _+ M: Y
   bri_list.append(bri)+ x; s1 b; K5 R1 E
   battery = cyberpi.get_battery()' X. e6 A& J9 Y9 x. ?# l7 C
   size = [battery, 100-battery]; K! E" r6 T2 I
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
$ W* O" W- @( {) ~$ v   ax1 = plt.subplot(221)& ]/ O& z* o* z) g- f4 C
   plt.title('光線折線圖')
+ s3 G! D' M# D! R$ M' M' u# J   ax1.plot(bri_list)
  G, q& L3 H. G, E$ H" W   ax2 = plt.subplot(222)
, w4 f* u  S+ I0 N/ |& h, F% S   plt.title('聲音柱狀圖')
5 l- {; A$ }* t& v) u5 i8 \   ax2.xaxis.set_major_locator(x_locator)
) H0 z1 `1 R1 y9 x   ax2.yaxis.set_major_locator(y_locator)4 j0 {% v. w4 I0 D4 K1 j
   plt.ylim(0,100)
4 h3 S, v* @4 y8 _2 z. ]   ax2.bar('sound', loud)
# H# `) J; f3 Q" }8 V& h! E) |   ax3 = plt.subplot(223)/ N- R6 u8 r- u, w6 W8 k
   ax3.xaxis.set_major_locator(x_locator)2 @% d- m! }1 w9 \# c5 M7 G3 {9 s
   ax3.yaxis.set_major_locator(y_locator)
3 _" Y+ H2 }9 D) m" W6 v   plt.xlim(0,100)
8 Z+ G# Z5 e7 x1 ^  {1 k/ L9 L   plt.ylim(0,100)
2 Q2 G+ v8 B1 q# y  }! V   plt.title('聲音、音量散點圖')
& R, O2 i7 Y8 J9 ~   ax3.scatter(loud_list,bri_list)% b% z! A; Y3 P3 n  e- G0 o
   ax4 = plt.subplot(224)  a& P- o& f6 E% n8 n# C& G$ ?) t# G
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})2 m8 j7 O5 w- l, V2 c
   plt.title('童芯派電量')5 h/ ~0 p4 i% L/ s/ o2 j
   plt.pause(0.2)
' ^$ V( Z- P- Z7 x0 P( \   plt.clf()& P/ }/ |/ c7 S8 B  k! j
   if cyberpi.controller.is_press('a'):
9 h: g0 b* h' Y. H& a       break, A% T1 o6 y9 s. i& B% Y8 T
   if len(bri_list) > 500:
$ V4 W6 C  u5 G' n" \       bri_list = []
/ Y& H& ~. Q# ^; M$ |9 M& r5 Z, B        loud_list = []
9 A$ w) ?) @4 p4 h
7 K: e, n2 h5 H

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-9-8 23:32 , Processed in 0.020993 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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