圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8407|回復: 0

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

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

$ H/ s/ v5 v# o0 A! c5 r1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。
    - \- g/ X4 d8 X

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

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

& @5 J- _# a) D1 E1 X( z1 w
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    , W4 D! S, t5 T, m8 h/ c/ W
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    9 Y# a$ ]* N: r' W; L
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    & A' k& R8 N+ h7 X# I
. `' y% W& l. `  ^* c, Y# I1 k
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)0 O9 h; v0 n6 Y; [9 M* }- T: A  Q

2 P) x; i3 \- N& `; [: `) Q. d7 j0 k( t
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    # f4 f7 l3 O4 y; e; U4 J1 a
$ }/ L5 J5 E2 o1 Z  ^$ g
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    - W' Q7 M; b% j. [& U
% A' q; p9 S) `8 }" x/ V
3.童芯派第三方編輯器程式設計準備
) Y4 i+ u7 F4 D6 K5 [5 R9 A
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    1 e( F# v! e8 U. N% `  I9 }
0 ?+ W) f: i# R  _
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。, g! ^- }' J/ L1 B9 t( f  @

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

# k- a% j: J# m0 q2 s
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。" h+ H+ ]; J$ o6 |. i

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

, y" ~1 S$ ^% z) o
查閱cyberpi API文檔見:童芯派API文檔
* ~6 q' P0 ]: p  |( Q# u' _
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。" s4 u! O7 p+ P) i

5 W+ T7 C9 U7 H, w/ }8 l
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
6 C8 r0 Y' e  m# _( J/ h& c$ D
5.一些程式設計案例
. A7 z; o4 ^* k& h! @5 Z# S童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
- z% N  z5 k$ x" P% d
功能介紹:% h; d7 e1 _  j" ?6 q  f4 L
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。  z# P0 }1 f2 u, o; O
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。# Q( O9 i3 R7 `6 c/ H$ \
結合藍牙模組可以實現無線滑鼠的功能。
: l8 V! l$ _' R& E' I- `6 Y$ w$ v7 B8 Q9 [+ p2 r
from pynput.mouse import Button,Controller0 v0 x8 X# v( b! i4 L- Q9 Q. x6 Y
import cyberpi
' B0 w/ ~' C, cimport time
0 l, c* o( q% y, L& n. a
) n  K5 |6 n$ i& B+ i' [% Nmouse = Controller()0 T1 e# g( c" E! a5 W7 z

% N/ C" T* h' e) P1 \& swhile True:. X8 y" s& S+ Y1 Q; k' y7 ~
   if cyberpi.is_tiltback():
% `2 q/ g* ^( p       mouse.move(-3, 0)2 ^  L* a6 |& |, E5 Z, [$ I
       print(mouse.position)+ C, j$ y! T1 T8 ?3 x, ^. Y4 z2 ~
   if cyberpi.is_tiltforward():9 n- ^" O' [1 F" z% r0 L$ B1 ?* l
       mouse.move(3, 0)3 g: h3 f5 W  S% \1 C$ [
   if cyberpi.is_tiltleft():1 d! u  b3 w' E, S; B5 E
       mouse.move(0, -3)
. b6 |5 q- L$ Y+ d% G; ^( P  o   if cyberpi.is_tiltright():  p& U  `3 F& Z: B6 @
       mouse.move(0, 3)' J( e+ j  z! z1 q6 n% P
   if cyberpi.controller.is_press("b"):* Q6 u9 O1 Z+ f8 f" h2 v# k/ f
       mouse.press(Button.left)
1 D+ |6 e" z  v' A       mouse.release(Button.left)+ _" v; |0 e2 X" J3 B1 H
       mouse.press(Button.left)$ i/ p2 t( v* C/ ~( i
       mouse.release(Button.left)
* t/ d9 C$ g8 Z9 u) U; `0 Q" S   if cyberpi.controller.is_press("a"):
% c8 f& u9 y) G* _4 P+ \       mouse.press(Button.right)0 f! R2 M$ O  f7 H! n
       mouse.release(Button.right)4 A( u0 X9 i" d, \: b  c
    time.sleep(0.01); j% g8 y8 o  k; \

* A0 C; ^0 }& s
+ P& E/ [4 G9 o% S( Q/ u0 N
語音打字器
! A! z" z7 k5 {( h" S0 b' b
功能介紹:0 g; R* ]5 ?  d! L4 K/ w
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
4 l! ~" |& f9 v! h$ g5 z9 F將語音辨識的結果通過pynput在文檔中打出來。, d9 B2 O" \& E4 R; k+ J
該程式目前只能支援英文。
" H7 V, h' d- D3 R: _) o4 C; J
1 [6 ^: v: f0 d. aimport cyberpi
& r1 a, h+ q$ e7 y" q; rfrom pynput.keyboard import Key,Controller" ^. X% x2 d/ s
import time
8 J4 @' U( }. g$ q6 j 8 x- l' C' @- g3 e
keyboard = Controller()
2 ^) K+ U3 Q' j2 r4 K, Zcyberpi.console.clear()6 g* C4 M9 Z: r2 y; [# O
cyberpi.led.on(0, 0, 0)
' j: t# b" y9 F' c  l/ y) hcyberpi.set_recognition_url()
& E) t- y, P" r2 H4 c$ H7 @: `1 Pcyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得) s. e4 p4 _' D5 Y
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
2 @% C" x; F+ qwhile not cyberpi.wifi.is_connect():' Y/ m6 s4 e' [
   pass, N' H1 Z& p. k; l
cyberpi.led.on(0,0,255)/ g6 k* w; w+ X& ?) ?) D
cyberpi.console.println("WIFI已連接")4 I% J5 Y" d4 r, ~7 r
cyberpi.console.println("--------------"); k# K: c3 ?3 k, v" f# T
cyberpi.console.println("按下A鍵開始語音辨識")7 q# E3 s, u  |/ _
while True:
6 E, T/ }% x: _( w3 J" [   if cyberpi.controller.is_press('a'):8 o: ]4 b. G4 u  o7 i; d6 N8 }' t
       keyboard.press(Key.space)( u  s. s' G( x1 ]3 l6 M6 l
       cyberpi.console.clear()
& S! b! u( {% O8 D0 ?       cyberpi.led.on(100, 0, 0)
9 k% A9 G- |( i# l       cyberpi.console.println("開始語音辨識")
. L+ p9 |, n7 c/ ~) Z' J: @       cyberpi.audio.play("switch")
  u  A3 n! S) B       cyberpi.console.println("--------------")8 A( j: ]+ ]' l; Y% i2 b) q; G
       cyberpi.cloud.listen("english", 2)8 ^- x* N2 D. J- ^) ]
       cyberpi.led.on(0, 0, 0)- J! D  s- C% e2 B
       say = cyberpi.cloud.listen_result()
