圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8511|回復: 0

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

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

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

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


7 e1 K& _4 f" j' I9 d6 E  V
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    & Q$ i- }8 G! H: T/ o  L& F6 C& c
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)- Z: |) j. }8 f& |* k
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。; i3 l8 B7 I5 m* V& X; _( `

0 r6 k" u$ {2 ^( {/ N6 t) X
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)& ?; h5 @5 D5 l% c: C, J
" F7 ~1 L9 N5 Y# g: {- T2 m
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。+ a* r9 P2 p8 m, g. I0 o

5 l9 \! o+ C% \9 }4 G9 K
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。- Y( _0 C: K0 ]7 ?" w. r

% i$ g0 z# ]" k3.童芯派第三方編輯器程式設計準備
8 x$ H4 U! {4 P3 g7 h
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。, Q* z: X; b6 ^6 f1 y! A2 b8 i) i
: R; P9 @9 U9 Z/ g: X  \
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    5 O' R3 w9 z" q" v' ^  L2 \

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


0 Y7 e, p% a9 z' r# G1 {
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。* Y4 M) \+ d! l7 Y

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

: R- u  J* T" o# Z" k" t
查閱cyberpi API文檔見:童芯派API文檔

+ R$ ~* l' s1 {( ~6 o+ k
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    - ]: N; \9 f2 F7 }$ k' N

( o7 w. Y* ]3 D  o9 ?
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

: h# c# P* [) s5 O; A5.一些程式設計案例
( f% |( d8 `* F  L* ]) L& i. l  a童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

