圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 7812|回復: 0

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

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

. `1 M6 x; P& `1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。+ f0 x0 m( F- c& A5 ~. F

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

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


8 a7 \* F% _; V6 A: X
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。& N; X: Y0 ~- A0 m9 F/ R5 |
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    , z4 }  u+ y  v* O6 l- X) [. A
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    2 i/ `8 f% _4 F. y) {2 [5 o& o

$ @! x; e: A3 e' q% \! N; [6 U
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟), Q7 R, G# e2 ~# G8 C  p) W2 m/ v

$ H, z8 {/ h9 D! @# L
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。. b1 i1 {5 \7 I( b" L
: J: w4 ]7 O/ Z# v
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    * q7 g& i7 X% ~/ X
: @& p. h% @* u$ L  F. ]7 N, h
3.童芯派第三方編輯器程式設計準備& _- u! l# f) k
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。8 s/ e, v0 w1 m% F9 x# I+ x
  u. N8 v& ~0 P( e$ T. i
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    4 [" k7 t! e: M

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


. A0 v: u* g- b2 {" G" o/ Z
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    3 n1 t/ q$ r$ N# A& m8 H+ q1 J

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

% x! \  @6 N. W' e" K
查閱cyberpi API文檔見:童芯派API文檔
  d% y/ y* j2 q/ j
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。; k9 w% }$ c; w; E6 C' X7 i  J

" y: m7 h4 ^: X
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

% C' E1 a9 Y( i* M& S5.一些程式設計案例5 N+ y% d" U) o3 h5 B( ]4 n) f
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
6 a; @& {; t  r! d) O2 M
功能介紹:' n1 o5 l  e0 g
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。' V* {+ q) d8 [
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
8 S# l" _4 I. T, N: S# M) o  [; [# @結合藍牙模組可以實現無線滑鼠的功能。
2 _6 `, r# T; u# A: H' I, o( Y9 ^+ O; E) e
from pynput.mouse import Button,Controller
3 t& k2 i# _7 ximport cyberpi- F+ H5 ~3 h$ Z) ~' e, C/ F
import time# c7 E! E4 e& H
9 x- v" h. P6 h1 A; z# L& ^
mouse = Controller()
9 J; e5 Z" S: ]2 s
+ ^& X" E" [: L2 _( m4 ?while True:$ Y7 ^& m& T* y# J; Q% \
   if cyberpi.is_tiltback():
: h  t/ S2 @( `  f5 Q" K       mouse.move(-3, 0)8 p9 w( f$ J2 j# k2 a
       print(mouse.position)  R! c% }* ?1 R9 W! @! k! o
   if cyberpi.is_tiltforward():1 n7 k( f# K3 X/ V2 @- I
       mouse.move(3, 0): \1 t( o' _. _( @: F2 C3 H% b4 X
   if cyberpi.is_tiltleft():! F8 Z; A% g; X" L
       mouse.move(0, -3)
" o$ F7 U9 @. V2 `/ a" F   if cyberpi.is_tiltright():1 d# c2 u( f( e4 Z: B
       mouse.move(0, 3)
% |9 W5 f& q5 L5 Z) \. T  V: e& H& d   if cyberpi.controller.is_press("b"):* \5 |9 \* x0 n: D8 N' L$ ]& U! Y
       mouse.press(Button.left)- [* t+ p0 T- r5 ~2 [( Z" g* z
       mouse.release(Button.left)! U8 n5 C* j4 Y7 J* g1 k
       mouse.press(Button.left)6 I  s+ i) G" C" G! s
       mouse.release(Button.left)
& [$ G3 I% k6 t: A, @; N7 G   if cyberpi.controller.is_press("a"):
1 d- N# G3 E8 a7 R; _       mouse.press(Button.right)
; r1 x6 w7 t# n8 Q: w       mouse.release(Button.right)! M/ I8 f8 u6 h  ?/ B& O
    time.sleep(0.01)+ g3 P1 }4 v; d4 N7 o  u9 X

6 `- o- {9 a' @" n+ Y2 y4 e
2 p* X6 E8 D( T! z+ g) a' W2 W
語音打字器
0 A1 I' A! {9 g! N2 v1 }1 ^' l
功能介紹:5 z! G8 Z# D: w* V: y
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
+ V& I6 {: m# r! s( Q! A將語音辨識的結果通過pynput在文檔中打出來。
8 {5 l7 B8 s5 e. X' \該程式目前只能支援英文。+ K9 `" `& g0 N0 {# A1 E! G$ U" w, D

1 Z7 y) s6 m& C( b2 r6 @import cyberpi; M/ o* d; ]" c6 s: O4 s
from pynput.keyboard import Key,Controller
! |+ \) J5 A" r& E% _import time
1 C/ a) e) G1 _, E* M) B5 C$ } - c$ n) m) f6 l' \# V
keyboard = Controller()
) \5 d7 ^6 ~# r0 F; f; u: v9 kcyberpi.console.clear(): p5 \$ ]$ C8 B1 o; E0 {( s
cyberpi.led.on(0, 0, 0)  V! w5 k# l+ {* f
cyberpi.set_recognition_url()0 z; f( b, u6 s6 r+ v- @3 V6 S: W0 n
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得! L2 }$ u  |( @
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
5 B* w* i# O. h1 Rwhile not cyberpi.wifi.is_connect():
0 z5 }8 W0 u0 E2 k* Z. H* Q" ]   pass
! S2 E* E/ y- q+ qcyberpi.led.on(0,0,255)
+ F% @3 m# L. m) Q2 _0 Zcyberpi.console.println("WIFI已連接")! B  |# I/ z! k" q/ X7 S" U4 b
cyberpi.console.println("--------------")9 A  V! s, P2 m% |: m
cyberpi.console.println("按下A鍵開始語音辨識")
9 ?' {# J% n' R/ ^while True:& m0 R! Q) f. G5 S9 h1 T
   if cyberpi.controller.is_press('a'):- l4 R9 n' J" j  {' g1 A
       keyboard.press(Key.space)3 n: ]* c' t2 H7 G
       cyberpi.console.clear()" J4 o* |& }2 r# ~8 N
       cyberpi.led.on(100, 0, 0)