7 m1 A  y$ p/ x& M       cyberpi.console.println(say)1 W2 s) W9 r& ^& J$ y7 ^/ f
       cyberpi.console.println("--------------")  V, F0 F  _% W+ I
       for i in say:
) \& e$ d2 ]6 a1 _- g. u0 q            if i == '':
: z& ~( W9 C, @5 p1 r% Q                 keyboard.press(' '); z$ d. C% }' @1 ^, _$ p! y
            else:
9 q7 |: h# _% L! E                keyboard.press(str(i))
5 n6 S0 G9 B# r- C% x                time.sleep(0.03)
; a0 G) e2 R" d! O. Z
7 h* e7 _4 i8 m. H9 N: V) s
matplotlib音量柱狀圖

; Y/ y/ Z  y0 x3 K6 m% J, ~& V& simport cyberpi/ O, Y7 }3 }1 A6 d; v
import time
6 W- ?9 P- j6 ^$ A) a, \from matplotlib import pyplot as plt
  P. b" y3 w: o" `8 L0 ` ) `- v9 ~6 Y: B: j  f% S
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']4 y: O) H; y9 D* `8 Y( q" L
plt.ion()
# S' I$ E' d( v7 ~$ L' _& F/ ~
% \/ J) u; Y* ?$ s6 ywhile True:* G5 j2 g: ^. q; o  S" D9 r
   loud = cyberpi.get_loudness()
