圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8439|回復: 0

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

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

& G) O3 P- s# h0 i" w5 I1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。
    + n2 [8 ~8 q3 A& T

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

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


2 f+ w3 V: u3 m3 v3 u* Z1 {6 @2 B
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    - s' k' T7 f% K% N
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    2 m: g, c9 `# `5 P% W3 Z  _- g# ?
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
      Z, n8 G2 H9 J7 |4 W5 i3 N9 e8 J0 i

% b' u: N$ N% @6 r' H7 X+ }/ U
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)# n8 t7 b7 p( a+ j& N) M) o9 `
* ?7 _' i# f( s. f; k# i7 d
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。. V4 w! r; ?8 M) U' [

' @$ i  @; S% q
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    2 E9 f: A% J9 h. Q% h# V0 ]
/ s, R/ Q/ b' c. ~& U
3.童芯派第三方編輯器程式設計準備
: }% a  `0 L! z  B2 ~9 U2 ~5 S
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    ) ?' L& J: w/ O8 Y( n* {
- }4 N7 B0 W! M  ]- \, a
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    ; u" `! i$ }) }3 b) z" ]7 L

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

/ ~. y: j7 f$ K. l6 A1 ~& M
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。9 v1 v# V5 m3 ^

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

* y  s% h8 o, d0 Z$ \5 X& m
查閱cyberpi API文檔見:童芯派API文檔

9 ~9 Y) s% U% q# j9 N- P$ R
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    ) k7 N( k" o3 w4 Q

7 O7 B. ]* `5 s. q# q! v' K% a
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
" k+ D7 O, w9 b
5.一些程式設計案例
3 M' L5 x+ a0 o8 M; `" K+ A; R童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

. k1 |$ `5 n1 |3 t2 r功能介紹:; ]' u6 u7 x2 d* F
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。: F( \% Q6 h! L  |
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
. h3 f, l# X* P" g, J! I結合藍牙模組可以實現無線滑鼠的功能。: s! T0 c# T$ m; V2 N7 [- i2 X

9 Y4 y( j, o9 ~" R" o' zfrom pynput.mouse import Button,Controller. ]6 j% ^2 Y" e- c. I9 h2 Y
import cyberpi9 y* Y& |# p: Z
import time! B% i3 @' d* q& a9 G( P0 s
# a/ [9 j' S% Q# x( a- f8 r8 N
mouse = Controller()  ^9 R2 W% L" A1 l' o

1 X) R! {7 w% ?" T2 Twhile True:* J) J' _( m% T  ~) B9 `6 H6 s
   if cyberpi.is_tiltback():- k' v  c# }# P, F, J
       mouse.move(-3, 0)