8 E* ?" }1 U0 {$ i功能介紹:# q$ q+ U% d5 Z' {6 N' [
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。- M) [# N) |' D
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。" G5 h( V+ k2 j8 n' o) Y. T* a
結合藍牙模組可以實現無線滑鼠的功能。
! i) P/ X/ ]% |" T6 ]9 y7 V' a% g' x, A
6 M+ N# Q( l( ~) S( Sfrom pynput.mouse import Button,Controller1 @# P/ M. y4 b6 H( U/ f
import cyberpi' a, L) p& o' g( c& y3 x2 \# Y
import time
, G1 Z8 a1 V- V6 r0 m: `
9 ^8 Z, t0 `# G8 qmouse = Controller()
# Q% ~* F! v5 W% R
2 i, N0 Z- I/ R+ ~  H9 R7 X5 f# u0 Hwhile True:
6 Q( i% Y1 t* f9 C   if cyberpi.is_tiltback():% ^( Z( ~% `1 \9 B& P9 i
       mouse.move(-3, 0)
. H: e3 }" G; R# r, v# M# \5 j       print(mouse.position)  L  R( B* I! K- g9 _' D5 T
   if cyberpi.is_tiltforward():2 M6 l5 x; v( t
       mouse.move(3, 0)
" ]; q1 E& F, b+ C# {) w# U3 @0 T   if cyberpi.is_tiltleft():
" ^" V# _& L$ {1 z6 {9 w; [       mouse.move(0, -3)) {6 i+ k1 \, f
   if cyberpi.is_tiltright():8 m  j& i8 u( h& S" I/ a2 u
       mouse.move(0, 3)
5 z. B1 H- |2 d" L   if cyberpi.controller.is_press("b"):# G0 j# f4 i$ c+ B9 \6 i
       mouse.press(Button.left)
; J" R. ~8 X6 j/ d' K5 T       mouse.release(Button.left)) d+ P5 m2 N" X9 }7 |2 _0 X' ~
       mouse.press(Button.left)1 h; ]5 u# V5 J) z+ ?
       mouse.release(Button.left)
* U, B9 K% p( q/ I8 d4 E/ F   if cyberpi.controller.is_press("a"):
4 N* Y# h+ N; A; k       mouse.press(Button.right)
: H1 c/ n3 F0 A* k; X3 _4 `1 s& }$ G7 S       mouse.release(Button.right)
. t/ ]- F4 G4 [: \, k    time.sleep(0.01)
( f* c1 R! Z2 c7 ?2 ^( s9 |9 w
5 P! ]" @) M# E- n: r  A3 t5 A( H/ U* x* }
語音打字器

% _- p+ ~. |1 }* X6 ~' E功能介紹:
9 k6 D& p, ^1 K, m' D8 {利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。/ G$ r3 x3 o4 E* ^* x7 i$ ~, _
將語音辨識的結果通過pynput在文檔中打出來。
- e, d7 m$ O* ]該程式目前只能支援英文。
$ y3 Q. R7 n& R2 G$ T# l1 y# h" Z  D2 ~
import cyberpi
$ |5 q7 c, w' S  h# vfrom pynput.keyboard import Key,Controller5 v& Q) D% I' L
import time/ j8 y( G1 i0 A; Z4 f) m

( m$ y- e1 g; ~9 e2 Tkeyboard = Controller()* E! r1 Z4 O6 N* N3 @: d
cyberpi.console.clear()
) n% w8 D0 ?$ E3 J; Z" [cyberpi.led.on(0, 0, 0)
1 W' y) N. J; j- ncyberpi.set_recognition_url()4 D: {9 G$ _4 N* G
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得- o# T/ ~) l1 C6 P. `
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
; M- w. c' n6 O1 W* T1 L( {; ~while not cyberpi.wifi.is_connect():* Q- F9 g  F% v' v
   pass+ Q: L4 e/ n! a
cyberpi.led.on(0,0,255)
' B+ B/ G' M3 E5 ]$ B( Tcyberpi.console.println("WIFI已連接")
% E+ R. ^7 q7 T; s2 e+ w' v1 ]cyberpi.console.println("--------------")
, g0 W% l9 f/ Q* _2 Ecyberpi.console.println("按下A鍵開始語音辨識")
  p+ H  }, u: J& {while True:
  x3 j- k3 p+ z  t   if cyberpi.controller.is_press('a'):
6 M4 p0 J* l5 H* Y# D9 }% t1 ~" r0 U       keyboard.press(Key.space)6 @3 M; H# ^6 l2 x3 T+ J
       cyberpi.console.clear()
9 e& `0 l9 h" H" b+ c% N2 F* J$ w       cyberpi.led.on(100, 0, 0)
3 p# ^2 ~3 b; y" o# ^0 Z! h       cyberpi.console.println("開始語音辨識")* \! Y; n4 O/ {5 R" V- V; ?3 |$ s
       cyberpi.audio.play("switch")
2 n# R, M. `0 N8 h+ Z9 _' x       cyberpi.console.println("--------------")
; _( n: {% e. V, l3 _" v! a       cyberpi.cloud.listen("english", 2)
+ {; K% `6 t1 p! s$ y" D       cyberpi.led.on(0, 0, 0)- @: P, |0 N' o
       say = cyberpi.cloud.listen_result()
: e4 w$ `+ a  U7 R       cyberpi.console.println(say)3 X- Z/ W- X; }! ?* i
       cyberpi.console.println("--------------")
. I5 e/ U# M1 A' W- I! v3 X       for i in say:
# b( {; }8 p5 A            if i == '':
: ]0 t: P: V6 m  k4 P' p) P9 Q8 h) J: _                 keyboard.press(' ')2 `4 q" u" V+ }6 W8 v) M) M
            else:
0 a% |4 Y2 t% R, _- \6 v- l, m                keyboard.press(str(i))/ u1 d3 q. P# K$ P2 x
                time.sleep(0.03)
; K! k; s" Q9 r" z6 j
: _3 w( y8 L: X# r8 M% r* v$ X) J0 s/ \
matplotlib音量柱狀圖
/ ?! e; G) u. ~  F; m/ C
import cyberpi) Y; P& m6 n2 e' R- A' E9 c# s* C
import time
" [3 T- S* F5 y0 y% {+ X! ifrom matplotlib import pyplot as plt$ k( k4 b' B8 t; i  v7 d, S( @8 }
8 y" }+ J, Z9 {& p2 P, L
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']( H! [2 c9 d! W7 |. a3 ]2 B; E
plt.ion()
5 g9 j% a+ c: C6 R  ^( e1 P. \
) s8 P, h: l$ U- r  Qwhile True:
* ^' n% ]% S, [8 f( K7 Q! p   loud = cyberpi.get_loudness()
8 _3 c% g( ~& d( Q   plt.clf()
, |/ n; C% d3 K/ C7 X   plt.xlabel("數據名稱")9 _' `) Z) P; I
   plt.ylabel("音量讀值")
% @/ K- n5 z; c0 F0 f2 w! ^  o( g   y_locator = plt.MultipleLocator(5)
+ g0 `5 j! J! r   ax=plt.gca()
, H* D0 I8 u$ [) O) ^# y   ax.yaxis.set_major_locator(y_locator)- f7 ?) f$ W" p6 [# E+ n4 }
   plt.ylim(0,100)* L( e2 E) H6 b( }% }
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')# n8 k5 f* d) j) T7 O
   plt.title('童芯派聲音感測器讀值')
7 n/ X9 ?" i6 `% w, s4 W& F: Q   plt.legend()
, t6 U4 X3 g" E4 y3 F   plt.show()
0 T" ^! }$ n' Q8 L& G3 f  I: z, Z    plt.pause(0.01)
& f1 r8 j& F. Q9 _, l7 s
% W  t. K5 _6 {- q- c8 O' x$ Z9 V$ O  b. l9 t; q2 n, k! c' R
matplotlib 多圖表顯示/ @- D; |+ K! |/ `

# t7 x. A$ d0 s: h/ Sfrom matplotlib import pyplot as plt% r/ L" i: _  F# g
import time8 U5 K" S7 a3 D3 z
import cyberpi' j8 L2 b9 D3 g. O, w3 q
$ P* J) s' |8 Y8 U$ g8 ^
loud_list = []
0 G) j9 Z# ?+ d) r6 o5 fbri_list = []4 t; ]1 p, x8 I  A/ T5 q; x* v
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體/ _* H, k. r: s0 @* p
plt.ion()5 L$ f0 v- Y5 M8 N% q
plt.figure(figsize=(10,10))
# t) x3 Y. N+ I' a& z! X0 pplt.figure(1)
- P* F) J4 U. \! x  xx_locator = plt.MultipleLocator(5)! @" i3 \, d( t5 H
y_locator = plt.MultipleLocator(5)
1 G9 I9 j$ |- ^# K- u# Ewhile True:
( h% K2 x/ ?7 f! ?+ q   loud = cyberpi.get_loudness()
1 g# q9 X  B# J1 U( r/ N6 o7 o   bri = cyberpi.get_bri()
0 c$ p$ W$ Q( W+ ]0 c, P- R* y5 C   loud_list.append(loud)  z* }  j2 V- S. D; N8 |
   bri_list.append(bri)
  w# {6 C& `: B   battery = cyberpi.get_battery()
1 s/ w7 b* s" i; R' l6 }4 `   size = [battery, 100-battery]
) p- B, k0 B8 O1 y. ^( \! S   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']4 L$ E0 R; h4 e3 ?  d4 G2 x
   ax1 = plt.subplot(221)" I+ O' |4 ]& n: r
   plt.title('光線折線圖')! F6 @; |8 Q3 X! W2 o$ s# s
   ax1.plot(bri_list)% B4 `4 b0 }) v: D% m2 N
   ax2 = plt.subplot(222)4 T% S  q% F* i+ T2 B
   plt.title('聲音柱狀圖')
8 {! u3 Y4 j, L4 T3 q, ~$ g   ax2.xaxis.set_major_locator(x_locator)
1 z9 Q- G# P4 m' J& z3 @   ax2.yaxis.set_major_locator(y_locator)7 R2 C5 Q3 c& Q" e+ h  q6 E
   plt.ylim(0,100)
+ [! J! N9 {# h# O& D   ax2.bar('sound', loud)
0 S0 k" `! c6 X  x   ax3 = plt.subplot(223)
2 u; ?9 P! A' E5 V' y, f# H   ax3.xaxis.set_major_locator(x_locator)
  g; o: F* ?9 u  S   ax3.yaxis.set_major_locator(y_locator)3 x& c/ d9 q9 C- t
   plt.xlim(0,100). ]$ @9 X; p3 c* I% M. p: s* [  Z
   plt.ylim(0,100)+ r, m4 `. b& h; u: E- F
   plt.title('聲音、音量散點圖')
, P8 ~" ]' p. k& S4 [1 L   ax3.scatter(loud_list,bri_list)% u$ o* I3 C5 [! ^. R! v: I/ L
   ax4 = plt.subplot(224)
3 S( w/ }& S8 q- ?   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})7 P* d7 c5 Z2 i3 J$ B1 c, u. A  A
   plt.title('童芯派電量')# Z% n. m. _) `/ Q1 ?
   plt.pause(0.2)
7 y, r; x' r1 {6 P9 L# e   plt.clf()
6 n5 E3 x; c2 w. @9 j  q, X; n   if cyberpi.controller.is_press('a'):
( _, e1 |" q3 L/ F- R/ b0 e       break
( g1 A7 x7 [7 u4 Q- A% u% y; z& C   if len(bri_list) > 500:
$ O) ]# z9 Z4 s       bri_list = []* G; T' Q3 j3 M; _# P
        loud_list = []
$ C( P* v6 E6 |: u$ ]
  z0 P3 @5 g- e! L

本帖子中包含更多資源

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

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

本版積分規則

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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