5 [9 |: E8 h7 P       cyberpi.console.println("開始語音辨識"). x& C  q( ~& w0 r( Z
       cyberpi.audio.play("switch")
  q9 I# a7 F! z       cyberpi.console.println("--------------")8 I3 c# ~  s4 N  O. @( J
       cyberpi.cloud.listen("english", 2)
' Y& f3 k. i2 D1 J. ]; v" H       cyberpi.led.on(0, 0, 0)& X. J: q: X) [+ r- t
       say = cyberpi.cloud.listen_result()/ N1 b/ i( l0 p+ J, \/ x
       cyberpi.console.println(say)
# `2 b) |$ Q6 T/ n3 }9 p: M       cyberpi.console.println("--------------")
5 ?6 {  P0 ^: ^5 V       for i in say:# ]9 e1 S, D+ K. s
            if i == '':: }+ `+ z0 ^. {+ {& c
                 keyboard.press(' ')2 U" `; m5 v9 F( T: X. v, p5 f
            else:- U. }3 O7 _7 |5 E8 h/ T' b
                keyboard.press(str(i))
6 b/ f% [' `' L- L                time.sleep(0.03); T' j  p# w3 |$ {# a9 [

3 e7 M  }, C+ M+ X( Pmatplotlib音量柱狀圖

  R8 w8 k4 r5 k/ f5 R# s4 \. B# e" Limport cyberpi. t# E, T# P3 g  U' k% [: M) O
import time) G4 |+ u  p# H/ m. R
from matplotlib import pyplot as plt( O2 y8 P& |: `# O! _3 r  K4 _
6 \" G0 ^4 d8 p$ q3 C4 h6 R
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']3 q& p, U; N$ l
plt.ion()
, @( N0 R/ R! Q* M4 D# y! E
% t4 m8 S8 q, ?+ S! M3 W# K! zwhile True:! ?! q2 m: T4 p3 v/ M6 _
   loud = cyberpi.get_loudness()
" T% ]- K1 W# r) t7 Y" K% T9 |   plt.clf()
2 k1 X  e6 F0 u- o8 b. G+ d   plt.xlabel("數據名稱")
4 \2 w8 I  Z6 H& D( x& h. V) }   plt.ylabel("音量讀值")
, k1 [/ r9 i4 O9 t# p   y_locator = plt.MultipleLocator(5)1 Y9 e* ~9 A% W/ T# o" t
   ax=plt.gca(); J2 S% \, e( {, c! Z  C5 q
   ax.yaxis.set_major_locator(y_locator)
5 T9 K* x: U; t( q# y  N! r   plt.ylim(0,100)
. `# E) ~% Q& t" i   plt.bar('音量', loud, align='center',label=f'溫度{loud}')3 p; ?! `+ n9 U
   plt.title('童芯派聲音感測器讀值')
5 J* e$ g% s8 S! M( ]   plt.legend()
  _4 W2 j; m( q% `! n/ E4 d   plt.show()
& }  {3 l" W& J5 A    plt.pause(0.01)
: N. M, l4 F0 c% I5 K$ r
8 [; j2 u* ^8 l: n: F+ r5 Q2 D! O4 F! l4 J0 J3 p/ x, l6 S
matplotlib 多圖表顯示7 n9 O% h( z% P9 j
6 T, z  I& Q: G% `8 P  ~
from matplotlib import pyplot as plt
7 E: m- ?2 g% @& k# |; d) ]import time- [4 }2 n$ [" U. o
import cyberpi* Y; v) k  E3 ?4 k& _, R1 t6 j# V

% K( @* j6 p! [- C7 |loud_list = []
* U8 ~9 W" p: Y/ D5 x. Xbri_list = []
, n9 A% C! ^9 C% qplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體8 F: a& J6 R6 Y( A+ y- K
plt.ion()- y6 e% f. ]2 G0 D* X4 ^, H4 o. m- l
plt.figure(figsize=(10,10))
9 i/ D' E7 l1 _/ q% Oplt.figure(1)# Z) r$ ?! L. e) \+ b3 n+ l3 ]1 h
x_locator = plt.MultipleLocator(5)
% E! r# A# n) _6 p4 w, my_locator = plt.MultipleLocator(5): P4 B. y' t) A2 s
while True:
1 X+ H  r; L! Y6 B3 a) e   loud = cyberpi.get_loudness(): ^% }3 z, x. Y6 q
   bri = cyberpi.get_bri()0 ~8 j0 Y4 f2 _7 C
   loud_list.append(loud)
2 R+ \+ o) ^" q) y) d   bri_list.append(bri)
* r  z, L( S8 h" g   battery = cyberpi.get_battery()
, r( j8 k+ i1 y2 T+ r* E+ \   size = [battery, 100-battery]
# B  s/ S: |1 p2 i$ I, k   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']0 l( B2 q  @' k) v/ L5 e" k" T
   ax1 = plt.subplot(221)
7 `) W  g4 a( _/ h! \3 S   plt.title('光線折線圖')' A" P* u, m3 S  S3 A
   ax1.plot(bri_list)
; N  H# P2 ]$ e9 }4 e0 [) Z# r   ax2 = plt.subplot(222)1 X( C6 r2 y" |0 d% I1 g6 R
   plt.title('聲音柱狀圖')
8 }- e/ Q2 G& P( P; D. Z$ m1 q   ax2.xaxis.set_major_locator(x_locator)
. I7 q8 D& I- G, t4 y1 p  {   ax2.yaxis.set_major_locator(y_locator)
# }- s; @( U5 m  M' ?$ H/ e: K& K" \   plt.ylim(0,100); L4 R. _; l7 s( z
   ax2.bar('sound', loud)
& M- M9 L1 i3 P: l, D: L0 t   ax3 = plt.subplot(223)
: d2 F: Z; |# |2 v' W   ax3.xaxis.set_major_locator(x_locator)
, ~& V5 P8 z6 B% `& u& Z3 U   ax3.yaxis.set_major_locator(y_locator)
7 S/ O3 f' `, [3 H' V" F) `  m   plt.xlim(0,100)
- r( G7 g- M6 Y6 g: k8 C6 a3 X   plt.ylim(0,100)1 |  p; @! \& G. s5 k+ g" G
   plt.title('聲音、音量散點圖')
5 _: ]1 w4 `* \2 \   ax3.scatter(loud_list,bri_list)
. Z4 H# t5 E; u3 t$ z; T' P   ax4 = plt.subplot(224)8 g+ h3 L8 W3 p) B6 V! i# T" H
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
0 F3 q( k7 Z+ _7 g. V8 o$ s   plt.title('童芯派電量')% A+ Y( K9 o& \- b  u5 R
   plt.pause(0.2)
1 p7 @% P" Q! r! X' z   plt.clf()# U" U- _( P" g; e" ~4 Q+ j
   if cyberpi.controller.is_press('a'):
1 f% _: v" O: G. j* J" r       break0 ?" B9 z$ t/ w! Z
   if len(bri_list) > 500:0 a& z/ q6 G7 P6 a/ r
       bri_list = []
' {3 C7 F+ _1 n( y/ L/ P" J        loud_list = []
5 d) }4 U$ o7 Y. X, Y7 n* _4 r, T& h4 B( i2 L$ m4 O) p$ a

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-7-19 07:03 , Processed in 0.026701 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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