圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8499|回復: 0

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

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

5 b" S/ Q% ~2 n- q# ^$ h1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。4 |7 [, w; n5 M

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

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

1 V$ v# K/ {3 @. G
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    ! f: r  w$ G  |/ R, ~* r
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)8 R5 N3 E; V, [+ D7 L3 B+ a
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。! |. t: G! t3 k( f' g- Q* j7 _$ I, }

2 E3 n$ X5 P' A  k
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟), H( ?8 h6 m8 V$ `$ [$ |
5 Y+ x" o" H- @0 D
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    % c- ]1 k# [8 j* s( v
0 a, l$ p3 L' `, Y7 o' e
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。) j  ?' \: [. k

4 F  R  r2 h9 J3 d+ r3.童芯派第三方編輯器程式設計準備
2 L7 Y7 i5 Z$ g- [
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    . s: S, F% r* s! e2 |: }, Z# r" U$ S
6 }0 H7 g4 g* _2 u/ K
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    % m" i8 y" n5 Q; k& e

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


# ~) `) ^0 R' |. Y4 _/ j
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    ) b" ?( U+ E5 H( G$ W

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


% t- l5 Y" f; u9 i# S+ S
查閱cyberpi API文檔見:童芯派API文檔
( n1 [7 l5 T, d
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。/ X! ]2 D" p0 i2 z8 K, d9 f

6 ]& c- _9 a( ~2 `7 A
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

0 j" R; `5 z; ]  d' |' |, W5.一些程式設計案例
' W% J6 ]% T2 N9 V童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
6 K: R$ C/ f' ]9 @4 }
功能介紹:2 g' Q6 @9 X8 C9 H" Y: y) ?6 G3 i0 ^" U
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
4 O1 |1 m. @& ?2 T: w9 r通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
: a. J. o2 t3 ?/ `" ^# X, y; J結合藍牙模組可以實現無線滑鼠的功能。& g) I' y$ o! }2 D* i2 l% |# C
; E( v! B3 H9 z
from pynput.mouse import Button,Controller
, }7 Y9 Q* R6 d/ Uimport cyberpi8 C" @5 @- `$ E
import time
) Z/ g0 G5 H! |* _) d8 N
) r6 ~/ B& |: k8 qmouse = Controller()
& y* y( [+ U6 r. i1 Z2 B% I) _
5 D( n  @' @0 rwhile True:
: _4 a; h- e: \  |   if cyberpi.is_tiltback():
) X' o) C3 l3 M       mouse.move(-3, 0)
$ p. F+ r  D  F* Z       print(mouse.position)
6 o, E6 q# c1 e7 T   if cyberpi.is_tiltforward():9 _" l! m' R- z
       mouse.move(3, 0)0 X( c2 f( l: T8 X9 w
   if cyberpi.is_tiltleft():
9 y9 K, T/ [/ k: L2 ~       mouse.move(0, -3)
5 t( e' p5 b" o+ l* P% G   if cyberpi.is_tiltright():4 J: Q3 m% N: ^" T* j
       mouse.move(0, 3)
5 g& S0 g5 ^3 Z& ?( K% W. C   if cyberpi.controller.is_press("b"):
4 ?* m; z4 Y' I- n0 }8 L       mouse.press(Button.left)
, d: M( C& B; m) L& _       mouse.release(Button.left)* t" F# p; c* Z# A" h
       mouse.press(Button.left)
- B9 Y4 E7 J2 W+ r/ t4 P7 [* X       mouse.release(Button.left)
  k! P' s9 N( B% Z& s5 d7 u! o   if cyberpi.controller.is_press("a"):
8 m) }2 @9 @; ^# @: A, L       mouse.press(Button.right)+ \0 H2 I, Z/ P
       mouse.release(Button.right)
& r& ^! G! c4 G) e, P' s% ?9 x  v    time.sleep(0.01)
& w( e  P' {* E% ]% a7 M6 w# `4 e: E$ {  o0 D1 y' c9 b$ L
- H' m) n7 C8 ^6 M
語音打字器

$ K! i1 s. U- e! u) d. v9 A功能介紹:/ p1 a) H6 I8 F
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
) u( F  q: d6 `+ a$ F! i將語音辨識的結果通過pynput在文檔中打出來。
& O* x! M# r/ O( a+ h6 Z該程式目前只能支援英文。
1 G8 Y( `: ^/ A; z( u: a' m- V+ J/ @: M8 x
import cyberpi( W' T0 S# V2 g- p" u0 o6 ~
from pynput.keyboard import Key,Controller
3 @( B  I  d+ ~( uimport time
* r7 e2 Z1 n. B" ~, E4 v: h
5 C9 a' X& x5 T, fkeyboard = Controller()1 [" Z% U% ~# g$ Q3 J
cyberpi.console.clear()% v7 T9 k  _6 K" F
cyberpi.led.on(0, 0, 0)
1 j" T) Y3 W5 u8 b1 @& ~! E# Wcyberpi.set_recognition_url()
9 P1 l8 |0 X# D0 B- D% x- e: H: Ucyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
% Y( Z. l8 A6 m2 t. T# Hcyberpi.wifi.connect("WIFI名稱", "WIFI密碼"). K! P2 }; E9 o( I- Z
while not cyberpi.wifi.is_connect():4 F8 t7 J$ v% Q1 \* [& t
   pass
# j* Y' j+ ?9 D7 ^. F! Q7 Acyberpi.led.on(0,0,255)
! V0 P3 ^  w" n- r0 X8 ~cyberpi.console.println("WIFI已連接")
# @5 o, i" f' }8 a* K4 e- Vcyberpi.console.println("--------------")6 }3 M* n" U/ M% S
cyberpi.console.println("按下A鍵開始語音辨識"); M! u* F' C# {# @3 s
while True:
$ H' v2 H" @# N8 X0 W   if cyberpi.controller.is_press('a'):* r/ I4 x# z. M
       keyboard.press(Key.space)7 `  i) l6 {5 T) e; Q
       cyberpi.console.clear()
+ U$ P/ y) N; j% o2 Z9 v6 f# K       cyberpi.led.on(100, 0, 0)
! p* m% N" B% r       cyberpi.console.println("開始語音辨識"), |: A4 P, d, X1 Y( @, k+ i- m- ]
       cyberpi.audio.play("switch")
* p/ i" O7 m& B) w6 n       cyberpi.console.println("--------------")
8 [7 T% v, n" K2 `6 Y       cyberpi.cloud.listen("english", 2)# _1 |# z' j0 p1 {
       cyberpi.led.on(0, 0, 0)% b/ }% X/ o% F+ Q5 j5 ?2 o0 w* J
       say = cyberpi.cloud.listen_result()
/ N6 F& R9 B8 o9 E+ E8 y       cyberpi.console.println(say)( a: G* Z" P: p" y& ~, `
       cyberpi.console.println("--------------")
/ T2 u6 @& q  _       for i in say:
# W4 ]4 l' @. j3 \8 Q2 h: T            if i == '':9 r- c& Z; C  K+ ?5 u8 Z
                 keyboard.press(' ')
% Q1 J" |8 _5 U            else:
- V) n7 h8 Y+ B/ k% @! F4 S                keyboard.press(str(i)): U* Q. G8 C% N9 |4 D* Y
                time.sleep(0.03)! S) D+ j* t/ o$ X  k: L4 ]

& Y% K7 N# o0 O' b' K3 Tmatplotlib音量柱狀圖

: B* j8 f0 s! W' T' \' `1 ^import cyberpi/ n, a& R. y5 d5 J, \  V  O' ?
import time
1 n! ^) U- ~$ @" d( Sfrom matplotlib import pyplot as plt# H: ]0 d! }, o( G& A
' S3 ~6 o8 ?( r( N$ V1 R! t) o7 n. Q
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']( P% N9 K2 e9 U5 t3 j8 n! R
plt.ion()0 |( q; y5 e% ~

% S% n: ?0 u+ K6 n7 y( e* Nwhile True:
* f0 m, |# s' c9 f0 h   loud = cyberpi.get_loudness()
" e, _- T$ T& f* ?+ W   plt.clf()5 t9 e, y8 F7 T5 u$ S
   plt.xlabel("數據名稱")
4 i+ ?' }1 X# W4 V   plt.ylabel("音量讀值"), D2 Z  f. o, t0 I+ d4 q+ J- o
   y_locator = plt.MultipleLocator(5)
6 y+ y7 ~1 x1 l( O/ p; c5 S2 H3 T- P   ax=plt.gca()
( C( b2 u/ Q. k+ l; s+ I   ax.yaxis.set_major_locator(y_locator)( f; X& H! l' f9 W  Y7 |8 U
   plt.ylim(0,100)
9 ^; n3 T1 Q2 q   plt.bar('音量', loud, align='center',label=f'溫度{loud}')0 g& |# [( a( `, Z
   plt.title('童芯派聲音感測器讀值')- x2 C( O$ q6 ]* `" H) u
   plt.legend()
2 I9 E# b, w. |( n! P   plt.show()
/ _* o$ G" x, c1 K9 o5 t    plt.pause(0.01)
; h5 y4 T* ^& a6 s* g4 o
* e' a. r2 V( `; L+ {7 P% `$ [# `9 s9 f
matplotlib 多圖表顯示
) L( p2 N, ^# G5 i% ~
/ _3 }: T: r1 k$ o. q
from matplotlib import pyplot as plt+ |) U0 q# `, [1 C# }
import time8 d* p+ R% h% J+ u( S, o
import cyberpi
+ h2 [  v7 s! o- p8 @ * D/ B, O# }! g" x9 a* K
loud_list = []
. O9 |/ D- m! a& j  f4 y( ^bri_list = []
" c, e3 A' b) R- E1 w9 Mplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體0 c! m, L* k0 w4 K
plt.ion()
% T+ J/ |" O. X, r) y+ Qplt.figure(figsize=(10,10))
! l3 Z) ]& o4 a, }. t: j$ B+ Hplt.figure(1)
6 T7 l- ]5 \$ K; X4 u2 l- ~" Cx_locator = plt.MultipleLocator(5)4 P5 `, c; z! {, z! S
y_locator = plt.MultipleLocator(5); y0 i  X7 {% @2 W( y: V0 b3 U$ }
while True:
- w+ O( z) g0 Z' U0 t) s   loud = cyberpi.get_loudness()% k1 o. ^" c. X* b$ r
   bri = cyberpi.get_bri()
* X) P9 m) B0 `* \  l$ G6 I% d   loud_list.append(loud)
) A2 Y4 ]- Z) W   bri_list.append(bri)2 k- l7 A) x. G/ r0 X2 u- b) M
   battery = cyberpi.get_battery()9 C! Q" z$ h( P3 N
   size = [battery, 100-battery]
* V& I8 _4 [% i   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']! ]* E7 A6 E" V7 m, J
   ax1 = plt.subplot(221)  N; V7 k- k  |8 P2 Y
   plt.title('光線折線圖')
+ O8 U' U" X6 m' y/ R  K   ax1.plot(bri_list)5 Q5 N: j# D4 A+ b) {) v% r! V1 I
   ax2 = plt.subplot(222)1 N( z3 O) J4 W, b! t+ K* j7 |  g
   plt.title('聲音柱狀圖')  P( \' i5 @8 W0 f- f
   ax2.xaxis.set_major_locator(x_locator)
; j+ ~) F  @+ E; r4 \   ax2.yaxis.set_major_locator(y_locator)* Y3 h9 B  r  i& @+ H' j
   plt.ylim(0,100)4 u/ |$ g8 c5 f  m) Y
   ax2.bar('sound', loud)
, |4 \, g/ N' U( C9 c  q   ax3 = plt.subplot(223). l$ y: o. Z* X% M5 p. [+ c
   ax3.xaxis.set_major_locator(x_locator)) u* S; A9 K, b* X7 X' [' ?
   ax3.yaxis.set_major_locator(y_locator)
# U6 Y/ e% H( q5 u7 s   plt.xlim(0,100). q% {+ B; B3 i6 ?2 D5 K2 ]
   plt.ylim(0,100)
% E+ r5 v1 ]1 i" d6 e   plt.title('聲音、音量散點圖')
4 M# v- Y+ o/ a6 W   ax3.scatter(loud_list,bri_list)
  J; K9 v$ h$ S! x7 x   ax4 = plt.subplot(224)3 G/ \1 Z; \1 C/ C9 N1 z0 b; t
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})3 }% x( H: _7 A2 B* ]& ?
   plt.title('童芯派電量')  s: G& W6 s# j" ~
   plt.pause(0.2)" e% g4 }$ m+ p: s3 v
   plt.clf()1 w9 p9 l2 J) d* }" U
   if cyberpi.controller.is_press('a'):. x6 p% j4 ?1 c# e: h- ^
       break  t+ a0 x, q1 ]/ O% F
   if len(bri_list) > 500:
3 `1 @: g# F+ @) J* s7 L5 t       bri_list = []
" N6 [2 L5 `' M. t6 U/ U/ [8 m        loud_list = []
5 o- W) q8 Z9 M( i3 I! o" U0 O
& }) F/ D0 h" a  z7 ?! A. a

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-2 09:34 , Processed in 0.022128 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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