圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8516|回復: 0

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

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

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

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


! J! Q# l9 L6 ~" {1 q4 f% q6 ^6 \
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。# n3 G" I$ ^: a4 `
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    , Z3 ^5 C9 [! x9 G" K1 V3 m' i6 j& ]
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。% d1 Z. z* b( k( r( P

4 @$ x0 }( F& e( k3 r, t& @4 O
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟), R1 W! |7 x5 Z, Z
8 }5 N. Y' _: M# d+ y- O# K
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    8 o6 B. ?# q' @+ T
& Z3 u8 X4 k( [
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    - R2 A: o, d$ A2 k* q+ v0 Q/ Z

6 @2 w. t9 a$ U7 ]" E% O( N- G3.童芯派第三方編輯器程式設計準備
5 p2 ^8 n( ^  V4 k6 Q
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。; A0 P/ v. V& V( ?6 Y) T$ t$ D- [

4 G8 u1 X( q! V0 T
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。+ `  o. q0 V& o+ h; G

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


) q8 l2 K3 }' _7 M; U
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。# f8 d) v; l% R6 o( x

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


' E  J$ i3 n+ Y* e& C
查閱cyberpi API文檔見:童芯派API文檔

/ g' L- v% X7 A6 o) F* V
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。) C4 P4 I' ~; x6 [  c+ C6 b! R

/ p; }- ]# X  S
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
1 o) L8 Y7 l; Y& ?( o$ c
5.一些程式設計案例
2 c: o# P2 }/ Y# a7 w; d童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

+ }: {, c% U( j功能介紹:; s. a7 a7 @8 j% n" l6 q* q
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。! m. ^1 O8 }" W
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。/ N7 V4 c" N1 P; q3 V
結合藍牙模組可以實現無線滑鼠的功能。! V' K2 W0 o" k1 `( D" f
- J4 G6 z4 `8 T& _" q/ L
from pynput.mouse import Button,Controller: D2 M6 {% A8 E
import cyberpi* X; S5 v# i+ f6 x+ x
import time
1 M. \1 x2 v3 z
( D9 ^8 y7 i! U2 Xmouse = Controller()
8 M0 j; I) K! Z1 N) N* m
9 K: i6 ~' I# w0 xwhile True:- [) G2 B- m% ?: G' |
   if cyberpi.is_tiltback():
# \9 R8 F3 u  @' T0 d5 s       mouse.move(-3, 0)
/ {, k' D6 y" Y6 V       print(mouse.position)
6 \$ ^6 U; f: y. @" g7 R' Z) u; H   if cyberpi.is_tiltforward():$ |1 J) u% S! |# G: K- s
       mouse.move(3, 0)
) v, a4 g3 v. Z0 W   if cyberpi.is_tiltleft():
6 z* l$ Q. Z# m! H$ u1 x       mouse.move(0, -3)" |1 T4 C7 R7 I
   if cyberpi.is_tiltright():
1 t- w$ Q5 E8 i: @       mouse.move(0, 3)) Z  d) I. y/ R
   if cyberpi.controller.is_press("b"):
5 c! X0 `6 E8 ]9 z: a. d; N       mouse.press(Button.left)
1 h1 u4 f! R& {" C       mouse.release(Button.left): b9 t1 l1 o; `  a6 ~7 H  A6 n; c
       mouse.press(Button.left)
% D4 Y. s- A! m8 M$ d( t  y! Q       mouse.release(Button.left)
0 J2 o& A; |, O   if cyberpi.controller.is_press("a"):
3 J8 a) M# r8 {* L/ j1 v8 h  m) s6 e       mouse.press(Button.right)) J/ d7 |) t$ a( L
       mouse.release(Button.right)
4 x( @6 k) M3 m$ \- q    time.sleep(0.01)4 R- `3 G: [  `+ r1 ?7 U/ u1 B
( s: [9 `; O7 ]9 k5 [8 |. U

) w: r8 N* b5 ]' r6 w
語音打字器

; ~- J' p' }8 Y9 x7 f  F2 E功能介紹:; Y) }/ |) o; R- w
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。1 k* \# w0 E2 Z% @2 o
將語音辨識的結果通過pynput在文檔中打出來。1 p" ]3 m  C+ B
該程式目前只能支援英文。
# y, `+ M7 K7 t& R
: ^8 u8 D: Y1 K3 f" ximport cyberpi' [. _" d2 `6 B7 V3 _* e" s, I: v
from pynput.keyboard import Key,Controller
" l4 P- n+ J2 H  Oimport time
$ o9 t( p8 |4 z# ?+ b# q' A   s, l" s; V5 L: Z
keyboard = Controller()
. }/ X% b1 n. s0 A$ zcyberpi.console.clear()9 m+ k5 Y: j2 f# I
cyberpi.led.on(0, 0, 0)
% Z7 {: K% s7 b2 @cyberpi.set_recognition_url()( ?9 }/ u% j6 f
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
3 Q1 @- k4 x" M+ Kcyberpi.wifi.connect("WIFI名稱", "WIFI密碼")) J  r$ L+ A/ T( D8 p5 @
while not cyberpi.wifi.is_connect():4 `6 |% d. e& c$ \
   pass
* c. q& x( V) j  o/ j% L( ?cyberpi.led.on(0,0,255)( B+ E% }# K7 E7 i! G$ D
cyberpi.console.println("WIFI已連接")
% P$ {6 i5 r- d5 D$ Ncyberpi.console.println("--------------")2 P3 @8 ]  ?, C1 ?
cyberpi.console.println("按下A鍵開始語音辨識")( t- }+ x/ j7 g% n
while True:
/ H9 w' P1 b. @& N   if cyberpi.controller.is_press('a'):" m+ j! h0 h" s0 E; ^
       keyboard.press(Key.space)6 h5 d' s$ g4 Q, P; z& a
       cyberpi.console.clear()! N/ r/ ~* S# I$ a: a
       cyberpi.led.on(100, 0, 0)- Q6 N# ]! j) F+ K$ {9 _
       cyberpi.console.println("開始語音辨識")
8 C: `6 j/ Y6 f: _. v* Z       cyberpi.audio.play("switch")
3 }1 z% F1 t' Z& u       cyberpi.console.println("--------------")
: K/ h% W2 j/ {" _5 K       cyberpi.cloud.listen("english", 2). Y0 E$ w: |: o* J9 _) H3 o
       cyberpi.led.on(0, 0, 0): h' l1 l- s% r- e3 o+ M9 R
       say = cyberpi.cloud.listen_result()
6 ^" X9 h' x, G9 l0 P. S       cyberpi.console.println(say)+ F5 v! }) s4 w: [6 j
       cyberpi.console.println("--------------")1 H( t0 N+ H6 l5 X, H
       for i in say:8 Q5 e6 ^* h6 ^0 J5 a' b) i. o
            if i == '':- d8 {  t0 \. T1 D
                 keyboard.press(' ')9 x: ^* N/ ^9 ~1 n, u' @
            else:
* [' K4 N+ g7 C) E+ U  m% J                keyboard.press(str(i)). T% @: x: r! e; o2 s: u
                time.sleep(0.03)& y' n2 ~; @: n  I. H

) U- n* U: o- `5 ]matplotlib音量柱狀圖

2 j. ]  ^4 g5 c3 |import cyberpi2 f. }! W% L& g5 R) S7 n1 b
import time
% i& N; x3 m5 E0 tfrom matplotlib import pyplot as plt
  p  N( h  }0 L5 K3 }9 p
1 u" `% k( q4 ~+ D5 A6 t  F) \' ~/ ?! Kplt.rcParams['font.sans-serif'] =['Microsoft YaHei']
1 Z* q* E8 R4 F7 Kplt.ion()
/ g8 m& r& l. L" a( \1 |
) F, R* V9 q, t' B0 ]3 g; o+ hwhile True:# K. V, T/ i4 r2 n* I
   loud = cyberpi.get_loudness()0 f0 M1 f- g/ o. Y2 v1 N
   plt.clf()
! |! @* R. h: i1 H6 [   plt.xlabel("數據名稱")
4 c* @; [0 `/ I   plt.ylabel("音量讀值")5 k, k& c' w* Q$ y/ _. p  C
   y_locator = plt.MultipleLocator(5)
: P- ?( a6 b: ~$ d! T, }   ax=plt.gca()
9 O/ {0 A* L" S% [   ax.yaxis.set_major_locator(y_locator)
8 T$ M6 ~6 J& S3 v8 b" a) r   plt.ylim(0,100)
. U- J/ g- w3 x4 u$ {0 ~3 P   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
' ?6 H& K+ w. L5 Z3 A" I& L   plt.title('童芯派聲音感測器讀值')
: D: n* @/ ^( U; J5 g   plt.legend()
2 {* a+ S4 I6 h; J   plt.show()
3 d& M/ D0 a8 g, D" U    plt.pause(0.01)
2 i( Q* c3 r! v6 x# w9 {3 c2 v: A0 ~9 t" N0 w/ u5 }2 J; G& z
! d' n1 ?; ?" e! q# `
matplotlib 多圖表顯示
  w. d& L0 O& `- ~5 E

. x  N. w2 \% E! N5 c& N+ ?) hfrom matplotlib import pyplot as plt
! ^  r7 H, P7 b; r1 B6 A2 himport time
$ B; m+ T# t& K4 ?7 c" Qimport cyberpi
1 B9 |" J8 S& ^# B$ Z6 Z0 j6 ^7 ]
9 [: e( r1 ]0 H8 T% ploud_list = []* {0 _7 h6 D( e) |
bri_list = []  W0 q- a( L/ {# U/ t/ T
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體) J6 C5 ^2 E5 }9 D3 v1 }, s& a7 [( b
plt.ion()4 W4 z7 @0 @8 M8 u7 _3 f# M5 J; c
plt.figure(figsize=(10,10))1 W/ B. e- N* m
plt.figure(1)
3 `2 F1 y9 V6 o: @0 f  Yx_locator = plt.MultipleLocator(5); n/ A. T, M7 k  f7 l5 k
y_locator = plt.MultipleLocator(5)
. l- N3 x; F. H  Q; y; Awhile True:2 X  G1 \' v4 ?7 `3 u& |
   loud = cyberpi.get_loudness(), a: e5 o5 c* M9 b) k
   bri = cyberpi.get_bri()
$ V- U# t6 `9 ?+ ?   loud_list.append(loud)
+ M% F1 @" V% T- j- ^   bri_list.append(bri)
8 \0 R9 S. D! S: P# _; |   battery = cyberpi.get_battery()
6 N1 m# a8 S+ G3 E3 |0 x   size = [battery, 100-battery]
3 d2 X+ g  g  C* T6 c# [   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
# ^$ s4 m* g- _1 A$ n6 p   ax1 = plt.subplot(221)/ N# m2 p1 d. ~; M6 F* ~- l" f/ }
   plt.title('光線折線圖')& u2 l! X# A) G
   ax1.plot(bri_list)6 M2 H; y1 O  g
   ax2 = plt.subplot(222)( I' f4 K, x$ p* Z+ F) }
   plt.title('聲音柱狀圖')* i3 W1 k6 P& P2 m7 O9 S' {7 d8 P
   ax2.xaxis.set_major_locator(x_locator)
9 p+ N/ t, ]8 p8 [3 ~   ax2.yaxis.set_major_locator(y_locator)
: U2 s& R7 |& X1 ^: {9 y! D   plt.ylim(0,100)
7 {* U  O" b: y1 ]2 w' T   ax2.bar('sound', loud)
' l0 c) j, c6 }2 v   ax3 = plt.subplot(223)4 D7 E1 r9 X& A7 g, o
   ax3.xaxis.set_major_locator(x_locator)
0 E* O+ F6 s" _1 q# u* L! Y   ax3.yaxis.set_major_locator(y_locator)
5 f8 l. ^% L+ a   plt.xlim(0,100)2 |( B$ z7 `' h. W( M
   plt.ylim(0,100). o$ A, r& x9 ?
   plt.title('聲音、音量散點圖')
4 e6 U- M+ B5 o' e; F1 S! R   ax3.scatter(loud_list,bri_list)! G; R. @/ L/ n0 Z( z/ e, q# j
   ax4 = plt.subplot(224)  v4 _8 J! v/ s' |, T
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
$ v9 ^" C5 ~8 `6 H$ o   plt.title('童芯派電量'); M5 r3 J4 m) H# ^
   plt.pause(0.2)
! y1 s# p& x, s  R+ d3 R: u   plt.clf(). W7 V, Q9 [" J: X; ]7 f! b6 r" l% L
   if cyberpi.controller.is_press('a'):
3 o. d6 u' u4 @9 d       break+ \( p! }1 |) Q: U% w0 @; {
   if len(bri_list) > 500:
( ^4 v  Y0 U- Q2 l: R% x  V       bri_list = [], ]7 c1 x& [6 q5 B! D
        loud_list = []) l# N6 B$ t( J) `7 T

4 u) o! I' b' G1 a  }

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-3 16:19 , Processed in 0.029108 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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