圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8288|回復: 0

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

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

) c8 _5 E1 V0 _3 ]9 y1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。
    , O9 K' S- Z1 ]7 G( f: l( Z# X6 `

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

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


% c; }& E  X6 i9 }+ t6 C
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。6 n. w0 s) v6 |
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)+ ?5 d% g' c. H* a
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。8 A$ n! D7 _) R9 s/ O

+ t, j# h. k- u
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    ) Y* S' d2 s: o7 y+ A- X, o

* o* N- w7 x+ _) o
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    ( I5 e4 S0 t5 s# N
5 [6 O0 o% [/ w* `; [  z
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。- Z2 Z$ Z9 b5 b* F5 R& w2 |9 D9 n
/ y6 ?6 C) c9 w4 ?! ?; C
3.童芯派第三方編輯器程式設計準備3 q: [2 Z; z; Q8 u( ?& L* W
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。) r: D: Y. u# w

2 r$ X5 p( y5 q2 `% C6 F4 ?
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    8 J; Z1 `. H% I, a' g; ]' c+ o1 `

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

4 u5 w: i1 o- Q
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。: T  \) C# X% t$ ^3 S

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

3 b5 b& Y8 }6 \
查閱cyberpi API文檔見:童芯派API文檔
) U, s  @3 K1 o/ e& d
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。, y" C5 b& c* y- v0 `/ u
  @! }( q9 K! v- _5 i  z
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
) H7 k5 s/ Y2 V( e. u; ?* z
5.一些程式設計案例- H0 R$ M; a" ~  [7 R- c; X
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

. W# B) t6 E- c- r. T$ I2 @; l功能介紹:, V, N% |( [" E0 g, \1 p
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
6 D: t3 @7 [3 v通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
1 ]/ R# k5 z' s$ p6 h4 d結合藍牙模組可以實現無線滑鼠的功能。
* V8 C1 ]6 Q- C/ r1 d4 E. b0 Z$ b& V  y$ a3 a- s' ?
from pynput.mouse import Button,Controller, ]$ w  \* h5 T9 Y" k$ s1 o2 o
import cyberpi9 h8 i7 b, J, K& v2 a) D* D/ j
import time5 A$ P2 i- G; {

) ~1 T/ t. G/ c# |0 U1 A: }mouse = Controller()
0 U$ L( Z' c' r3 k2 a: J
+ I0 {" Y$ L6 v% F+ O" @while True:" N2 ~+ {' u  O1 J
   if cyberpi.is_tiltback():
. F' B: P' L% I       mouse.move(-3, 0)( f2 [/ b' o3 K7 D
       print(mouse.position)
$ t% J: I9 f! n3 @# ?   if cyberpi.is_tiltforward():
3 ?6 o' [4 I" m       mouse.move(3, 0)
" U/ h2 M* Z! C5 T   if cyberpi.is_tiltleft():# F. G$ A" y4 b) p2 S' e
       mouse.move(0, -3)
5 E* [: q: f0 l' l4 s- z+ A   if cyberpi.is_tiltright():6 Y* n6 ]5 I) Z4 e; H  n
       mouse.move(0, 3)
8 f1 e  J4 @6 T# w- J   if cyberpi.controller.is_press("b"):( ?" b! J0 l% `9 L
       mouse.press(Button.left)4 K! ~3 F9 T$ ?( u/ ?
       mouse.release(Button.left)
+ C- L# d9 w) ~1 i       mouse.press(Button.left)
3 i% @. e/ t% @  J* x       mouse.release(Button.left)$ ]9 g2 s$ v' J* a4 b7 B4 Q8 }& W
   if cyberpi.controller.is_press("a"):1 w7 Q4 R) d( q. N
       mouse.press(Button.right)1 i! k: Q/ V2 h7 z3 N) }
       mouse.release(Button.right)+ i+ _; g$ k: o" B' i2 Z# R
    time.sleep(0.01)/ B  C  R9 S( T5 b
$ Z6 s" L( B( V7 g
! O; H/ I0 K2 R# I& O: b4 N# h
語音打字器
: Z9 M8 U7 \+ R  g2 A
功能介紹:+ t" i. n: v$ z: \+ A4 I
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。: U; X' c! y2 q5 _, B/ J/ x! m
將語音辨識的結果通過pynput在文檔中打出來。
! ~( ~3 |( M) e( i8 C! A* Y該程式目前只能支援英文。
7 j1 p* h) z) s- d# l$ i! V: f1 H9 G* ^% o, v5 D: S
import cyberpi, F- o& [. r! i: N
from pynput.keyboard import Key,Controller
7 C! a8 M( W8 ]8 nimport time
, X$ c) v: S1 {: K9 |* [/ @ ) e$ D! c9 M* G+ d* ?& [8 Z6 K4 E
keyboard = Controller()
/ V& \5 X2 i. |5 L2 a: i# \* pcyberpi.console.clear()/ ^9 K) k; z8 b, R, ]
cyberpi.led.on(0, 0, 0)
% c. Y  O4 c! tcyberpi.set_recognition_url()$ ^% A4 p; O6 _4 a6 l, C5 H; x
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
+ h. l5 q# Q8 Ncyberpi.wifi.connect("WIFI名稱", "WIFI密碼")) J& p1 e& j% _4 N4 T6 E+ d" r) t! z
while not cyberpi.wifi.is_connect():
- I$ ?# X2 }$ O, o   pass
7 i! S/ b, y3 i' Ecyberpi.led.on(0,0,255)
1 a! }) k4 t/ ~  l5 Q$ W& @  Fcyberpi.console.println("WIFI已連接")
$ c8 P! X9 p0 @( g$ K4 I" ^& V* J" ^cyberpi.console.println("--------------")# o! N) K. K# ?% d
cyberpi.console.println("按下A鍵開始語音辨識")& q0 _0 y/ d5 m* s7 V+ W6 p! H, D
while True:* i" x. F2 U) H/ @
   if cyberpi.controller.is_press('a'):
! Z) S1 ], O- Q       keyboard.press(Key.space)
1 h) J! n- r+ M5 x4 ?. t       cyberpi.console.clear()8 N1 M, J3 n* d5 R9 L& [8 G- T/ {
       cyberpi.led.on(100, 0, 0)1 K3 a6 M7 D& N* g' Y
       cyberpi.console.println("開始語音辨識")
5 e1 m8 `. g# f0 @5 i& n& ^       cyberpi.audio.play("switch")( Z2 W1 E, F9 f! Q
       cyberpi.console.println("--------------")! @+ g, I7 Z* C2 W8 \
       cyberpi.cloud.listen("english", 2)- J2 l0 a3 Z1 w0 p% n
       cyberpi.led.on(0, 0, 0)
* m0 H/ F1 S6 B$ s& Q       say = cyberpi.cloud.listen_result()
/ g/ R: \% N5 l3 E% `+ y       cyberpi.console.println(say)
: Y" M8 O2 `5 ~! G% Z* T0 x       cyberpi.console.println("--------------")
) L0 @& S6 S) S       for i in say:
7 D/ Q/ p  L% J            if i == '':
& D" R" }; c  `( u0 B9 _( O                 keyboard.press(' ')
3 ~8 r9 N1 J/ g* g            else:
  X. |* b7 Y# s, L' x9 u; c+ Z                keyboard.press(str(i))1 Z% Z  I9 s0 Y. B( R
                time.sleep(0.03)* L* m4 X( \" O% Y$ K# t
7 r* _# L2 r+ J4 T
matplotlib音量柱狀圖
  o# a0 `! e) G8 L" w+ D