/ ^+ T3 L& Q7 C: P% i9 a. F   plt.clf()
% U* K+ h2 X  y9 m* j" d& P) V: l   plt.xlabel("數據名稱")
/ h" U8 |, s: Y   plt.ylabel("音量讀值")
, g8 S% f: v6 L   y_locator = plt.MultipleLocator(5)
; X, G( R- I3 l1 f' N   ax=plt.gca()3 p) A+ W$ a5 P7 {; v
   ax.yaxis.set_major_locator(y_locator)0 b3 W4 n4 C; k9 b
   plt.ylim(0,100)" @$ |7 M2 D$ b- p7 l. [
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')  m3 d  Y! W0 W- b
   plt.title('童芯派聲音感測器讀值')
/ L6 n0 |* u/ S   plt.legend()
! `6 C" M( M1 Z& X' r   plt.show()0 {0 [+ J9 r% I2 H3 i- j6 T
    plt.pause(0.01)1 U& S* r) X7 w# ^% r
1 b1 h0 k! R; o/ X; U$ Q# O

3 N* h+ `8 p& t! f5 ematplotlib 多圖表顯示; ?: G* ?& A" V5 K9 h: w, m
8 o& f: V: P% g6 g  s# X
from matplotlib import pyplot as plt( p) k4 P9 R6 r7 f. ], j+ W
import time3 w3 |: d9 Z. h( u
import cyberpi
$ |+ Z. h* g% o2 m8 A1 V* r8 l $ J, [2 {4 n. R3 c1 }
loud_list = []( w) y. r  v+ P
bri_list = []4 G. q8 u' m3 t8 [- H  l9 b
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
1 t1 J4 I) x2 @1 Nplt.ion()
4 [3 G3 t1 ~7 \3 X$ S0 X$ Cplt.figure(figsize=(10,10))
$ _& f! n8 E4 o0 E; D% `0 Splt.figure(1): c, `6 U/ f: x9 P# r/ C
x_locator = plt.MultipleLocator(5)
$ p. J2 C) \- G, B% S/ D% e* s' Qy_locator = plt.MultipleLocator(5)
  P$ U; g. R- H. rwhile True:
0 o, [5 t: u& g& s, i/ b   loud = cyberpi.get_loudness()* ?- p2 x  Q7 G; w5 @
   bri = cyberpi.get_bri()9 A+ p" B+ l/ }; z4 e
   loud_list.append(loud)
) m; }% _$ ~3 b) F6 R   bri_list.append(bri)# P2 y2 |: i$ u7 s. w) u
   battery = cyberpi.get_battery()
( K; ?6 A5 r4 ^# q; q, J   size = [battery, 100-battery]
$ N' w2 f* W. ~2 {& o9 R4 M" x   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
$ g8 @/ R0 s; y2 F   ax1 = plt.subplot(221)$ c3 D, P1 M! t
   plt.title('光線折線圖')
+ Y5 U9 @% g2 {! [1 l   ax1.plot(bri_list)  a! N; u$ e& L; F
   ax2 = plt.subplot(222)
$ t9 U. A3 e/ J0 W   plt.title('聲音柱狀圖')
- i' b. r  h1 ]% P   ax2.xaxis.set_major_locator(x_locator)( B2 b% t  O. n
   ax2.yaxis.set_major_locator(y_locator)* f" ^. b( r7 I1 t" ?7 C
   plt.ylim(0,100)- @6 P& Q9 |, x6 H* @
   ax2.bar('sound', loud); R6 w$ I0 t1 P! \4 L' d) X
   ax3 = plt.subplot(223)$ {0 b3 U+ V# e, E& ?' e) {
   ax3.xaxis.set_major_locator(x_locator)
/ i5 k/ [* J0 w, m0 _   ax3.yaxis.set_major_locator(y_locator); ^, ^) {6 V0 p- d
   plt.xlim(0,100)+ W( a  Q4 y; G) O- }
   plt.ylim(0,100)% Z7 t' u8 _1 |2 _. J. H
   plt.title('聲音、音量散點圖')
/ F+ s% c% ~0 j2 S   ax3.scatter(loud_list,bri_list)' k: O% P% t  f% D2 v9 w5 V
   ax4 = plt.subplot(224)
1 T5 u8 h4 d* L, D4 b# _   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})) g; k; J- a# c, B0 c
   plt.title('童芯派電量')
  Y( C+ V* E* f   plt.pause(0.2)
1 {$ J: m/ k6 ~( e$ b9 z! A   plt.clf()
' F% B% f5 r8 }( I+ o7 T: M   if cyberpi.controller.is_press('a'):
( {! {! I7 V7 u' o2 A  d9 p4 E       break) m- R- g# x+ s2 G0 P1 c
   if len(bri_list) > 500:
2 \' D* v& E, Z; x+ c+ [" v- p       bri_list = []) e1 x7 }& `; a  i
        loud_list = []8 P+ h" j# h7 \! v  W

# d/ V4 v1 }, W. P. Q2 D  B; P1 p

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-24 19:22 , Processed in 0.025728 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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