圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8451|回復: 0

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

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

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

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


! \3 m; p" ^' V! W, `' l) P
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。8 F4 _5 F/ m, b2 w. W. C
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    / t: q( }% I( h' I  y1 z5 B
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    1 ^0 F& U! D  B) J2 x" L' p

% V( S" T7 |$ r" W6 ?: [
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    & Q' g7 n! @6 p& W: x
9 _" s3 U0 {% w- g  b
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    & H$ i4 t  w% h/ d
. f$ N# i* g) m
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。, U& X5 d2 X7 _# K) \9 c% n% n

0 O1 A$ b4 ^9 ]$ i- j: J% u& X3.童芯派第三方編輯器程式設計準備
1 q$ E% n5 m; X; \0 O. F
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    & v5 `" d# ]9 C# }; b  K
. A$ L. D# u5 _0 h5 ^; m4 n2 c6 f$ s
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    & N5 J$ u$ v/ `$ V0 d# V/ v- V

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

$ |% c. s2 e) f& K# B$ G, M0 C" U
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。% m( Q& A5 o; @$ A( m

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

5 a+ g/ v4 {4 _( l+ J0 P
查閱cyberpi API文檔見:童芯派API文檔
& l( h" x+ y. C' C
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。+ p8 n7 t1 c7 C2 N2 o

, [0 P; c" W" O! x  V% J; F( V
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
1 |, D1 G" W# [
5.一些程式設計案例' A% p' P* _$ |8 F* Y0 k- S& L
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
2 a* \. ~* i$ O: v4 M- r3 p( R  Z
功能介紹:
$ T, ^# {6 Y2 z9 i; M利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
& B$ m& d' p( r2 D2 X; s通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。& `: |: w# f* L: y
結合藍牙模組可以實現無線滑鼠的功能。
5 u3 i# y& b* @/ S' g" X: ?- p! p: H: ^8 I* A& J/ e& l
from pynput.mouse import Button,Controller# }0 p. C8 U* n& q
import cyberpi% u4 Y) h# l: l! `2 S* b
import time
- |9 Z+ q6 e7 h- c # s) o0 r( D7 [9 Q. R2 g9 ^
mouse = Controller()
$ P9 i" H- o1 z$ p7 p
; s' d$ m7 S2 @/ f. Fwhile True:! O- F/ Z; V: s
   if cyberpi.is_tiltback():9 @, M7 }) J- `6 ^6 q2 {
       mouse.move(-3, 0)
, U4 N5 b1 Y( X; _0 d$ i       print(mouse.position)
$ w2 z7 a; S$ m; \   if cyberpi.is_tiltforward():9 Q4 p  y6 S3 X' r& X; P( D
       mouse.move(3, 0)% m2 ^6 D- i+ a8 s! D" \
   if cyberpi.is_tiltleft():
# v8 L- g2 e5 r+ ?: B0 T+ G       mouse.move(0, -3)
7 d3 N5 d. b1 z: Y" b1 U   if cyberpi.is_tiltright():
4 \3 u# e# G4 P" }5 N- S3 [  x       mouse.move(0, 3)! s. O7 j0 `* x8 G1 f
   if cyberpi.controller.is_press("b"):* U3 a+ Z  g5 n" H% f
       mouse.press(Button.left)5 ?" j* I8 m$ Y  m; _! z
       mouse.release(Button.left)
& p5 _( _# U2 t6 U' F* s       mouse.press(Button.left); f  C/ I3 N% C0 d, z! r: ]
       mouse.release(Button.left)
% x) S6 r2 e' P% Y0 O   if cyberpi.controller.is_press("a"):# z4 a. S6 }5 W+ U  {# x$ d
       mouse.press(Button.right)- u3 m5 Z5 v. t  R* v
       mouse.release(Button.right)
$ }7 R) s; |2 D/ E) }% j    time.sleep(0.01)
+ M. r! w0 O; O+ o
* Q& K! ^/ [% z* @4 @/ _1 i( y  o, S1 B3 U2 o# }1 }
語音打字器

; ?. }' n6 y/ k3 \功能介紹:! L' Q+ S0 K6 p9 N5 O" }# t. g
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
  V3 D- P. R& w4 s( S: X1 C將語音辨識的結果通過pynput在文檔中打出來。
" |3 X. v/ }  X) x% C該程式目前只能支援英文。
( O- q9 L9 L! K* E6 W# L' J# ~4 Y
% k9 f% z0 q: c( }import cyberpi  b5 |5 E' ~. E" h3 q% Y
from pynput.keyboard import Key,Controller- f5 p1 V1 D+ V4 [
import time8 e+ |+ R2 V# T7 C; Z6 T

1 h9 u. w: m/ B" y5 \, I1 k5 X! Wkeyboard = Controller()  [* s# w' l8 s. P& V
cyberpi.console.clear()" S: r- g5 k  x7 E
cyberpi.led.on(0, 0, 0)
3 Z. r8 S7 J  S! \) B6 X; Acyberpi.set_recognition_url()
, O4 V$ o. C: G$ K" S3 j9 R3 \7 Jcyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
7 V! d8 j0 l& {4 E4 e. ~cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")  b* S0 W9 G& j* G$ b
while not cyberpi.wifi.is_connect():! W: F" J, h  e. Y* K
   pass
7 f: s) v1 _" l' l0 xcyberpi.led.on(0,0,255)
; }; u' ~$ A! s1 Z4 {% Jcyberpi.console.println("WIFI已連接")
. y; B* f  O! s& bcyberpi.console.println("--------------")
+ l" E) ~; {0 Y7 z, gcyberpi.console.println("按下A鍵開始語音辨識")
* x7 B" y0 M. _while True:/ z( k, y" ]. g
   if cyberpi.controller.is_press('a'):
0 G9 P, Q/ @4 W       keyboard.press(Key.space)- B& ]) A) h% Y/ @* h; W
       cyberpi.console.clear()
