圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8488|回復: 0

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

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

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

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

, d! Y" ~7 v+ U/ b
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。% j( o1 ~, h3 W: D
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)' T: m+ h3 c$ F& m1 U
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。8 M3 e; z1 A) i: V; C7 ?

3 G9 \% F6 w% k  \9 P( q/ E
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)( l, B8 O2 _* ^

7 j) w$ }% g. s& v& M7 ^. q5 g
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。- m$ v  o$ `+ h: j- A

- ^1 O& n7 J, ^5 v3 D, K' A' r3 U. K
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。! O* {* {! \# U

" K( n) W& A; q6 y7 ~  n: a3.童芯派第三方編輯器程式設計準備5 y+ x% G: b+ J  h& v8 N; r3 |
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。$ M! W" T( u. U# f4 H, @& B

2 {! ^$ w. M. l7 V9 w
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    3 y! u2 w+ t" f* u+ S2 L

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


" s+ T, F+ M0 j8 V
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    5 k2 V  u, i1 Q/ g; D! T; h6 d/ W

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


# v, }5 h- h. h( M  A6 w% s
查閱cyberpi API文檔見:童芯派API文檔
4 H* D5 x7 s% m1 w! _% w9 R/ P: B
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。& B+ e. A* V) N! v

6 ]; m) W' \5 z" d& y- t
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
7 Y6 F8 v' z+ X( L% L1 w
5.一些程式設計案例; s5 h4 L' I- e& D) L" B% ^
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
+ Q0 Z" p0 I% |; ~
功能介紹:: l0 [5 u2 b( w# a, F
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。+ ~- ^1 t' W, R& k, M; Q
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
2 e8 }+ g2 O0 O7 j7 P結合藍牙模組可以實現無線滑鼠的功能。( N$ Z/ m6 ~$ m! M; Q: N4 c

) E, F+ X8 O: R% k9 H  l" A+ _3 }from pynput.mouse import Button,Controller  F7 l  K) l) l
import cyberpi
( R& V! g6 p1 }  K0 h4 R# F! Cimport time% |* q, \( n5 h8 ]2 D' X' f
5 [" Z: s  Q6 P5 H7 F4 J
mouse = Controller()
& Y+ i+ k; |, e4 r3 |8 Y
8 ?) P# ?1 e- e0 X/ Z6 m  C, {1 P9 hwhile True:( J# f' L  h( x
   if cyberpi.is_tiltback():
: S' a% q5 B: j$ D3 J( s; n       mouse.move(-3, 0)4 ?" K: O. o" D. g3 U' O  Z1 P
       print(mouse.position)
1 N& K) l! ?9 ?# _6 V, L6 y7 Y   if cyberpi.is_tiltforward():
: n% t5 D& ~" ?& C# |       mouse.move(3, 0)  o7 I: R* D+ ^# J: x6 u
   if cyberpi.is_tiltleft():
& v6 R+ v% v- Y: ~$ \# u" u2 H       mouse.move(0, -3)
$ g* u- |' L2 p$ U/ k$ {   if cyberpi.is_tiltright():& E# T0 E, e8 ~/ P4 w; `
       mouse.move(0, 3)
