圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8442|回復: 0

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

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

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

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

; M7 J( _" e) J$ E5 q0 t
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    - _9 L5 y% R; L  w$ X
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    & x  D% K. e/ \) w3 m5 l2 S
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    % S2 Y4 f8 P2 `" S" w- q$ \9 D
: V. u6 {# h7 o& M
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)' z2 S! S' r/ ~( i

+ ?. ]. f( U" s) C! F6 S$ |- Q6 r/ i
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    $ Y4 ?. H$ U# J
' n* @2 E, {# }/ C
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。+ q" w" ~2 I3 Z- j8 f
" G+ _' i2 U/ d
3.童芯派第三方編輯器程式設計準備/ J0 S. s8 V/ ?7 w/ @2 h) g) }
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
      D; c1 h* L  s! h

% ?/ O. X7 D+ d
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。! V* \( ~# |5 C

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


& s8 O  j9 [# y7 D& Z
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。; j+ g3 y+ R. \; F/ X

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


* g5 U, ^* o% c) d
查閱cyberpi API文檔見:童芯派API文檔

) v5 I9 ?0 k" I
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。; W7 m0 x$ }) `( l

/ C4 N  t( n5 {# R) O) V; f
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
1 f; h* g# `& |" p0 Y$ w
5.一些程式設計案例( o" T& y: M# ]. l: T
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
6 `& l; F+ w+ H' o) _" D0 Y
功能介紹:& A4 C3 S  Q: s8 i  C( x2 E
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。& ?* l! G7 W) k$ Z  h; u7 W. q9 y: q
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
1 W  o; U8 g3 w- i* g! s結合藍牙模組可以實現無線滑鼠的功能。) f5 g1 m0 g' [$ K
/ R/ X8 b2 v, H. Q$ X
from pynput.mouse import Button,Controller, b- `0 B3 ]; s2 O! h) l
import cyberpi' o% @& [* F* D, ~
import time
2 q; }- t! g0 o
$ b9 l8 w' J% P& x8 [2 Tmouse = Controller()
  e) o0 r; p  F7 U0 z. m
  D% }( p! Z* h9 wwhile True:* T$ ~% M- H" q9 z
   if cyberpi.is_tiltback():7 _" V5 g5 {) h0 p, s: g& v1 ]
       mouse.move(-3, 0)
( l% X5 L! c# [7 `% M# B       print(mouse.position)
2 e5 a8 `2 H; e. d) u' c   if cyberpi.is_tiltforward():  P/ n7 J- d7 h. n4 J, C8 M
       mouse.move(3, 0)
  {4 H$ Y2 X, H9 g! T   if cyberpi.is_tiltleft():
6 D! E5 A" ?1 [1 H       mouse.move(0, -3)
7 l0 X6 B/ T0 a+ i# n1 \   if cyberpi.is_tiltright():
( d8 E& N# E, m       mouse.move(0, 3)" b2 l+ v/ d* n3 v
   if cyberpi.controller.is_press("b"):# n$ n4 F/ }" J! s) w. [" v" Z
       mouse.press(Button.left)
" m: F. i' A- k- |) Q- a       mouse.release(Button.left)
3 W: y6 S& ^. P$ u( o       mouse.press(Button.left)
% Y1 }( ?' W+ ?9 f       mouse.release(Button.left): H% o0 S  E9 X% D1 q% S6 ~' Z
   if cyberpi.controller.is_press("a"):
! g4 x# B7 ]0 r  p9 D0 d       mouse.press(Button.right)' D2 i/ ^8 A9 B
       mouse.release(Button.right)
2 V2 ~; U4 @; _  i    time.sleep(0.01)
. @, V7 [8 N7 ~8 b1 W8 C3 C6 H7 C) |  H! G

( B# ]4 }! I' Q* a
語音打字器
; I: V2 l9 J' S( k3 ^2 ]0 o8 k
功能介紹:0 ^1 n# c- Y# s/ l
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
$ ^/ z2 A  I2 n" T9 h將語音辨識的結果通過pynput在文檔中打出來。
, P( X# _1 e  d$ f/ @該程式目前只能支援英文。2 H" s. f+ A( R' u
+ W" C$ k& V- A3 j5 `
import cyberpi. W2 ]7 ^% R/ W
from pynput.keyboard import Key,Controller
  |  c' P6 z( u  l. mimport time
8 J5 @# g0 u4 j) w8 ?: J3 i ; y3 k5 j; T& e0 I
keyboard = Controller()
' d% H; S. l+ A; H- S& H4 e4 I6 v. Wcyberpi.console.clear()
6 K9 e1 K: h& y* ^0 Y$ Bcyberpi.led.on(0, 0, 0)
' P" U' v/ N( n" f; B" jcyberpi.set_recognition_url()9 o& w3 }" U( a: G% W0 l
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得5 }) }; j! C- Y2 p0 b9 o  @* b
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
' ^; W; J: \, S- awhile not cyberpi.wifi.is_connect():
) ?( c( R( O) K4 w! J- E: E   pass
# z' ^* x, N/ `' icyberpi.led.on(0,0,255)- i! f( g* _7 ?( d; E
cyberpi.console.println("WIFI已連接")/ u9 R4 `' }! X' V' G+ D
cyberpi.console.println("--------------")
  H! S1 v2 J6 X( e) ?/ g! {cyberpi.console.println("按下A鍵開始語音辨識")/ A, P! F5 H4 p2 w3 J
while True:
( t) ]1 ]$ P) l: M' \- A) {   if cyberpi.controller.is_press('a'):$ f& c1 u! d, ^, p7 g3 }3 h
       keyboard.press(Key.space)
" i0 U" F: c4 x* M/ K9 n3 i6 ]       cyberpi.console.clear()" Q& E% ^% I, w7 z; p
       cyberpi.led.on(100, 0, 0)
* f7 I$ E' y- f       cyberpi.console.println("開始語音辨識")
2 I# Y+ M4 u9 |/ ^- \* A  K       cyberpi.audio.play("switch")
0 _  |2 [0 U0 ^" [% o  b       cyberpi.console.println("--------------")
: I8 V2 D; \2 S4 m& T) F       cyberpi.cloud.listen("english", 2)9 a' o3 ]# l9 c3 X9 c+ j
       cyberpi.led.on(0, 0, 0)
! y  S. b; z/ r( @) p9 o       say = cyberpi.cloud.listen_result()& h$ V! R: \! Y1 U" f  I, Y) @& p
       cyberpi.console.println(say)* C: c: v% z9 u9 [
       cyberpi.console.println("--------------")
! R/ e- s0 Z7 I5 o       for i in say:
" S. J0 {# u" O$ ?# ^            if i == '':
' ^. E" F: i/ y) K( F+ {8 e                 keyboard.press(' ')
) a1 T: {) z5 p  `! T) ]            else:
1 v+ {. l% u4 [5 q                keyboard.press(str(i))/ a* _! s" q; S7 s$ o  s
                time.sleep(0.03): j3 h% U/ i8 Z" P9 {" B
$ L, F7 S& D3 a
matplotlib音量柱狀圖
. Y4 F. g  ~! h6 {
import cyberpi5 D$ a+ p6 W1 B; Z4 F
import time& X0 U1 l- y6 d* y' m: U+ }
from matplotlib import pyplot as plt
: r2 }( T# U- f, x. O% | 9 }& @% c6 R, ~& s' l+ F" n
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
. V: E, S9 B! a" R6 yplt.ion(), Q! v& I0 F" i( I. ?0 Q
/ |* K& w1 I( C- b
while True:2 k! g7 q7 }2 ^! J) |8 N
   loud = cyberpi.get_loudness()4 B6 e  C' U- N1 T% v6 J$ G
   plt.clf()' H8 A: s/ P5 E0 U" z+ y
   plt.xlabel("數據名稱")$ s/ g! v7 a) w5 A8 N+ K/ o
   plt.ylabel("音量讀值")
6 O* m( m( U2 h9 @% ^6 N   y_locator = plt.MultipleLocator(5)
0 S3 |7 ]& c4 N4 U2 A( x. O# n   ax=plt.gca()9 E: R1 e' c. _5 I
   ax.yaxis.set_major_locator(y_locator). t% h; f) l* `' S6 @, _; A
   plt.ylim(0,100)8 y8 m  G9 z: ?+ N
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')) U3 N; @: [, [; ^. A
   plt.title('童芯派聲音感測器讀值')8 r' O: f- ]" W! C9 f" k6 ^
   plt.legend(); J: }" |" C7 u* \) ~6 ^6 f
   plt.show(). D/ \2 e' v) L, {  y! w; r5 r  @
    plt.pause(0.01); }! J& Z; G! \  c0 c
, o# q5 `5 R( Y1 o
; B2 o8 }! L; s& y% q3 p* [
matplotlib 多圖表顯示
/ p& p. e0 r% u' H# y1 ?

! z2 g( S4 [; N( |& l( lfrom matplotlib import pyplot as plt0 J3 z* G, F- _. S
import time9 I- F# ~  R5 J0 ?5 G
import cyberpi# Q% X3 M6 P. g5 j1 B: ?

/ v9 C7 F& S2 Q. C% P6 tloud_list = []
! ^, `* z4 K; V2 z& {& ebri_list = []
# V, U7 f6 e  `plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
' R2 [0 E* ?) R0 pplt.ion(); x, L1 e2 O% w9 R& a! o) s
plt.figure(figsize=(10,10))6 s0 m! I; R8 O, ~: j
plt.figure(1)3 N& L8 r0 @) s5 W" w  t
x_locator = plt.MultipleLocator(5)
7 H9 i2 t  \" ~, O* O. U( g7 P  \/ Ey_locator = plt.MultipleLocator(5); p  l/ N( b# X8 d: r9 |
while True:
2 b; b4 ?. z0 ^3 v! G$ J  n   loud = cyberpi.get_loudness()
, B1 m$ v* g' K" k   bri = cyberpi.get_bri(), H1 F8 |0 m( |, e$ T
   loud_list.append(loud)
6 V4 U7 X! r. M6 S2 B* b: w* A   bri_list.append(bri)
; L7 A2 {" C* v  [5 c) g   battery = cyberpi.get_battery()
7 x+ Z- j! g- a) _   size = [battery, 100-battery]
8 Z; r/ @/ W( e, i9 D& B   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']9 M  x0 v; z; p3 l/ b
   ax1 = plt.subplot(221)7 P6 J0 r# m6 n# P! ~" {
   plt.title('光線折線圖')
  s& j4 S% W- P3 U8 w   ax1.plot(bri_list): @; D% w9 t5 p. }  f4 p  P
   ax2 = plt.subplot(222)' i9 ^) B  E% c7 t, C
   plt.title('聲音柱狀圖')
9 o6 Q; }* u* l) G. M( {   ax2.xaxis.set_major_locator(x_locator)* z" h9 L0 K: ?  C" _
   ax2.yaxis.set_major_locator(y_locator)
! A, Z6 i% s$ p" q$ h) R4 n( j1 M9 X   plt.ylim(0,100)
; |* k, d5 r: w: o7 E0 v   ax2.bar('sound', loud)
, y& d3 @  ]* @, H   ax3 = plt.subplot(223)
! g8 e8 k3 t. F1 @   ax3.xaxis.set_major_locator(x_locator)% T* E" q! c7 D8 j) u; E. {
   ax3.yaxis.set_major_locator(y_locator)! U- @+ K& a$ V0 l3 U7 v/ ]7 A$ A
   plt.xlim(0,100)6 y, B4 i) V1 ~2 z' R
   plt.ylim(0,100)
9 F* Q8 F8 V$ a- [/ H) |9 t   plt.title('聲音、音量散點圖')* [  o( J9 Q9 q$ e  c
   ax3.scatter(loud_list,bri_list)
+ G$ {5 H' [  [* L   ax4 = plt.subplot(224)/ o* A3 m+ I: h% t
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})3 x; E& |! E3 B+ X- v
   plt.title('童芯派電量')  }' Z: Z5 [; z2 L. D9 M% L
   plt.pause(0.2)
: I$ E) J: L9 _   plt.clf()* P) x( d& b8 x. d0 {! D! ~1 e/ Q
   if cyberpi.controller.is_press('a'):
9 ]" A  m3 [1 Q5 ?) m# ?; F' i       break& w7 w( p* B8 O; g5 p
   if len(bri_list) > 500:
$ a( r/ s$ N& r0 J/ x       bri_list = []% ]& M/ a7 \* a; L
        loud_list = []1 Y1 w0 S/ {7 h- `% r
) S; X, ~/ {" K7 b. w+ c/ O

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-28 05:07 , Processed in 0.025536 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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