& v1 x1 x9 v3 h8 O. E       cyberpi.led.on(100, 0, 0)( u8 _0 L2 |, Q8 M' ^1 W6 j* e9 i
       cyberpi.console.println("開始語音辨識")* ]3 {$ w8 E! T
       cyberpi.audio.play("switch")
. k3 l: b, x5 v& V$ r       cyberpi.console.println("--------------"): m7 B, j3 S# q+ l! a& U5 ]4 A
       cyberpi.cloud.listen("english", 2)+ Q9 D1 b2 B3 B4 `. J/ F
       cyberpi.led.on(0, 0, 0)( F" H  h( c' F; {, b9 L4 C
       say = cyberpi.cloud.listen_result()
, l) f8 H: v1 d/ H! {4 n. V# P5 I  Y       cyberpi.console.println(say)
6 u1 f/ D8 N, b, Y. Q; `" d       cyberpi.console.println("--------------")9 `' j; d( |4 D% t
       for i in say:
$ R3 x# t+ z; \            if i == '':
% x; {# @0 K- `5 j0 @: [, ?                 keyboard.press(' ')
8 C; D: X5 `; V            else:; \, X- Z9 W# k5 t1 P! `
                keyboard.press(str(i))
. h2 e6 Z  K- s3 H+ b                time.sleep(0.03)
5 O) C' q/ j' W: d9 K2 e

! o6 s5 A4 l  Q# umatplotlib音量柱狀圖
  e$ w  Y' h4 v& ~) h
import cyberpi* {, ^) Z6 y4 u- S
import time& h7 f6 x& ]4 C3 I1 p) W
from matplotlib import pyplot as plt0 A. T/ _. x$ o# f* L5 e