import cyberpi1 n- L" a, y1 ?+ f
import time
. Y" s  K2 [- E' l: p+ Dfrom matplotlib import pyplot as plt+ e; |2 J+ d& ^4 D9 g3 d1 _( I  d
/ O1 ]8 N9 ^- @. X! h  P
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
0 w1 O/ B6 T6 p" B  [plt.ion()
5 g' B5 W- q4 `2 a/ r& B5 P. c3 Q
' a$ _" B0 ^8 D" ~while True:
  b2 P2 u" {6 {' X& l   loud = cyberpi.get_loudness()* l4 r! B5 N( t0 J3 _
   plt.clf()
: p. D% u+ V( ]9 ~. f! y' V: J   plt.xlabel("數據名稱")
& Q5 ?) p" T1 m6 N( D! I   plt.ylabel("音量讀值")
6 T0 z) h! Y8 f& [4 r1 r   y_locator = plt.MultipleLocator(5)
) j  B5 a) B' r( l. J. t( e   ax=plt.gca()
/ I3 k; H8 l+ }4 k, s$ Z8 j$ K) w   ax.yaxis.set_major_locator(y_locator)# r9 o, ~5 Z2 }3 z* P1 ~- ^
   plt.ylim(0,100)
) w) n2 |9 Q  g0 G   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
9 Q- D! i  d! l1 k/ ^, M' B& ?7 [- d( p   plt.title('童芯派聲音感測器讀值')
9 l2 h) r  }. N6 }7 l   plt.legend()2 ?# d: g7 E, F' Y
   plt.show()
