圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 7543|回復: 0

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

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

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

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


& A" Q! \% W7 j# x7 u( F
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。& i/ @* D, k' C
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    . m; U1 u+ Y  K
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    1 G0 V! X4 U0 q  T% r7 W

1 u' N2 {) \$ ^& k5 p. S
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    * }  {" `% W8 ^  H( A
# ^3 H9 c7 S/ P! x
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    / `; e; m2 h% W1 f8 H. {( g: U) D
8 w6 r$ I# A8 G& x- N! u" V
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    ( D* w8 |8 g; T; b7 |2 I% f7 ^3 K
' f. j) k  q" ^3 s' Q( b
3.童芯派第三方編輯器程式設計準備
, }5 O5 }) C3 G4 w
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    , \  Z) M7 ^+ H: u
! k) k$ j7 s: V: {
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    6 O7 z. ~3 \1 Q

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


  l, K3 C8 P# U- d/ L2 U# x) x2 i
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。7 }7 S( W7 k/ n; U1 j5 C4 j

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


0 h1 |0 v6 p9 o: \$ r4 }# O; k- q+ `
查閱cyberpi API文檔見:童芯派API文檔
' x: n7 b) V" U( A/ B
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    % T  _  P, u7 S  U6 X
+ E! z( n9 E* L
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

7 i, k$ E( e+ r4 F5.一些程式設計案例4 z7 K% z. u" D. M  U6 E! Z
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
& m9 N2 l& ~% H4 Q
功能介紹:6 W1 J# ?7 @& h+ z
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。% p/ e9 q7 D8 B) H/ Q/ f! b
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。  x8 U" \* s; l) u
結合藍牙模組可以實現無線滑鼠的功能。! P. R8 x, A2 C) X! ^0 [

* x% f' k1 C# K* Vfrom pynput.mouse import Button,Controller' u3 r4 k* k) a
import cyberpi
4 S6 o0 b9 u" w# V0 qimport time" ?  Z9 k1 Q* y0 @$ F  `

3 Y4 ^. R, f2 z& g+ a6 {5 `mouse = Controller()
! E; {1 E9 _8 l9 i2 s4 O
5 M/ ?( E$ P/ i" l% S3 c! g/ }while True:) u6 m5 @/ a! F0 f1 g: F& F
   if cyberpi.is_tiltback():& J8 }# q! O+ e1 Z+ P
       mouse.move(-3, 0)' E3 P" `0 m* }" s, a
       print(mouse.position)# \6 Q  U0 }1 m4 {: g% e
   if cyberpi.is_tiltforward():1 B8 l) x/ H. R3 A! n8 F6 F/ c
       mouse.move(3, 0)
- x& w8 @6 |, ]6 E& z7 w) J   if cyberpi.is_tiltleft():  [( X. f1 ~  P
       mouse.move(0, -3)
" d$ l: z" R; P! {. D' J   if cyberpi.is_tiltright():- O, A' B/ P4 L7 n
       mouse.move(0, 3)
+ Q8 D# a! Q* q7 b2 P" ^/ z# D   if cyberpi.controller.is_press("b"):
) O0 w; M: q& }1 @1 X: u' a       mouse.press(Button.left)+ l3 Y5 b2 K& S, m( u
       mouse.release(Button.left)
( \( _! Z" ]9 S2 z( }# [6 e% c) t/ Q       mouse.press(Button.left)
3 H9 S: l' |) p1 b8 }2 T       mouse.release(Button.left)
2 Y6 t% k5 j* s0 [% w) @9 n, P0 W   if cyberpi.controller.is_press("a"):
8 c6 ]1 R5 _6 R3 O) }0 P' J) ?       mouse.press(Button.right)- _1 ^7 m' T% N' s% I
       mouse.release(Button.right)& f% H; R- C  t  T* s0 j' a
    time.sleep(0.01)
