圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 7498|回復: 0

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

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

' y8 Y/ b( Z. ^: X# R* _" J. V0 \1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。2 S0 G- n3 k3 b" `

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

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


0 J3 Y. a; {2 E) N% a
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    # R' k( }+ k1 g% o! J
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
      g2 {9 G+ z- n9 n# X% [( ]' E
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    ( x+ ?$ G+ _# ?8 A0 B; H4 _

# ~9 [9 l2 `6 y! f/ R
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)- t$ P& ~. H' @. T8 g) i
6 O- V$ }4 W% I5 F; @) L
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    5 Z& L* e2 Y' E5 u$ ^7 }

- N5 q1 n) @0 B, g+ `
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    6 E9 E, @: m+ H% F6 ^
7 j9 f4 e' _7 N) p) h; Z# @
3.童芯派第三方編輯器程式設計準備
  ~0 z7 h, p: }2 R* ?  e& x% D9 ~& m
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    3 b, c* Y6 M" N3 ~3 u

+ v- r8 w- ^$ y* O/ U& a7 ~
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。4 f9 k6 C, q+ m( f9 q2 b

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

( P/ E) x; X: j
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    : U' u0 ^7 ]; C, s

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

4 I) l+ m/ C' S: R8 Q
查閱cyberpi API文檔見:童芯派API文檔
6 ?6 z& K7 J* e0 o
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。7 [. N/ X1 E5 K! ~" [/ q2 _, B  N
2 `2 m, y* V: l( p
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

  j5 q  ^, d/ I2 y$ d$ }* t- P5.一些程式設計案例  j2 I' ^3 z& |/ a+ m; M
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
! s6 x, i" q0 f- _: U- T
功能介紹:
) `) F* M+ Z) ^) a* O% Q% l$ H利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
9 q1 X7 j4 b2 R6 L# i6 u通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
' x9 R( i5 C1 c% D  h  k) L結合藍牙模組可以實現無線滑鼠的功能。" O0 H" l3 c6 e7 [- j( L3 A
8 Z5 K$ k6 q- B" f, x$ t
from pynput.mouse import Button,Controller
; A  c6 d3 _- i$ ^import cyberpi
% V+ n% N( M! ~import time
2 N6 ]& A! x* k% [3 n& Q: u) o ; U! e5 l/ X" o% M# ?; Q6 c
mouse = Controller()* m7 g/ S# I% j& s
! ?7 A9 z' _& }% Y3 J  b
while True:
0 a5 l" }, Z' L& l- \   if cyberpi.is_tiltback():; E" \- X3 b6 y% c7 a6 m" T, h" r
       mouse.move(-3, 0)7 W$ g$ |) p" _
       print(mouse.position): T$ F/ M7 A, A" h  v) C
   if cyberpi.is_tiltforward():
/ c. W9 c: }3 q+ g% M       mouse.move(3, 0)' a. o# W2 F' n5 O$ d
   if cyberpi.is_tiltleft():& I$ _6 R( m0 t+ a0 \4 |# e
       mouse.move(0, -3); n: n" ~* F+ w, u8 X
   if cyberpi.is_tiltright():/ L: r: O% n( A: I
       mouse.move(0, 3)* _( {% G9 K8 |" @+ c8 N3 K& z5 i' N
   if cyberpi.controller.is_press("b"):6 P$ U" l0 ?5 q
       mouse.press(Button.left)
" X8 `4 K3 K+ a: I6 H( z) A6 P       mouse.release(Button.left)
: C* N, m& U' G* ]$ f       mouse.press(Button.left)2 R* V! f! {% e% L! W' b
       mouse.release(Button.left)
' k* \7 Q6 R' h6 o+ t: p- _7 K% m   if cyberpi.controller.is_press("a"):; }! G$ z1 Z5 G5 `' j
       mouse.press(Button.right)" Q2 y" @; [4 S9 b+ a/ i: F
       mouse.release(Button.right)
3 T$ F  c8 ^3 I6 G    time.sleep(0.01)
  V" m" v! ^5 ]! |( @6 ~3 p
! C4 Q4 y: \  s* ?8 m5 m+ v8 s$ ]$ ?* _
語音打字器
. N0 g5 O. ]0 E
功能介紹:/ J! W, ]. |+ m9 Z" A* m! i
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。+ n  P0 z* s. m  Z5 J2 i
將語音辨識的結果通過pynput在文檔中打出來。
6 U0 j1 c" q8 _9 t! D5 W) f該程式目前只能支援英文。
3 s8 B* [* B. p8 C
8 B. q. |$ U4 ?& Rimport cyberpi: t5 S; M; _. ]1 `
from pynput.keyboard import Key,Controller+ w- F4 _4 L% F1 H: U! E8 u
import time( l* `. M$ W* i  n, M

8 |$ Z. }  X9 g$ Z6 A1 ?5 @; Ikeyboard = Controller()
# c) `; w, _% X0 P6 a0 Vcyberpi.console.clear()* o) {. m) {! ]' |4 V
cyberpi.led.on(0, 0, 0)
" q, J7 O) ]) K+ K. Ncyberpi.set_recognition_url()
  {- }8 D& l' T, @cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