6 U! \2 h  `9 `6 y" O    plt.pause(0.01)
" g  A. a, [& W- v/ S; V% e" T( o6 o% q3 z
! E  ]2 Y! g1 T: B- Y! \# T; f
matplotlib 多圖表顯示  N& q$ d4 m, E% J4 \
! s, R5 v& e! Q: d& C$ z2 k
from matplotlib import pyplot as plt; C2 |2 Q3 x1 q# P8 r* k
import time
' V, S9 Y8 B# w' c3 f5 M9 D' F# limport cyberpi
+ \' ^! W1 @1 W; P
: \" s- U  D& y$ Sloud_list = []
( [, j, |3 M2 L3 N' dbri_list = []
$ ]. Y# `* W! p- ^: q" y1 Wplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體: [0 ^3 N' a  c: ?7 r8 t: \9 e
plt.ion()! y; i- {; r. W$ h
plt.figure(figsize=(10,10))
' x4 k4 I: v/ dplt.figure(1)
: q7 t% @6 _' N  G* [/ a) rx_locator = plt.MultipleLocator(5)4 H: m+ t" K; K
y_locator = plt.MultipleLocator(5)
, _& U6 E3 A6 ?7 I8 o1 ?while True:
5 q; g  D6 n, \! |* Q   loud = cyberpi.get_loudness()
6 i# J. M% `6 O7 a   bri = cyberpi.get_bri()* ~$ f& h' C$ }% ~, _
   loud_list.append(loud)
; Y1 o. y+ s$ N/ s( G# D9 q% J   bri_list.append(bri)
" @: M2 R/ ^$ u% o" w0 c6 @6 P   battery = cyberpi.get_battery(): b  }$ N3 `( }7 V
   size = [battery, 100-battery]
: u2 S* y* ~7 \0 i/ B   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
8 ^& z9 b( ^7 H9 i+ P3 {' Z4 J   ax1 = plt.subplot(221)
. u# h' V+ x9 ], g7 _   plt.title('光線折線圖')
+ y! q( u; [# E" i* Y' H   ax1.plot(bri_list)
1 |) l3 s" E0 Y* b: ~+ d" N) i# z   ax2 = plt.subplot(222), J1 V7 G' B% P+ l- f
   plt.title('聲音柱狀圖')
7 q/ m1 e4 C9 P   ax2.xaxis.set_major_locator(x_locator)) \" H; s/ {" T, Y
   ax2.yaxis.set_major_locator(y_locator)
6 v! v: {8 K, `3 C, c7 v' I0 n" ~   plt.ylim(0,100)
3 X# f( \( {- X2 O( y9 q$ j% s; ^   ax2.bar('sound', loud)
; {4 n" M' T9 u+ Z) F/ X# p0 e   ax3 = plt.subplot(223)  o( F1 I% ], j8 H9 Z, x. x5 H2 K
   ax3.xaxis.set_major_locator(x_locator)
  D/ K' `/ ~0 i6 A   ax3.yaxis.set_major_locator(y_locator)% ?3 {" m8 X& V( z0 O
   plt.xlim(0,100)
7 g2 H9 r0 F8 S6 ^* [7 F   plt.ylim(0,100)
) V7 d4 v8 d9 n   plt.title('聲音、音量散點圖')
8 f$ d$ v! s* V0 |& c   ax3.scatter(loud_list,bri_list)
# g' ^" g! J+ `1 _3 B5 T! L   ax4 = plt.subplot(224)
* p$ w' T/ C4 z( P   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})2 h2 F  O9 d$ I" _  K7 h8 C& [
   plt.title('童芯派電量')- x/ c0 D6 t9 L9 [' t) y# l7 ~
   plt.pause(0.2)
* D  C% |/ b6 Y: d   plt.clf()2 A* x$ Q" [- u  a- S$ |1 {8 g
   if cyberpi.controller.is_press('a'):
9 s+ w0 K4 Y" W       break
# S: o: Y" B% V4 o# k" q$ k% t   if len(bri_list) > 500:
7 V/ r2 N# R9 I' C       bri_list = []
+ |7 E4 y: H$ m' G) I2 y        loud_list = []
3 i, V+ _  p% ]' }  g" w$ _( g2 g, [( P1 ?

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-9 01:33 , Processed in 0.027740 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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