8 F5 m1 x7 P  a) ?/ I( ?( N   if cyberpi.controller.is_press("b"):. H% u$ j6 l% @; i, ?4 @0 o
       mouse.press(Button.left)
! J3 w  Y3 n6 ?       mouse.release(Button.left)2 R+ g' y2 g& v$ J, X/ O
       mouse.press(Button.left)
4 E4 Q6 {( b- Z% H+ L3 o7 F- m       mouse.release(Button.left)3 N+ m5 W- ^% O" d# i% Q2 Y
   if cyberpi.controller.is_press("a"):
, q. A6 d5 }) U& `       mouse.press(Button.right)
( p+ l/ g1 X, Y6 F$ i9 i7 G8 r       mouse.release(Button.right)* m; O. }9 x4 v2 b% @7 A3 T. _
    time.sleep(0.01)1 K( \5 d( f- a) p- g& B* P* ]& Z

' h/ x* q4 \1 U! ]' y! e2 B% t
語音打字器
! b; _% `6 J2 |% l. Z
功能介紹:
# @7 y; X& p% M6 f# z1 S利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
! \7 J+ {0 M/ e# v2 o將語音辨識的結果通過pynput在文檔中打出來。
- q# Y: U% {9 Y3 `/ c$ X該程式目前只能支援英文。' z- S( H( I7 e

* a, t& Y  M) e; b  r- p  Z  w) Dimport cyberpi5 L/ f# Q5 U. T2 |) A
from pynput.keyboard import Key,Controller
/ L; A8 j: ?: K; ]import time
- O0 v9 ^& U. v/ I3 E2 l
% D3 H* A: i" @+ N" Q2 i( Ukeyboard = Controller()+ V# v" B4 P8 g. A8 Y' H) n
cyberpi.console.clear()6 a' ]- s. O2 Z
cyberpi.led.on(0, 0, 0)
5 z+ N( p4 h! i7 gcyberpi.set_recognition_url()0 x$ Y7 m2 o6 G/ O
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
* m. L7 g4 n: f3 H; q( x; \6 gcyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
9 \2 m. g, F% }4 t5 mwhile not cyberpi.wifi.is_connect():
7 @# u/ k6 Q7 M5 K* F7 K$ ?* }0 ~1 M   pass
! z2 J3 E, ]6 E) s9 t9 @/ jcyberpi.led.on(0,0,255)
& t4 d$ u. s8 u- \+ E* Hcyberpi.console.println("WIFI已連接")$ k. U" ^4 T5 T" o+ c
cyberpi.console.println("--------------")
$ O8 I- c/ o9 j# d4 T3 z2 Vcyberpi.console.println("按下A鍵開始語音辨識")
# @" e. R, v: t* y# e1 @: Pwhile True:2 A' [9 i7 e7 h) ?$ O. ~
   if cyberpi.controller.is_press('a'):4 D4 ?! Z+ T* }0 R# Z( v) N- ]* e
       keyboard.press(Key.space)$ i+ U' M) c+ g, S
       cyberpi.console.clear()3 z/ O1 Q7 M% H8 `7 {/ S! ~
       cyberpi.led.on(100, 0, 0)
; l! I* M% W2 d) T8 T9 y+ x       cyberpi.console.println("開始語音辨識")
: l. W3 r; h0 I0 c       cyberpi.audio.play("switch")1 b6 Z5 Q0 A5 A% Q& d7 G
       cyberpi.console.println("--------------")
4 R# h5 N# m* v0 S9 j       cyberpi.cloud.listen("english", 2)' l" a. R# p/ R2 Y% _7 k5 N8 l
       cyberpi.led.on(0, 0, 0)
- t+ J, o1 {9 {  k; t' f! \       say = cyberpi.cloud.listen_result()% |! `5 b. E( \8 S
       cyberpi.console.println(say)6 l4 x) O5 D; E
       cyberpi.console.println("--------------")  G7 x% S1 {* {0 o
       for i in say:
1 ~8 a" z9 T# n1 y* J. _9 M8 B' V            if i == '':
1 w3 ^# i& {$ |                 keyboard.press(' '), E0 j! A. S/ b* p, i+ }
            else:
2 h) ~: J% e* o$ g                keyboard.press(str(i))
( y0 T; j: A& B' T" X                time.sleep(0.03)
" I( @8 z4 L/ h
5 {+ Q3 P# I; v5 B* o. s
matplotlib音量柱狀圖

# ?) p! H1 c& Q( Y" X5 a4 rimport cyberpi
5 }. c' n, W$ j5 D+ y: mimport time" G! X# v4 E' ?/ E
from matplotlib import pyplot as plt& v7 z, Z6 p- _. ^( j8 {8 V6 B

1 t1 s9 `7 B: L( g6 M* c# j  fplt.rcParams['font.sans-serif'] =['Microsoft YaHei']
( A1 v+ s7 J" R) j+ e7 bplt.ion()6 ~4 c0 ^9 Z6 W5 Q* x

" }0 U+ z- ?% i/ O& Z# b( w" H+ Hwhile True:5 k0 @% y) \% y4 Q
   loud = cyberpi.get_loudness()
. \( z$ d6 O& r6 n6 E   plt.clf()9 g* A5 g; F' K2 G/ E. }  i
   plt.xlabel("數據名稱")5 M: c* V6 W- N: j9 j. L
   plt.ylabel("音量讀值")
1 K0 n4 ?& }0 \5 }* f( w4 a   y_locator = plt.MultipleLocator(5)& r: H# x1 G# V8 B6 O% j% c8 |8 Q
   ax=plt.gca()
2 s% o4 y4 l* _: j   ax.yaxis.set_major_locator(y_locator)* l4 W3 X! V0 t/ _' E/ ]7 f) Q
   plt.ylim(0,100), l. a8 ^. @0 P- A$ m/ x' w1 w- N
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')+ f7 t; N/ |, c* j) f
   plt.title('童芯派聲音感測器讀值')8 G" H! S8 |( J, A2 S: J
   plt.legend()9 ^2 W! _4 _1 a1 C) u, ~
   plt.show()
1 ]6 S* i. U0 L    plt.pause(0.01)
4 S; j0 h6 q, w6 K% z& m8 c! v2 |: n1 X) {. H6 ?- l/ s1 ?  X* r" o, A! Y
: |7 `7 V% }+ D6 |7 ]4 y
matplotlib 多圖表顯示0 I. s8 c5 R( `$ N0 D
" D8 {/ D& T) b$ C2 I7 R
from matplotlib import pyplot as plt
$ A1 q- y3 n& e* S' eimport time
+ \* Q- _7 Z9 d) w9 _import cyberpi. ?& ~8 H' u# D/ A  v# b
- _/ u0 [6 j$ \9 i; @1 U, e/ M( Q5 P" c
loud_list = []) V6 s$ v* R. q- r- }) o
bri_list = []
- }) b& F+ b" V* n3 b' X3 kplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
% C. P4 |4 B4 L4 ]. |9 J( l) r; Mplt.ion()1 V4 w, r/ Y3 x4 i! V. G$ b( [
plt.figure(figsize=(10,10))" Y( s. v& t4 K# r9 l
plt.figure(1)0 S0 i' H( @* h6 g7 \* B$ D
x_locator = plt.MultipleLocator(5)  x4 N6 K4 Y7 S1 ?" `% x
y_locator = plt.MultipleLocator(5); a! B$ q6 s9 H  C. q7 K$ V% W
while True:
  q' r  C2 f8 `, K! J   loud = cyberpi.get_loudness()
0 \0 c$ U  n9 A( i' h- s   bri = cyberpi.get_bri()
2 U  N' ?9 M9 f& U: m6 j" F   loud_list.append(loud)  f4 c# ~6 B- G7 R
   bri_list.append(bri)2 f' C, ]  A; g; N! m" r7 I
   battery = cyberpi.get_battery()
0 w/ ]" v) b$ o( L! X   size = [battery, 100-battery]1 p3 I1 j5 M4 {  c. \
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
3 _% A0 o( S. {: c9 l   ax1 = plt.subplot(221)
) n) p9 S9 Z; {0 L1 f   plt.title('光線折線圖')
8 b/ f7 F% ]7 [- c% U7 r9 A   ax1.plot(bri_list)
( O4 j! o$ W1 W+ [3 c   ax2 = plt.subplot(222)4 L( g' q/ F/ @1 W( L( X; V1 i
   plt.title('聲音柱狀圖')
+ |' A+ d! P2 x. [! h% {3 f+ D+ ?   ax2.xaxis.set_major_locator(x_locator)
2 W0 M! W9 C) ?8 }# G   ax2.yaxis.set_major_locator(y_locator)
/ i& q1 D, H! E1 w+ `4 H   plt.ylim(0,100)
3 _) s. t6 U2 L5 b! {( L   ax2.bar('sound', loud)1 G( |5 M/ ~7 {$ n
   ax3 = plt.subplot(223)
8 U5 e5 k* Z/ h# R% Y   ax3.xaxis.set_major_locator(x_locator)
, u/ A) D! g* x# E/ ?, k* @   ax3.yaxis.set_major_locator(y_locator)' \" s2 w0 m) O8 Z# n5 }" h+ L# X: Q9 Q
   plt.xlim(0,100)& t  \/ j( _: v8 I% h0 E
   plt.ylim(0,100)9 H. _" S5 a& J1 |
   plt.title('聲音、音量散點圖')" r: S: w. c( |; B: Q7 Z
   ax3.scatter(loud_list,bri_list)
" N) [8 S/ m- b5 A: }- J8 s8 z   ax4 = plt.subplot(224)+ S" S! G0 ?  s/ ^' X( _$ L
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
; l9 y: ]2 x4 b( B   plt.title('童芯派電量')
2 t: {' H% X, P8 J( H. I   plt.pause(0.2)1 V0 u3 G; t) j7 q5 }
   plt.clf()
& {8 q# S" g5 O& q. m0 K   if cyberpi.controller.is_press('a'):# v8 M( |- _( y% H/ }1 R9 T
       break
7 o) x" w; b) U6 s2 d   if len(bri_list) > 500:: e* l! K: I  ^
       bri_list = []
1 |  v; H, W! `- A8 a6 m        loud_list = []
% y  w! A$ }7 Z2 ~: q9 r) T! F5 I$ d5 c5 Q0 P/ j5 O6 k

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-1 06:43 , Processed in 0.026466 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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