, E+ ?' P! T! j8 e2 ycyberpi.wifi.connect("WIFI名稱", "WIFI密碼")9 ~8 c( K' e# N% u( B  E( k8 P
while not cyberpi.wifi.is_connect():
0 i; K2 N' W4 u  }8 b   pass
6 G/ I8 T; z7 o0 D' n8 Qcyberpi.led.on(0,0,255); a- o/ a4 g6 u* P. b
cyberpi.console.println("WIFI已連接")
6 r4 C3 U' S2 M2 J/ Z' E+ tcyberpi.console.println("--------------")$ t1 J  X- ~$ h" o* ?" a
cyberpi.console.println("按下A鍵開始語音辨識")8 M( B2 A0 d9 S! [9 L$ B+ t& _6 F1 i
while True:
2 z" x( Z$ B" K! @   if cyberpi.controller.is_press('a'):
/ d: l# s9 l9 i( l) C! _2 w       keyboard.press(Key.space)
, a7 k( ?5 c4 f7 W- |  O       cyberpi.console.clear()
7 u8 `3 B& h! B" G6 _$ z# e       cyberpi.led.on(100, 0, 0)# l( O9 j( l. {! j9 k  O
       cyberpi.console.println("開始語音辨識")
1 u" ~" T& e2 w9 k       cyberpi.audio.play("switch")
$ N) m1 v) T' d' U9 K       cyberpi.console.println("--------------")2 Y4 X& H& m& h$ y% N2 B+ d- B# B- P
       cyberpi.cloud.listen("english", 2)0 n0 [  z; f9 F# }# L
       cyberpi.led.on(0, 0, 0); A. d% i8 E  F: N
       say = cyberpi.cloud.listen_result()
" B: n% E; Q# v* j; n& O. w% i8 u       cyberpi.console.println(say)
- R3 a& Q7 p0 P9 R: J       cyberpi.console.println("--------------")
* z8 |/ e3 Z, Z' e  y& `, l       for i in say:
5 Z( g7 s8 ^+ o! e0 P3 E            if i == '':
3 V2 ~) v: f4 B! ]3 l                 keyboard.press(' ')
) D  O. d: p% j$ Q# N2 H            else:0 x- |- P8 j) r4 ?
                keyboard.press(str(i))9 O7 J7 d6 l! G  [5 `8 ^) K( _& b
                time.sleep(0.03)8 m8 n6 r7 T$ [$ B
, \1 N  M" Z8 x. d" Q& _5 K
matplotlib音量柱狀圖
5 s! J% T' x! T+ \8 j& i
import cyberpi. a& m# r$ u7 X# P- [# O
import time# G4 J6 `; O) r5 `5 H, w6 {
from matplotlib import pyplot as plt3 U. n; t5 N! M, D" d

8 G& k; v& D) v" G2 |; f  F4 y4 yplt.rcParams['font.sans-serif'] =['Microsoft YaHei']5 U6 u+ Y6 v' h& P+ N' ^. P
plt.ion()8 R" p- f" ~$ H9 A+ N6 a' v
: j* K4 N+ d' O$ v# L1 W$ \
while True:
$ {, `2 ?2 E$ v; c/ C   loud = cyberpi.get_loudness()5 Y8 _. a) y; m# k9 B& `
   plt.clf()" y7 Y/ Q0 q- n+ h  r  V& ]4 A
   plt.xlabel("數據名稱")
