圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8413|回復: 0

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

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

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

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


, }* G7 k5 g* g  I
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    ' x2 h6 E7 v7 X5 o0 B& m  M) i
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可); ?4 w- l: u  `# v
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    ; L1 C9 k: t0 T0 ~5 o4 n
$ y$ ]( e. Y7 E4 V% b& a- B
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)" I! D4 f4 A% v" @# u
; o) s/ K9 ?+ h9 J6 r$ l/ M2 @
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。- I* S0 A1 l; l/ i7 h
" V: x$ V9 B$ M% D! n
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。1 t: A! Y4 ]7 U, ?

" A# S3 i3 v$ g8 ?( h3.童芯派第三方編輯器程式設計準備9 q0 z8 O" y. z/ v
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    % y! e7 J4 {7 S; R# @9 @& F
8 R+ [* N# R- f: Q# m% @
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    1 I$ k- }: M" \- R

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

1 g- {) i0 S1 C
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    4 U) r! ~# u& ]6 |9 v+ Q. N2 P

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

& N: T/ S3 j  ]; n; |- J
查閱cyberpi API文檔見:童芯派API文檔

* a- T4 }2 Y2 b
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    - v+ ^8 O; ]1 d3 R

5 h4 u3 j2 c/ g, }% j: j
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

* T2 D1 R8 Q1 S! E+ V5.一些程式設計案例& d% o* }7 ^1 H
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
0 x8 t! p5 t( O8 E* r  I/ h
功能介紹:
3 ~) F0 B( o6 O8 s# F7 @利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。% T$ i2 J* x/ x' _! K2 h
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
5 q2 r( j, s( _) Q結合藍牙模組可以實現無線滑鼠的功能。
2 h  r) B9 g* f4 {' u  p7 ~1 r/ V& c! G$ f5 e7 N# \
from pynput.mouse import Button,Controller2 {# \" j# M; d
import cyberpi# _  |" J2 x# ^- l& T* l
import time7 M% B* S2 v/ }! A0 _5 t
2 I% m; H& t( S# d) K9 z
mouse = Controller()
; f5 m; x: ~: }: v! \+ G. r 4 a3 S3 Q# q+ {8 R
while True:
8 K5 E+ k1 ~) y2 w' Z! @7 O$ L   if cyberpi.is_tiltback():/ I4 ]9 l+ N) U7 J8 Y
       mouse.move(-3, 0)
8 l+ v/ o/ S/ H       print(mouse.position)
2 C& Z7 ~0 K- ]. r6 K   if cyberpi.is_tiltforward():$ w: W; j% o2 y+ h9 X' o5 \
       mouse.move(3, 0)
( m+ M1 |: G. U5 i1 b, M2 P$ ?   if cyberpi.is_tiltleft():
/ L# b/ r" J# M. t, v       mouse.move(0, -3)
1 |8 K8 ?5 C% ?" K   if cyberpi.is_tiltright():
" U$ m  h. k  X7 c+ w% r& l2 \       mouse.move(0, 3)
! o* u8 p; `- R& [; s& s$ p  @! @3 Q, I  w   if cyberpi.controller.is_press("b"):
2 g& Y/ ?7 }: `  N- d4 l       mouse.press(Button.left)* c: g7 g& O7 M. t' e
       mouse.release(Button.left)8 g' _$ D: a# b* z2 O2 u5 e
       mouse.press(Button.left)
1 z+ E. G* a+ W7 h       mouse.release(Button.left)0 z6 }) k- b$ ^; w
   if cyberpi.controller.is_press("a"):
" ^- t, V0 J0 J. l  ]- P1 T9 m       mouse.press(Button.right)2 k: b3 y8 K* ]7 P' @9 n: h' K; k
       mouse.release(Button.right)
9 C: W5 ~4 _% g) L) F    time.sleep(0.01)/ m0 P9 y) ~8 V$ g; j
* T8 X/ J# r/ c9 |8 d

- B. T8 \. [& k" R# _0 c: Y
語音打字器
' G% Y' C! X/ z: W2 k+ ~
功能介紹:
  @, f. D( M+ m  y$ a1 m. T& |利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
: o' u. l4 C3 @5 k7 _1 D將語音辨識的結果通過pynput在文檔中打出來。
: F  E. o: e5 e8 j* r$ O& n7 ~, S該程式目前只能支援英文。' y" E* O" k" p5 q+ \
+ L4 N1 a! n+ O) C' m8 Y9 @5 @! w0 Q
import cyberpi) u" ^9 O+ B# N5 N  |1 v: Y) M, I# R
from pynput.keyboard import Key,Controller" s6 ^( M: b! Z# @$ u' s8 W1 p
import time& e/ e1 w  y: \- V  {4 Q
  k! H1 c+ I: g9 M6 [
keyboard = Controller()
. [# |# T" N' i: d" A( c7 j5 y. r. G' ccyberpi.console.clear()% V! i: l6 O+ J2 N9 h- c+ e
cyberpi.led.on(0, 0, 0)
3 v; C5 b/ v! c! \2 _cyberpi.set_recognition_url()+ G: W# |9 \: {
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
2 x: i) B  F' @cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
7 ]- z2 L) k. @" ^# L' Ywhile not cyberpi.wifi.is_connect():0 \: `- ?; v$ b& A4 L. d
   pass7 A0 r; x) ^+ @2 P/ S. t( x
cyberpi.led.on(0,0,255)& s9 K. h- Z) E( q' M
cyberpi.console.println("WIFI已連接")
4 @. l# z5 A' Wcyberpi.console.println("--------------")
" O! Y+ K/ J# h! e/ qcyberpi.console.println("按下A鍵開始語音辨識")4 j$ w. f5 o: l8 A8 o
while True:
7 j3 N' a. I+ r5 m/ Q! }2 V   if cyberpi.controller.is_press('a'):
+ K- Y5 L: S3 s5 t% l       keyboard.press(Key.space), T' e# A/ i+ `; ~
       cyberpi.console.clear()
! X+ X, o9 C% U! r& B. P' @3 ^       cyberpi.led.on(100, 0, 0)  O: m. |# ?5 @4 Y; h: t7 i
       cyberpi.console.println("開始語音辨識")
1 Q  h& [+ v7 `' w  t9 y7 ?       cyberpi.audio.play("switch")4 o+ C* ^6 ]$ I- a3 }
       cyberpi.console.println("--------------")! ?, z5 x- z: T0 ]
       cyberpi.cloud.listen("english", 2)
4 B1 Y+ c( c5 z) A       cyberpi.led.on(0, 0, 0)
2 I  X1 y+ v4 W; z5 @, R" Y       say = cyberpi.cloud.listen_result()
- O2 t0 n" \" W1 ^8 Z( J0 n' _       cyberpi.console.println(say)3 [" g- D0 [4 N4 B. }
       cyberpi.console.println("--------------")0 H3 B, E! k5 [6 W' z* _" z
       for i in say:$ n  n1 h6 |2 @( s# x4 W7 Z; [
            if i == '':1 g4 N/ M9 p9 r: P! I
                 keyboard.press(' ')
% R# P* \+ r* v4 _1 X            else:, i# q$ j* V. X+ P+ C
                keyboard.press(str(i))# U: ^" \& _3 G: y8 U( o
                time.sleep(0.03); H7 S) \6 v0 e

/ a& O3 D% r( I& V9 z2 X! nmatplotlib音量柱狀圖

6 S9 o: Q3 {$ D& D: i- ?import cyberpi
% T: S) ^& O+ ^( _import time
6 h8 W- R' ]( H7 Y: v: m2 ]from matplotlib import pyplot as plt
/ q4 j( o8 c* z$ R, L8 u
' k7 i8 g& \4 `/ F4 j* `0 `; Vplt.rcParams['font.sans-serif'] =['Microsoft YaHei']
: U7 l2 W- [& j0 F; H3 |4 K* [plt.ion()
6 X' o/ x' V' g1 J: b
2 A/ {0 M8 t, p; S7 Twhile True:
4 l( D" l% i6 r1 O; u; A! h* y   loud = cyberpi.get_loudness()/ m6 O: o. x8 I+ }7 t8 K" q
   plt.clf()
! K8 C: U  Q: V1 ]: l0 c   plt.xlabel("數據名稱")
: }+ b( \& C% L* B8 n3 j* V- r6 K   plt.ylabel("音量讀值"). L" A* t+ Q4 d
   y_locator = plt.MultipleLocator(5)- k9 j: A8 Z1 J6 j. q  }3 U
   ax=plt.gca()- I$ N9 {) y- z8 P9 L% R
   ax.yaxis.set_major_locator(y_locator). {3 N4 I! y" g$ J
   plt.ylim(0,100)
9 h: S9 J0 c; H0 i/ ^   plt.bar('音量', loud, align='center',label=f'溫度{loud}'); r7 A6 V! ?" c! U  q. t) i
   plt.title('童芯派聲音感測器讀值')3 |; z) Y  z  @4 f0 P  b  V; Z
   plt.legend()- Q9 v# {3 Y) U# {* c1 X3 V
   plt.show()7 v; U& v. w' o
    plt.pause(0.01)& _. f3 Z4 h* X. [6 o! g) I3 @
; k9 h2 b2 T* W/ a
% k, p# L8 v2 E" U5 i# F" I
matplotlib 多圖表顯示
! M, O- {& {" @

4 h0 n5 \8 h. n: f+ ^from matplotlib import pyplot as plt% ~0 Y8 j$ ?. \* {# I: X
import time
9 h1 K$ ?* u" D& r1 Gimport cyberpi
2 h9 @3 Y4 C$ u; q
% [$ j" O$ R6 _/ X0 tloud_list = []2 w8 O: `2 k  H  w8 y$ M
bri_list = []
9 W# f& o! W. mplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體5 H3 c# E5 l8 d' a
plt.ion()) x) E3 e* i" ]0 D! ~" s
plt.figure(figsize=(10,10))* q: [, t2 \0 h6 C" O" X; F
plt.figure(1)
' e/ G. {. c, H' O- lx_locator = plt.MultipleLocator(5)" g( U* ], X  {( m
y_locator = plt.MultipleLocator(5)
$ b; M: k& }4 j- vwhile True:2 I6 [3 K1 v- r1 j; {+ D
   loud = cyberpi.get_loudness()  ~  H- Q/ u- M
   bri = cyberpi.get_bri()
) Q0 s: t8 w8 M6 f' ]7 n   loud_list.append(loud)1 D9 `* }+ B6 b+ I) a& p; c$ @
   bri_list.append(bri)
' d( l9 `" T/ ~, K* ?3 ?9 D   battery = cyberpi.get_battery()7 c$ _( _( b( I: o- @% J. \, o
   size = [battery, 100-battery]! Y$ w6 H. l( d2 Z  o! q: x
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
" ]- u" U& d! `) d0 e! |   ax1 = plt.subplot(221), H% u4 ^5 z# v/ D
   plt.title('光線折線圖')
# _) c' n& u5 t( l% T- b* x, B# n- o   ax1.plot(bri_list)" S" P$ f. G4 s+ e; K
   ax2 = plt.subplot(222)" Q: C( Y( z' G8 Q; v- Q
   plt.title('聲音柱狀圖')
- I; r4 d* ]) c  K   ax2.xaxis.set_major_locator(x_locator)
! r% j* c% t- h  [* E   ax2.yaxis.set_major_locator(y_locator)
: Q; ?; p8 C- k! {! N- \   plt.ylim(0,100)
) W9 x& `6 S8 j+ P. Q7 B   ax2.bar('sound', loud)
# A3 s7 X/ V8 o$ s7 w' j8 y/ g5 M   ax3 = plt.subplot(223)
/ Q% N6 }" f  y' Z$ E) W% R( M0 u: \2 [   ax3.xaxis.set_major_locator(x_locator)& L5 j4 V* f7 H& z: w
   ax3.yaxis.set_major_locator(y_locator)7 ?/ `% a5 f5 c
   plt.xlim(0,100)' Z8 ~9 C. f( ~) {7 y9 A
   plt.ylim(0,100)
6 ?4 c3 ]* w; m* ~8 v' _   plt.title('聲音、音量散點圖')* Y5 V# K8 r* T; u2 ?
   ax3.scatter(loud_list,bri_list)
3 w$ j: z  S' C   ax4 = plt.subplot(224)
  M( b3 y$ j  d) S7 v' C   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})9 ^  x4 n6 D3 g$ {% F
   plt.title('童芯派電量')1 G& d- {. Z6 Y
   plt.pause(0.2)
" x9 t+ p& g; u7 X; r0 a: F   plt.clf()
9 t3 v9 V. }' x4 _  e- {& T   if cyberpi.controller.is_press('a'):( n+ X: c( Y& d$ m6 j
       break  \' d; C+ E$ P' d) j! ^
   if len(bri_list) > 500:
8 \) h* B2 ~7 U+ B9 N2 `       bri_list = []
5 c7 E( M  b  ~( I: h        loud_list = []9 r# C& H9 x) W- J( b! a
$ Y; |+ |0 f8 k/ v

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-25 15:15 , Processed in 0.025165 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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