圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8440|回復: 0

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

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

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

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

) x+ l% U3 E7 F
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。& t# H" ^5 l& t; R+ x3 B
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)* `; q; Q& F+ L, g7 X# e
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    2 e4 m1 V1 U& |8 T' n  k( a

2 N$ D3 _- Y9 C( _2 t/ J0 g1 x
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    7 {' v" k/ I# d$ x7 ^+ p' Z
1 u/ p5 }" u) p2 l" y
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    - S% r9 k! w2 }$ T& v( P6 ]
' Y1 U2 ?  I% e6 a" t3 }
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    4 y! D4 h0 B! Z; r" F, `, b3 z* J

9 F5 s3 l% u! A1 J  L0 w3.童芯派第三方編輯器程式設計準備$ Y$ T& {/ L& U- Q9 X( Q+ M9 o
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。. U6 Z3 n+ K0 |, [& ]& X: H% o
( ]5 _6 S& a9 \2 t
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    . e, \3 f2 O7 W/ f( c

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

9 g/ ^# Q0 ]$ t# ~; H% t, N
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    6 M" d! {" G' K9 E, R

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


; a: `. z6 s- V  g
查閱cyberpi API文檔見:童芯派API文檔
; R8 O' I4 b3 b( I1 x( T: {
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。  V+ i: j% k( A+ W5 d4 @6 y3 Q
  z/ ?. S3 ]* O
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

" b5 s% s1 B! s9 O! j( r5.一些程式設計案例. E0 C7 f8 t, @+ ~5 A
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

, E4 @+ V; B. p) ?3 r功能介紹:
1 s, f' Q/ o6 F5 H# I, M5 P利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。: A- x% ?, G# D4 C9 l! k% }" D
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
% W6 S3 N2 ~7 K! m1 _. j結合藍牙模組可以實現無線滑鼠的功能。
' G6 M1 z7 w- S/ D, V6 G
# m" ^' q# l; d3 N& [! `8 Sfrom pynput.mouse import Button,Controller
0 C: X0 E- X7 R$ Yimport cyberpi
& S& X4 E) X- w6 A; \) L! I, kimport time
* ~& j  K8 S, W
- M# f- w4 Q0 `5 Imouse = Controller()' k6 S" S" `- Q/ D8 g/ K
, X$ m: t5 L$ c
while True:
  e$ |, E9 L7 Z, V( X   if cyberpi.is_tiltback():3 ]% u9 @* P. h) [* i$ l- X7 K& ~
       mouse.move(-3, 0)
- i* n, m: Q* X: M1 P! T       print(mouse.position)
- Q3 |  `8 J/ G2 ?+ Y   if cyberpi.is_tiltforward():' v0 i  e. T- ?1 H+ v3 }0 d( F( ?
       mouse.move(3, 0)) m& b5 g/ ?- {- {7 g7 d
   if cyberpi.is_tiltleft():
4 G' @' @  i! S9 o5 r. U6 Z/ L' K       mouse.move(0, -3)
& J' R3 m$ j5 E   if cyberpi.is_tiltright():0 ^+ n2 _( Y9 y% h0 Y
       mouse.move(0, 3)- I% |* O- A, B# w' l; j! k
   if cyberpi.controller.is_press("b"):6 n+ W6 d% ]( e3 j; W% J# G
       mouse.press(Button.left)
# x& f4 P9 K  N$ f) v- l: f; j5 J       mouse.release(Button.left)
9 W2 h( G$ u0 o0 |/ x       mouse.press(Button.left)
) ?* i/ [) s) e8 B: a" Q5 W       mouse.release(Button.left)
& ^' r3 I8 b- ~+ l   if cyberpi.controller.is_press("a"):8 `! q" G' K0 b9 }7 u$ E
       mouse.press(Button.right)" w; a( _$ ^6 l
       mouse.release(Button.right)5 @- |: Z( ~1 ~( F. I/ I% Q
    time.sleep(0.01): r+ Y# C) ]* z  e

. a6 R' ]% n* R& j: o; S/ p8 V
- e/ B; C" u& j# f6 r0 r
語音打字器
' ^: W& C5 h9 W7 H- D4 {
功能介紹:
# C" F: r3 y' E0 R2 Z6 b利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
0 R" w8 R3 r+ F將語音辨識的結果通過pynput在文檔中打出來。
5 w0 p' }! }2 p% a該程式目前只能支援英文。
6 u0 P; I" U! m9 u
- e5 d2 J+ i( V, n+ ]import cyberpi- @4 K% a1 d( N' t- J  G
from pynput.keyboard import Key,Controller
, Z6 k2 G" y$ x( z" x/ V; d8 ?6 u) Aimport time
. \/ p* @7 j( U+ e  b: i 8 ~& \+ }  C+ E* v/ [" ]' U
keyboard = Controller()
1 M4 Z! ?7 z+ P/ K  bcyberpi.console.clear()
4 E( O3 e0 n. t! @cyberpi.led.on(0, 0, 0)& m+ p" P# b, \7 J( M7 `, x
cyberpi.set_recognition_url()# w2 t1 z$ q+ C! P: v7 g$ K
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
. q& C2 r& t' v& v* k  X! [cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
! F2 ]) r1 |) u- z3 Lwhile not cyberpi.wifi.is_connect():0 {# l* s- A* J/ m9 \- I
   pass; S# G" c1 p' Y$ z% |- m1 I" j- d- j
cyberpi.led.on(0,0,255)
! T" {8 u. i8 Wcyberpi.console.println("WIFI已連接")( w* P$ _# @, M3 K% m) L& M( G
cyberpi.console.println("--------------"), p5 ?2 g; z+ B# ]9 E
cyberpi.console.println("按下A鍵開始語音辨識")
7 q" y% J, f5 Bwhile True:- S3 T! z, p7 O% t# h' G
   if cyberpi.controller.is_press('a'):' _% m  n# t" B8 K0 _- o
       keyboard.press(Key.space)
  v7 P; ~- _$ F/ ~$ ?       cyberpi.console.clear()
2 h' f% Y0 j% N( o. b7 n       cyberpi.led.on(100, 0, 0)
* D  J7 u/ s% |+ S, b; {& f       cyberpi.console.println("開始語音辨識")+ s) s& L, ~" i; ^1 q7 C
       cyberpi.audio.play("switch")- M  w, k% j& j! J, ~
       cyberpi.console.println("--------------"); L& s6 E" m9 ~) {7 u: S
       cyberpi.cloud.listen("english", 2)$ u0 s" y/ @  V; c# ?$ _3 G
       cyberpi.led.on(0, 0, 0)
3 ?$ W0 D  s, D: [       say = cyberpi.cloud.listen_result()
! I. o4 z; ~4 Y1 k# V5 `! T; ]8 D       cyberpi.console.println(say)
' I9 O. Q& k  c8 p/ R) ^       cyberpi.console.println("--------------")
( x* G' J: t' {' J$ C. S. R( U# M. o       for i in say:! D3 }- W% j& C& f  K! \8 K5 t' ^
            if i == '':
' Z; O2 d' {5 w( i# H3 B' q+ l                 keyboard.press(' ')& z. W: t1 X+ L( }$ y) Q( i% Z
            else:
' X* J* N! N) |1 j                keyboard.press(str(i))7 ^& V7 g; M3 F
                time.sleep(0.03)
# R# G; e3 p3 L, V7 K: N
- F4 @% r6 Z( T( h
matplotlib音量柱狀圖

4 w$ _) L( e9 _& A9 q) @& m) A' Oimport cyberpi
. E2 C" ?$ Y$ j7 kimport time& t* D) M2 l- z. v1 g, U) x5 h2 V, \7 k
from matplotlib import pyplot as plt
1 g9 G2 J9 U* U( `$ | 9 k, K' V0 E6 \/ i/ j# V0 B" E
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']: U8 p% F. u5 G
plt.ion(): h! s  n8 W1 t8 s

2 J+ e, E, K+ l9 B1 Wwhile True:
0 K' ~1 a( k& b' L   loud = cyberpi.get_loudness()+ ^6 {7 O9 A7 {# m
   plt.clf()
* P; |& T6 t9 o, d- ?, r   plt.xlabel("數據名稱")0 V- K4 M7 a! x; j$ F
   plt.ylabel("音量讀值")2 ~# d% T! G& E9 ~: j
   y_locator = plt.MultipleLocator(5)  _' p: [" j" ^% J% p) @
   ax=plt.gca()
! T3 s. v* Z; R0 k& K5 a   ax.yaxis.set_major_locator(y_locator)
$ A$ e) T7 P: l0 v* L) g   plt.ylim(0,100)2 J% @! Y; i" g
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
( g. R2 u6 _' v' c8 y( ?0 u2 f   plt.title('童芯派聲音感測器讀值')
6 V9 F, K" y  E' k   plt.legend()5 f# M' ?7 H, k) S' q! ?/ U
   plt.show()
1 c" S4 y/ x  k! _" X( d    plt.pause(0.01)
* J* S- X) B) G  V# M9 X
9 V1 C8 X+ k! A8 q9 O- _9 Y- W9 T* z0 z6 T* H7 f# f
matplotlib 多圖表顯示1 }5 p- ~# j# u
4 B( D  s* v3 P
from matplotlib import pyplot as plt4 s, D) h$ U3 F& s! Z9 ]$ q
import time7 N" T5 t0 z  k$ r, M& c
import cyberpi
/ A$ P( `: F+ m2 c6 I, p 1 ^. C/ Y: r& M+ e9 C: l+ _
loud_list = []& [- ^% D. j$ f( t2 q
bri_list = []
" `4 _$ i8 M5 qplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
8 A6 G1 Z) S$ o: Z$ S+ \plt.ion()8 j6 h* V: w5 z' G
plt.figure(figsize=(10,10))% Z$ o  x4 I7 _
plt.figure(1)& B: t( R' K7 P  m. B
x_locator = plt.MultipleLocator(5)
& R5 y- o" m+ t+ w( T, v. D  Y! G1 ?3 ry_locator = plt.MultipleLocator(5)
" J' r9 ]. B- w8 R7 d7 Nwhile True:- t) X. j; G0 v6 ^) Z
   loud = cyberpi.get_loudness()  C4 V* X# }9 T$ v- }
   bri = cyberpi.get_bri()/ Z8 H0 E1 x) ]* i
   loud_list.append(loud)) `* v% r2 [3 G' T
   bri_list.append(bri)) ?: g; Y; N" T0 l8 H
   battery = cyberpi.get_battery()
4 L( j9 r2 G9 q. e: O& {0 o   size = [battery, 100-battery]
. j3 q) Q+ S! S/ c# f$ [$ D: q   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
+ W5 R9 c& p# I5 E$ c* j+ a   ax1 = plt.subplot(221)9 z: z* o& k! N/ s  T( I9 U
   plt.title('光線折線圖')
7 q8 w& k( R. V0 z, A7 S   ax1.plot(bri_list)3 J4 D- [7 [. O6 O  N' E9 H  y
   ax2 = plt.subplot(222)4 z0 H5 h* f; B+ k- t. L
   plt.title('聲音柱狀圖')
  `( h7 k( z, t% B4 E5 i; @   ax2.xaxis.set_major_locator(x_locator)6 R# C+ ?" V) i& g) Y' ~
   ax2.yaxis.set_major_locator(y_locator)8 y# s8 E# @( v% q( b, a
   plt.ylim(0,100)
* b. X! w% _2 @* _   ax2.bar('sound', loud)
& [! }+ T; H& B, O. A   ax3 = plt.subplot(223)
9 l7 [$ b) \: p# R4 W  X   ax3.xaxis.set_major_locator(x_locator)$ ]* a5 D0 T5 I# q
   ax3.yaxis.set_major_locator(y_locator)
) S9 _/ m$ _6 A$ ?   plt.xlim(0,100)
8 q6 S( Q+ W/ r7 Y+ {$ m   plt.ylim(0,100); `7 E6 E6 o( F+ a, d
   plt.title('聲音、音量散點圖'), |, F7 O  w  ~) g9 @; C% M
   ax3.scatter(loud_list,bri_list); t( f2 L1 M+ k2 i0 {
   ax4 = plt.subplot(224)
" I, r$ @7 \1 h+ n   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})' E4 I9 c; x* i; H' i9 u
   plt.title('童芯派電量')9 ^$ t* c  o2 l6 c
   plt.pause(0.2)
, V9 x8 K, t/ {# g   plt.clf()% q0 S; z& \9 U- Y, o5 V
   if cyberpi.controller.is_press('a'):# Q! b2 X, y, Y. ~: Q; d& b
       break
8 I5 x; d9 A8 m! W: r2 J. `- D' v   if len(bri_list) > 500:
% u8 P8 E$ |% z( u! Y( C       bri_list = []' Y9 `9 M2 q7 |3 ?
        loud_list = []7 P' U  l0 o+ v4 K$ M; i
( U4 K% }8 U$ ^8 ]

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-28 02:04 , Processed in 0.024052 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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