6 I5 F' o5 l, x; s/ ~
7 b* m* O5 }! V( s1 P" y1 u: C# Y  f" b7 r
語音打字器
, U& n  E  u$ A, _% o7 b3 o3 i
功能介紹:4 j7 [2 S$ T1 S3 ^7 @: X2 U
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
: A9 q9 h, A. g將語音辨識的結果通過pynput在文檔中打出來。( \; n- z# \, ^7 y  _2 }
該程式目前只能支援英文。/ @2 r  F( B; n( ?- p/ C" r
# m; d! }. m* v# }; `9 C
import cyberpi
% ^& r4 H* T& @: ^2 n. G, _" w& @from pynput.keyboard import Key,Controller" k/ j6 a  u  G3 ^5 t
import time
. Y! w3 Z3 N" i! L3 s- c ( s$ N5 d- T2 E/ f8 R# [  |5 ]
keyboard = Controller()6 `& D) v# I& }. \' a& o5 r
cyberpi.console.clear()
% f" u3 M3 ~/ |' D2 p* @cyberpi.led.on(0, 0, 0)
# f3 m$ H! F% }8 n# Z9 J; t/ N* hcyberpi.set_recognition_url()
, g' `+ ~  r) P& a# Z9 i  g- _# Hcyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得5 ?( Y; z* @  Q0 t: g$ H3 {
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")* C' _6 T3 X# y# E" K
while not cyberpi.wifi.is_connect():: j) g* z% n# N/ K  [
   pass
: F/ e# o  W! j6 F. P4 gcyberpi.led.on(0,0,255)) q  r# j. j6 N6 ?
cyberpi.console.println("WIFI已連接")
# U" h0 }3 Y# d. `. U4 vcyberpi.console.println("--------------"); P! _8 W4 @  Z8 C5 Z3 R  e
cyberpi.console.println("按下A鍵開始語音辨識")
5 f9 D, O5 V8 F' S% Uwhile True:% j( O. s' F4 _* E# p: C- s
   if cyberpi.controller.is_press('a'):& v" \1 J: H% t* ?6 l% ]
       keyboard.press(Key.space)3 o0 \* N7 k  K6 g; F
       cyberpi.console.clear(): p3 G* G9 E( U0 o. g1 L7 i* s
       cyberpi.led.on(100, 0, 0)
1 {5 e9 ~6 Y0 ^       cyberpi.console.println("開始語音辨識")$ i* i% y2 S. H2 M& W( U3 @' {
       cyberpi.audio.play("switch")
7 R! C1 ^; G( x3 J6 r! i       cyberpi.console.println("--------------")1 u/ @5 [' M' g: N: r& s
       cyberpi.cloud.listen("english", 2)! y' r1 [* a7 W7 A: s
       cyberpi.led.on(0, 0, 0)
  E, j" c# k. r       say = cyberpi.cloud.listen_result()
! N: _& l' i3 ?- o% M# n+ K& a0 y       cyberpi.console.println(say)* H( q, w4 g# Y9 ^' R) {
       cyberpi.console.println("--------------")
+ A: G  e5 ?0 ~( u: _       for i in say:
8 v) u" R5 H# u; P' {            if i == '':( z  [% x% [; X% j( f2 I: {
                 keyboard.press(' ')
$ s  v; I/ w- J1 ?9 k            else:
! M. Q8 p5 z( q- \' b                keyboard.press(str(i))9 C7 r+ _% b! L/ N
                time.sleep(0.03)
2 U' n" P1 W& U% c) f& C9 N7 o

0 H8 S' j* o( @9 s4 T3 [% amatplotlib音量柱狀圖

/ T5 ]) K! h- b4 ]  ~, [; |2 simport cyberpi
5 m( y# M4 i6 ?4 U9 M4 Q* \import time% X3 q) Q9 ~; B
from matplotlib import pyplot as plt! T; k! ]+ _) Z
: \# N4 z' @( |1 }' }
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']  U3 u3 a  n) H: z
plt.ion()
$ }. B" a- c9 E  f- S' y- \
8 k  U5 o. v/ B' S; s6 B& Y1 i% Dwhile True:) `1 R: O$ M% ?" V' {
   loud = cyberpi.get_loudness()
( R$ s. ^5 a9 a" H, j* J% h   plt.clf()& _7 h- B! b# ^" c; y5 Z1 K+ n
   plt.xlabel("數據名稱")( t. S( `9 p  p& N( F; `$ J8 i
   plt.ylabel("音量讀值")4 o. q! A; s# _2 {7 j) N) A
   y_locator = plt.MultipleLocator(5)
: P) x+ w( L2 E3 f* k! `, k   ax=plt.gca()
8 F2 |5 q3 }* |  c9 L7 d1 U# O2 J% F( F   ax.yaxis.set_major_locator(y_locator)% `2 `2 R/ C6 ~8 J) t6 W
   plt.ylim(0,100), V0 |+ X& R+ W! {2 ?: ~* Q  n) D
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')! N7 C0 v( M  R2 J7 [" y0 v  m
   plt.title('童芯派聲音感測器讀值')
$ \0 h* X4 t& q% T8 ?( N   plt.legend()
4 ]% L% x; p4 T- a+ N8 H9 j   plt.show(); V$ X3 p& H7 K; o
    plt.pause(0.01): o& R: B# l6 X: N& @" o1 J
& q7 J. m! p0 t) P  ], L6 Q" m$ M! D

" {" i2 Y0 I# \- V; Amatplotlib 多圖表顯示
6 u; d7 ]2 K" {  W2 Y

% q- K1 `% x! s2 k* X' j/ a+ b% Efrom matplotlib import pyplot as plt6 L8 W8 N- h" }; x. w
import time
0 W8 P7 |' g; s: B, K7 B8 R& [import cyberpi% Z' I- h* @* L* F: Y( s' R
# o( I2 [9 K! s+ D4 t1 e
loud_list = []
8 d  W3 b. m; @- T0 K0 |4 h% Ibri_list = []
$ I( h7 ]9 |) X  C1 G6 _* Nplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體/ K, h( J% k$ M* T, ]
plt.ion(); ^6 M" ~+ q% R5 H/ C% o7 T) B6 o
plt.figure(figsize=(10,10))' [: Y6 t( S/ v: Z7 B5 Q
plt.figure(1)5 m8 @, Y3 k+ q3 e, L% K0 G9 l3 ^
x_locator = plt.MultipleLocator(5)
6 U5 S) P8 E/ b7 t+ g0 ly_locator = plt.MultipleLocator(5)
0 {4 m. o6 I) ?5 S' Gwhile True:
& Q/ m8 w8 q( M/ c: X& V   loud = cyberpi.get_loudness(): O9 U7 m' N9 K, M' [( G: W7 ~* J
   bri = cyberpi.get_bri()# q; |5 ^& X6 n1 ?
   loud_list.append(loud)* F. T& ~& p8 u' w$ V0 d, Z
   bri_list.append(bri)
% u4 x4 `  z0 g, ]8 ^   battery = cyberpi.get_battery()
+ e( r' n/ J* q% _; a   size = [battery, 100-battery]/ ]  L1 c1 V6 W
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']  h+ p! I$ t" ]% w' B; D% E$ X& W
   ax1 = plt.subplot(221)& Z9 I/ H" V1 a7 \2 S  k
   plt.title('光線折線圖')
' H/ ^6 Z0 \  m6 X0 f5 x4 ]   ax1.plot(bri_list)
+ g+ g  t  I* v% @   ax2 = plt.subplot(222)6 Z$ t4 Z& B& }( {
   plt.title('聲音柱狀圖')
! Y; ?) J+ k3 e6 G# Y   ax2.xaxis.set_major_locator(x_locator)
7 T! m# L9 h$ @8 r( L  v7 ~5 c   ax2.yaxis.set_major_locator(y_locator)
2 D- x: u) Q% L   plt.ylim(0,100)1 w9 U4 r! A3 \/ v, w
   ax2.bar('sound', loud)
; k+ t- w6 b8 e' C) Q/ m8 W   ax3 = plt.subplot(223)
( |. }' z' s1 g2 h) S! O   ax3.xaxis.set_major_locator(x_locator): L5 K/ E1 d  R7 N  E2 u
   ax3.yaxis.set_major_locator(y_locator); w0 T) L6 v9 c% x- y( A
   plt.xlim(0,100)/ b# e' f, {* p& O
   plt.ylim(0,100); ?, @* y/ R- q0 A3 E
   plt.title('聲音、音量散點圖')
/ K, H! B. N9 P0 x& C4 O, b4 _; |   ax3.scatter(loud_list,bri_list)# @: |; a6 g7 ~$ g2 F  n3 T
   ax4 = plt.subplot(224), h, V: h* w! X! N
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'}), }7 Z+ u: q0 Y2 {7 {
   plt.title('童芯派電量')' A3 d) j+ D# i  Z/ T
   plt.pause(0.2)* ^2 e3 w1 U: ^6 U$ g% M+ [
   plt.clf()) w5 Y3 n+ C0 O+ b) p
   if cyberpi.controller.is_press('a'):
- T7 J) s: l9 ]6 _9 p       break
+ M) K( h( Z7 Q/ z( M( N   if len(bri_list) > 500:
. O0 n: }# U$ o. `9 D" W5 [       bri_list = []
. _$ T) w2 n( E) i; d- N! T$ _- K        loud_list = []
2 _% o7 k  A: ~2 f2 g$ R* s1 K2 m- d) B% M

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-5-9 14:25 , Processed in 0.025886 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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