7 W0 q6 `, J. o/ O   plt.ylabel("音量讀值")- _" r- y1 z: J& Q8 b0 {; `
   y_locator = plt.MultipleLocator(5)7 X7 {, l/ y4 T/ [% X
   ax=plt.gca()& c6 k/ w$ B( K  _) m4 l: U
   ax.yaxis.set_major_locator(y_locator)
9 i+ R/ v+ u. \8 E& ^. A   plt.ylim(0,100)$ C- ~& y! Y1 W  y
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
" _6 A5 P$ e$ I8 \   plt.title('童芯派聲音感測器讀值')
% E% q" p2 l& d' ~% O+ ?+ H& j9 i   plt.legend()
& h% [2 V* p3 o/ W2 G5 A   plt.show()2 z2 L5 @8 ~; r! J' ^
    plt.pause(0.01); [. P- x4 E) m6 C

( L5 ~4 ^' r1 W# _2 K/ V3 g+ \
; e& Y5 V3 g1 p: @matplotlib 多圖表顯示2 S! p0 B4 F  H- x; R( ?' j
( n& U; b4 e3 Q7 q
from matplotlib import pyplot as plt
, \. m* S6 e. x2 F8 a  i. Vimport time5 Y- T" A$ P5 c# X
import cyberpi5 \$ X2 m& i7 {" ^

0 `- u" D$ X! q/ a2 Tloud_list = []0 k  T9 N2 U4 [& v
bri_list = []
( X2 M) ?( q2 W! Lplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
6 {5 ?! C" r2 g$ E9 Y* G) {* eplt.ion()
, E) r, h% m9 k# X6 P! eplt.figure(figsize=(10,10))2 b1 `* r6 f  y" p% e
plt.figure(1)
. g$ m3 F' r; M1 j1 sx_locator = plt.MultipleLocator(5)! u% f( \6 F7 S$ E1 }: b9 o
y_locator = plt.MultipleLocator(5)8 ~3 H6 F! |1 z# `6 @
while True:
! H9 I, [6 V* Z$ U: ^6 P   loud = cyberpi.get_loudness()( ?+ e7 _5 z! ?+ t; ?$ {  K
   bri = cyberpi.get_bri()( q! p: |/ `) u. J
   loud_list.append(loud)& X- a- J" P/ X% N+ z* Q8 L
   bri_list.append(bri)
3 N. z6 |4 z1 I   battery = cyberpi.get_battery()
( {, C! c2 Q8 ^+ g. W7 l# p   size = [battery, 100-battery]" x" R1 w9 D- P# z; B
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
: l+ ^; K! @$ u  u/ K- y% j   ax1 = plt.subplot(221)
% y3 P) B7 G7 a   plt.title('光線折線圖')
6 r  [9 v+ o7 v7 j. `* }# k7 B' s   ax1.plot(bri_list)
9 F' ]9 [0 I, L1 `, ~   ax2 = plt.subplot(222)- L6 ]! n' O" R  N/ t1 ^, O
   plt.title('聲音柱狀圖')9 c( k) o6 t- S* M/ O( K, Z
   ax2.xaxis.set_major_locator(x_locator)& u  }/ z! `! b% h
   ax2.yaxis.set_major_locator(y_locator)# G/ t4 F1 n' T5 E+ P5 {& U0 _
   plt.ylim(0,100)1 _( M/ @5 W. \2 X8 E/ j- m! z( A& O
   ax2.bar('sound', loud)  M. r  g+ K5 V8 D7 ~
   ax3 = plt.subplot(223)3 m- N  e: C0 C
   ax3.xaxis.set_major_locator(x_locator)
. ?. z5 A7 E1 t6 k' d/ p   ax3.yaxis.set_major_locator(y_locator)2 a! ^0 ?& D) q: b( ~
   plt.xlim(0,100)
2 l8 Q) ^9 L5 y   plt.ylim(0,100)5 k3 Z6 u2 b3 D7 Y+ N
   plt.title('聲音、音量散點圖')
9 @2 o. k% g7 L   ax3.scatter(loud_list,bri_list)
) _$ y8 s- D, ^8 W+ G   ax4 = plt.subplot(224)
# ]8 T: A- j  ~$ k( Y9 c" C  S  q   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
0 a$ A( E& a3 e, M   plt.title('童芯派電量')+ S6 {' z6 U4 f8 A8 Z
   plt.pause(0.2): I1 j# ^& x5 N# L1 i; V9 A/ P5 n
   plt.clf()
' O2 g7 F/ S( O! q) d4 Q& I9 e: H   if cyberpi.controller.is_press('a'):" \7 O( a3 ]# Z0 F1 M
       break2 Z' {% a% {+ y+ g* x! c" I
   if len(bri_list) > 500:
% P! v+ I3 p4 ^       bri_list = []
4 d# d* w1 D) [* D" d        loud_list = []
( R) t: {$ Z% V% j$ y8 c& H
( T( l. r& m6 Y/ P7 Q2 U

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-4-27 02:19 , Processed in 0.026629 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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