% E* C2 P3 E9 I' Z       print(mouse.position)
1 e5 X# f, @3 G0 D   if cyberpi.is_tiltforward():9 @& j/ p' d: S/ {1 k" P: i
       mouse.move(3, 0)) y& j+ j" [4 w. B/ h
   if cyberpi.is_tiltleft():) `5 S" t8 O8 v& ]
       mouse.move(0, -3)
/ h0 t' o8 c% P6 w; H   if cyberpi.is_tiltright():6 h8 @  H" T2 n5 T+ U
       mouse.move(0, 3)
% A. D' m- V* s7 d# t   if cyberpi.controller.is_press("b"):
# J4 i- V# t# b" Y5 R+ y8 W       mouse.press(Button.left)( U4 w+ P" z0 E) y% p! P* k2 T
       mouse.release(Button.left)4 s  L: k$ D3 @4 ~; S3 X
       mouse.press(Button.left)
7 I% t2 J$ B' h: c       mouse.release(Button.left)- I9 d! w) b+ o# U9 [; T3 x2 @# n
   if cyberpi.controller.is_press("a"):/ r5 q9 g6 M+ N
       mouse.press(Button.right)
. }% I$ y) S' O3 R       mouse.release(Button.right)
6 w. d6 a' P+ h9 ]7 D    time.sleep(0.01)# A8 i3 b& u, c3 N3 x& S% c3 J
8 H1 D" |; m) X/ O  m

/ X2 `: A: ]6 a3 N' Z' j) c
語音打字器
+ Y* M2 R1 |& d0 y4 C5 t3 I, h
功能介紹:% E$ O6 w" @- p( `% u8 j) u
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。" f1 J, x- @0 e" Q' N
將語音辨識的結果通過pynput在文檔中打出來。
9 G1 D4 N0 ?) |9 d5 ?該程式目前只能支援英文。8 D  R& l0 i0 A6 O: ?
% _7 G1 \. D* |& e! \
import cyberpi
) l4 t. G3 d6 y3 [9 G! L1 ofrom pynput.keyboard import Key,Controller
* o$ F, j8 e5 O" C7 _7 v0 Z; Iimport time
( v9 B# n' r) B) C/ f9 N1 p8 t, ^3 k& ] 6 Z; _' {3 o' R% m2 y
keyboard = Controller()* j* r# {/ g& P+ U/ v7 [
cyberpi.console.clear()" O1 F! ^1 e: }6 \8 l
cyberpi.led.on(0, 0, 0)$ x* Z9 R4 e  p  x
cyberpi.set_recognition_url()% w. F, y. F% S  E1 {
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得9 b. k6 O; P( a0 @/ h" O
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")( h0 \: Z) h/ J
while not cyberpi.wifi.is_connect():
. G& Y1 B3 r  W   pass
3 b/ x# [; [8 H' b) o3 j. y' pcyberpi.led.on(0,0,255)
- u$ W& V% S' @8 \9 S( @cyberpi.console.println("WIFI已連接"). r3 w( A, o: ]$ C0 {& w
cyberpi.console.println("--------------")
2 e4 d) c' s. X5 \/ }cyberpi.console.println("按下A鍵開始語音辨識")
! A" }4 J5 g9 D5 ]& ywhile True:9 E- [( S6 c- p! h: c7 O5 |
   if cyberpi.controller.is_press('a'):0 B* m0 O. ~0 i3 ]* y
       keyboard.press(Key.space)1 V! F5 I' ]. }
       cyberpi.console.clear()  y% B. f$ P! z4 Z( V* _6 `
       cyberpi.led.on(100, 0, 0)
* B: a& G; X/ S  w8 C       cyberpi.console.println("開始語音辨識")9 v! `* `  r. u' ~- W
       cyberpi.audio.play("switch")# O  W* Q8 G- {) V
       cyberpi.console.println("--------------")0 c! P  ]. @) d: @% `) R
       cyberpi.cloud.listen("english", 2)* D2 t9 n1 C; R
       cyberpi.led.on(0, 0, 0); _" D. w" T2 j9 _
       say = cyberpi.cloud.listen_result()& j* i8 w. f; ?0 k
       cyberpi.console.println(say)% @0 L" t6 A4 s) f' _! S5 k
       cyberpi.console.println("--------------"); p3 D3 B2 x( G: f0 U
       for i in say:
! e" s4 s! o/ ^4 F$ F" {7 y            if i == '':
8 n3 R& W! S# Y                 keyboard.press(' ')& q: I9 _! `3 N4 T
            else:
$ J, k5 ~* ?- d5 E- E                keyboard.press(str(i))
/ p- A) X8 S, ?% O# A                time.sleep(0.03)( H0 ]* W( z7 C: M7 B
( V# s0 i9 u% B- Z1 `6 L
matplotlib音量柱狀圖
$ e: H, m8 ^$ L
import cyberpi
/ G& ^/ P0 U6 b6 U( {0 g1 U% zimport time
/ @$ v5 u' U* L. Q1 b" [: q% ^; D: Wfrom matplotlib import pyplot as plt( r1 O4 c7 z6 I9 w5 `

2 R3 a! r4 F' `0 B& Splt.rcParams['font.sans-serif'] =['Microsoft YaHei']% a' p: J8 z( U8 J) M
plt.ion()! V3 L2 r& u0 h% I* W8 v

7 H+ o9 U! n/ g& l; O- [( S# Awhile True:
7 H" I& Y! z1 r3 Y6 k   loud = cyberpi.get_loudness()3 `7 R4 q+ f' |- A
   plt.clf()
9 ?7 n8 \9 G! a   plt.xlabel("數據名稱")$ W3 s" e( d! U* k9 `' L! s1 u8 r
   plt.ylabel("音量讀值")$ k0 S; ]  z" M4 }1 R9 Z( `
   y_locator = plt.MultipleLocator(5)& R2 o; Z# L0 f: C% g
   ax=plt.gca()+ W2 H' }. Z1 a# H- }
   ax.yaxis.set_major_locator(y_locator)
# ~5 I8 {2 G2 n, a; t   plt.ylim(0,100)
& z4 u- q/ T; _0 a   plt.bar('音量', loud, align='center',label=f'溫度{loud}')  k( U1 v0 E" V4 ~$ A* e
   plt.title('童芯派聲音感測器讀值')
+ V! R% `8 a( x$ W1 ?   plt.legend()9 w, V) {# f0 ^, h
   plt.show()
) H2 M, R, o4 R/ H6 [3 p3 \% m1 a    plt.pause(0.01)
! M) y  {- z, o4 Y) o' o( X
9 _) B1 r, H$ @! r# U0 H. ]7 K1 e$ o. ?  H& v: Q! L" g# Z6 d
matplotlib 多圖表顯示
7 m* u/ Z& R# S4 M$ i% n% m) P
/ s% \: |6 B) |% d2 m
from matplotlib import pyplot as plt5 H% x0 f3 ^2 Z/ e$ d' h
import time
; P. E# X7 r% Z  Q) vimport cyberpi& t9 A8 Z. `3 z
, e& G  D) N9 Y0 A0 c; W
loud_list = []
; v* Y  z3 J4 \: nbri_list = []1 u$ M3 d1 T4 v. l2 p
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
- i) ^4 h" G; x  V( _' u, f$ [plt.ion()/ q) X! m7 Q) @3 |+ |* z
plt.figure(figsize=(10,10))& [3 [* ]8 u, ?* {, j! g- x
plt.figure(1)
3 M" V+ ]& K5 {; ?. R/ V# s* \x_locator = plt.MultipleLocator(5)# k7 t" ?, p  K5 @- D& {6 K( J! e
y_locator = plt.MultipleLocator(5), Q* x7 P2 F! a! O7 E! G" }4 `
while True:; k! @- t) e; z( P$ ?
   loud = cyberpi.get_loudness()
+ W# H: @9 y. m8 n   bri = cyberpi.get_bri()) i* `/ P( p4 [. |4 S1 b
   loud_list.append(loud)
- E1 P8 U0 W) ^" c: Z/ _! X. c0 ?   bri_list.append(bri)
$ J  _  w3 ~9 x+ S) G   battery = cyberpi.get_battery()
$ E. X% |, W- v; t   size = [battery, 100-battery]
1 Z( t! ]% h2 e& d9 O+ I   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
0 x1 Y0 h# g6 V: \# k. |   ax1 = plt.subplot(221)
" k% y  t% O. T2 J  q   plt.title('光線折線圖')
% e0 ?, z# h9 T   ax1.plot(bri_list)& K5 z4 `! H6 B$ n8 F
   ax2 = plt.subplot(222)
8 `# q4 o, v! o2 t* i0 j% l$ W$ N, o   plt.title('聲音柱狀圖')  ]; s  e1 G5 l( H2 ~) f; E4 g6 E1 R
   ax2.xaxis.set_major_locator(x_locator)- X3 r3 c' c* ^& O1 ^
   ax2.yaxis.set_major_locator(y_locator)/ U0 A1 y* ?' a3 ]* B" [- G
   plt.ylim(0,100)
* s! v; y2 X6 A& G: q+ c   ax2.bar('sound', loud)
$ f7 T9 }. R7 d0 `   ax3 = plt.subplot(223)
8 F7 P* i5 L" G, r. J6 e9 h' F   ax3.xaxis.set_major_locator(x_locator)
) [0 z7 r: u0 a' C- ~  q# B   ax3.yaxis.set_major_locator(y_locator)
( Q# F5 k$ q8 `  X! a; `/ h   plt.xlim(0,100)
/ ^4 P! w6 s9 C   plt.ylim(0,100)
. i  g+ Q- |0 B; }* `   plt.title('聲音、音量散點圖')
2 Q7 q2 g# {9 u" a! N! c   ax3.scatter(loud_list,bri_list)% D2 d; m$ A. \2 c" e
   ax4 = plt.subplot(224)' {% _0 f. U! v: X# a& M
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
( M: i4 C: k" @3 W( R) y   plt.title('童芯派電量')
& x( y8 y; F8 f3 A5 ?/ S   plt.pause(0.2)
1 n: N3 e3 C% ]7 @* e   plt.clf(): ]0 y5 B& N/ v5 ~7 r: Y
   if cyberpi.controller.is_press('a'):
0 A; P& K- S5 H0 v       break2 a  e5 w: n2 ^( N
   if len(bri_list) > 500:1 r- V( N& I4 y1 i
       bri_list = []& ]0 w1 B) h9 S4 u) O4 P
        loud_list = []8 V, _; p+ q& F3 i: S; ~# n* P

0 b; p) s, o- r- b$ N

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-27 22:54 , Processed in 0.030514 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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