7 F' j" d1 G: d4 l$ X# Dplt.rcParams['font.sans-serif'] =['Microsoft YaHei']
" |" M8 _0 c: ^6 Q4 I( N4 \6 }9 jplt.ion()
6 r) {" p+ F, S% c2 B# G
* P' ?; D7 Y6 v& V& N3 Q" E1 @7 _% Swhile True:
+ z$ S% _. f# ^3 ^- x- H8 T   loud = cyberpi.get_loudness()( g; k* e& A/ X8 [
   plt.clf()# Z$ S; ]1 U: w% t0 O' @- |+ K
   plt.xlabel("數據名稱")7 Y' `& U$ ~9 M& G# L
   plt.ylabel("音量讀值")
" M- B5 B+ K$ k+ G8 o   y_locator = plt.MultipleLocator(5)
4 f& w3 y! P3 `   ax=plt.gca()! s& y; c  [- g
   ax.yaxis.set_major_locator(y_locator)
/ P+ o6 f& ^0 c$ I3 a   plt.ylim(0,100)5 t% u, `$ X- Q  M1 E
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')9 `8 v. H* a8 M5 [/ k
   plt.title('童芯派聲音感測器讀值')8 s2 W% b( J& O% Y3 H( c
   plt.legend()0 K( E( ~' E$ p. P5 [2 N+ A9 o
   plt.show()
% p8 r! I9 [1 v) b" Z* k& o& l6 k    plt.pause(0.01)
# b9 w1 d: t: P( M+ c
3 X: n, E% H5 c! Z3 c6 N3 G) }# I+ J# \4 a- f
matplotlib 多圖表顯示0 j' b$ H. ?7 H% e4 A
, u# _& L2 C! _3 e5 {# S
from matplotlib import pyplot as plt
' M8 t, k# A  X: n- E; l# ^import time
9 C: B$ h2 p# s2 b) Vimport cyberpi
# O0 N7 n1 q  Y3 [! H' ~2 V9 l
# f  ^# O9 r" p" Y' J* `loud_list = []# o& G8 R; B) ^0 |: o
bri_list = []
9 [& u& _+ V1 Mplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體$ m7 ?: {2 I" d! a; a$ c1 R
plt.ion()! M) y% c+ u- X- m9 ~% |4 `
plt.figure(figsize=(10,10)). a- D9 `- ^0 K2 ~4 h
plt.figure(1)8 E# B  w) k2 _, V
x_locator = plt.MultipleLocator(5)& W( U4 ], N8 i. R
y_locator = plt.MultipleLocator(5)
( O* u! {- e; C+ swhile True:
; z" @# q3 G% v2 U; K   loud = cyberpi.get_loudness()8 J  q) _' F5 z5 H
   bri = cyberpi.get_bri()/ e4 O+ ]4 {& O
   loud_list.append(loud)
: c" n+ A+ y; m   bri_list.append(bri)
+ m$ l) _7 x8 o" V  V7 S% H   battery = cyberpi.get_battery()( c$ Z4 A4 J5 W3 L# z
   size = [battery, 100-battery]
/ M- o  X  ~+ s4 K   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']: w+ ], s. x: W1 N( t- G
   ax1 = plt.subplot(221)
3 K" Q) M; k  F0 @, `' q- C" {$ S: g   plt.title('光線折線圖')! T" O$ b' [* C6 v, ~
   ax1.plot(bri_list)2 o1 V1 X# B5 b6 m6 Q$ r
   ax2 = plt.subplot(222)3 H" N4 S1 e: j$ F- G( D, X0 o8 s
   plt.title('聲音柱狀圖'): j0 Y. L: b5 A5 ]- F
   ax2.xaxis.set_major_locator(x_locator)4 z* s  Q% `$ H$ M
   ax2.yaxis.set_major_locator(y_locator)
2 ]5 j- i) w. S; b   plt.ylim(0,100)/ l3 a. e* |- H9 i$ m
   ax2.bar('sound', loud)
0 D# N& T7 M% J   ax3 = plt.subplot(223)
" G- S! @) o! J9 P1 F   ax3.xaxis.set_major_locator(x_locator)5 A9 |4 _1 i$ s) C
   ax3.yaxis.set_major_locator(y_locator)* D) S" T" C. {' N
   plt.xlim(0,100)- ~0 Q3 w5 n7 g3 `0 e: [& i
   plt.ylim(0,100)
, d7 q3 _$ q( o# \+ X) Y   plt.title('聲音、音量散點圖')- }! Y- z7 a7 D% H. C
   ax3.scatter(loud_list,bri_list)$ n3 u# b/ ^( Q! W2 k% y
   ax4 = plt.subplot(224)
- f% e, o& l2 N- R/ ^* y3 p7 a   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})$ R  _4 h! y1 f* h5 t8 N, K" b
   plt.title('童芯派電量')
# Q% X0 ]2 s$ N! Q0 {& w   plt.pause(0.2)3 R" w  o/ _3 C+ ?( Z
   plt.clf()
# O+ o2 m6 H$ w0 D, r   if cyberpi.controller.is_press('a'):
" p: c& I) G! w  k* r1 \       break$ T: Z: x# ~  o. n: b* v
   if len(bri_list) > 500:7 K, }) h$ }) w
       bri_list = []" R9 p% h, G1 f; ^4 r# K
        loud_list = []) [2 x$ E3 D. @6 Z1 \) E! h3 ?

2 _0 h9 U# |; I1 B) r, h, i

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-29 14:57 , Processed in 0.025918 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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