圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8505|回復: 0

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

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

% @* {7 h% p; r0 o/ [0 x, O1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。
    2 F% @0 s# C3 q6 U

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

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


2 I2 y6 M$ y8 [; F
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。# W% ~+ j8 Z5 \# E, _
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    * K0 r/ G- U! c. N6 O& P$ W
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。4 Y  w" `# x/ a- D7 R

4 p: G' v: Z9 }; B7 ^
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    5 K- |2 L/ I! f" x% v! W- f  O
! p+ J9 [/ j+ Q7 r' l
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。) J6 ^& d$ S( O

6 g  a; c% B0 |& j5 `8 y
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    1 w! W1 d8 u& l$ V6 a- H. ]1 V+ m
( D3 o$ c$ Q/ y
3.童芯派第三方編輯器程式設計準備! D4 b" r; l" X6 I  R9 k
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。7 p8 B) s8 s& u4 _5 b
5 j6 x* c3 E2 S9 S6 A! m
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    & d5 r4 }" ^0 W; N& C

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

5 u) h4 \1 O& {4 P
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    & T% E5 {( P- x+ O1 b

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

8 }9 h) R. J  u/ F- W' @% f! S
查閱cyberpi API文檔見:童芯派API文檔

4 a1 t& H* H# V1 b
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    4 X- E# c4 i) g6 R
2 W6 `% L* X7 M# u5 U/ z* M6 l+ y
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

$ M) P! {, ]4 j) o4 `% B5.一些程式設計案例: y  R. L4 O9 u4 s# m
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

4 a8 Y$ x7 g, p功能介紹:; N# `5 v$ m0 E% c4 O$ g
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。+ V; N7 Q$ w" z& v8 p
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
- s/ U2 h! ?7 Y結合藍牙模組可以實現無線滑鼠的功能。
! f! k4 m/ E) `5 n2 n. j2 @
' J3 ?. s( y% @: r3 D" a( I* @from pynput.mouse import Button,Controller/ B; M1 [$ f" E+ \/ g! }, \( J
import cyberpi& p1 J5 q2 n, ?. P# {
import time
# P6 t7 Y3 r1 n6 A3 k& d4 [' B
; m% K0 C  \1 O1 _mouse = Controller()
/ q) M0 R2 Z9 u7 P* H. Z( a
- N" Y3 N1 a% @while True:, l  ~, n( l" j/ G$ Z2 r
   if cyberpi.is_tiltback():4 Y: ^- R9 x* ]
       mouse.move(-3, 0)
: Q8 P$ t! Y5 ^$ j       print(mouse.position)8 ?" x! E9 T+ k' r+ d+ S! E  }
   if cyberpi.is_tiltforward():1 p! r+ O4 X3 R& n) K+ J
       mouse.move(3, 0)% d! t# o$ {& q! \$ |5 ?
   if cyberpi.is_tiltleft():
5 M, B8 b4 z0 X4 z5 K       mouse.move(0, -3)
" a3 e' y( N. E; u8 c5 L" S3 y   if cyberpi.is_tiltright():6 w5 V, B6 V& m$ f, ]8 |, e
       mouse.move(0, 3)) C1 s) f9 e/ \
   if cyberpi.controller.is_press("b"):0 ~$ I7 h0 u/ T; Z" k7 D. t
       mouse.press(Button.left); M5 t: x. U# K7 X$ R
       mouse.release(Button.left)
% R1 G+ ^5 Y. d( t/ U; }       mouse.press(Button.left)' B$ Z3 w( Q$ W4 H* P& Q0 h; w
       mouse.release(Button.left)
# U' V- q5 f, t$ b0 k   if cyberpi.controller.is_press("a"):
6 n) e! n( [4 _! J" I       mouse.press(Button.right)
; B9 V  F3 O$ [) G6 O! e5 J3 z       mouse.release(Button.right)
( K5 a8 K) {/ U! N# e- X3 f# Q, L    time.sleep(0.01)
) l% I" B3 t1 J# |
) w: B+ n7 P1 B8 k: [
4 c- f2 k% Y! e$ |; ^# F+ W
語音打字器
, v" O, k# C# G( \0 s& J. i: C
功能介紹:
, ~4 Z. f7 y% {$ Q; {0 i- H利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。, _* f6 u( V7 z
將語音辨識的結果通過pynput在文檔中打出來。
: @( e3 ~. {; X1 d% `該程式目前只能支援英文。+ \' s% v- Q; D% g! c
, k5 Q+ ^- e' Q; C* |, j
import cyberpi2 D: u9 V  G8 X6 J/ \, e3 o0 q& A
from pynput.keyboard import Key,Controller* d3 C: N5 B. K& Z0 d
import time$ O) z8 V2 u2 ~
" D# r9 `3 m/ {( x) p
keyboard = Controller()4 I- T. Y4 j' L. ?4 `  b. O
cyberpi.console.clear()
0 x/ `. I; h5 F; f; Lcyberpi.led.on(0, 0, 0)$ c& ^7 l; z, M/ V8 f  H+ ~8 I
cyberpi.set_recognition_url()9 e! K! b$ L& N" o, g' f& q. d( v
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得4 L6 B# _9 i' w
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")2 {- N$ ?: X$ ~/ t% T% _/ \7 p/ w
while not cyberpi.wifi.is_connect():
8 z$ M, N2 o0 f- U; F: `   pass
; }% J3 e. {! u8 [4 C/ mcyberpi.led.on(0,0,255)
/ G3 h( v( g7 ~: scyberpi.console.println("WIFI已連接")) P- }9 q% W, P8 C* Y0 n3 b
cyberpi.console.println("--------------")
, T9 q! e+ t# c$ k9 A) w' N6 ncyberpi.console.println("按下A鍵開始語音辨識")
, m3 }2 V' G6 v: Awhile True:
5 V, _9 ?& u( L   if cyberpi.controller.is_press('a'):
7 Q* D' K0 A* \& v4 b4 i       keyboard.press(Key.space)8 i  b. t8 V9 c0 s9 V4 D8 o
       cyberpi.console.clear(): N: Y2 @4 j: }" Z
       cyberpi.led.on(100, 0, 0)
0 f# g' J' o( s1 Y5 e       cyberpi.console.println("開始語音辨識")6 Q! T0 z1 ^, q
       cyberpi.audio.play("switch")
9 j4 q6 z6 j, O1 Q+ y       cyberpi.console.println("--------------")" H7 [) Z' L8 q$ x9 V3 ]" h( f& v
       cyberpi.cloud.listen("english", 2)1 G1 U6 v: N- J1 @# H
       cyberpi.led.on(0, 0, 0)
' C; U2 q; E0 r. D       say = cyberpi.cloud.listen_result()
8 z: }' P0 e- P, E$ a       cyberpi.console.println(say)
! u$ [! v+ \& [( A% ~       cyberpi.console.println("--------------")) Z2 ?) }9 N4 X  y* x3 m
       for i in say:
7 T! d8 R+ j: f0 e, _3 r5 U            if i == '':7 s" k* m4 D) O2 `
                 keyboard.press(' ')
( D7 v. P/ b, u% |+ b5 n0 P( n& G            else:
& o9 A3 O0 D  d  H1 l' K8 y( l# b                keyboard.press(str(i))
8 u1 o) Q4 d. p5 m8 _2 B) K( s                time.sleep(0.03)
0 W: w+ t( J! o9 D. c
' T4 V1 i3 Y5 G* c
matplotlib音量柱狀圖

; T, _! S3 P- }* o' Ximport cyberpi
; z' V2 J1 P$ {7 V9 |import time
" V) N. p; f) x  a* y" S/ ]from matplotlib import pyplot as plt( S6 [" i! N7 U, k$ x8 E

. s& W6 E, O0 ~# M$ o% w+ C6 Kplt.rcParams['font.sans-serif'] =['Microsoft YaHei']" e6 \5 E  `  H- F
plt.ion()) G5 H* Z1 [/ i7 S$ R, A  h) r

4 @# ?! d- l& f7 U% xwhile True:5 F# D# x/ K8 r; a3 m
   loud = cyberpi.get_loudness()
7 j$ b/ O! {+ x  G! ^% A   plt.clf()8 o( J2 d+ L( I$ f! v2 S
   plt.xlabel("數據名稱")
6 _7 ^* `6 ?- w0 B% Z   plt.ylabel("音量讀值")
  K5 F3 e5 x, v8 |   y_locator = plt.MultipleLocator(5)8 y$ X4 u! \& K
   ax=plt.gca()+ ~/ x. J/ V$ i/ ~$ n
   ax.yaxis.set_major_locator(y_locator)
5 x8 d+ \, \- I7 S* v; g, o% N4 B" a   plt.ylim(0,100); ~2 L- S5 P9 A+ m% @! g
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
& L+ u7 X- P0 e. Q' Q   plt.title('童芯派聲音感測器讀值')
2 r% x4 d; K, v. N/ K   plt.legend()1 l* b. W3 l7 R$ l2 D
   plt.show(). F# f) o& T1 S+ u
    plt.pause(0.01)( N3 y  x0 L' e& @; K& y* c2 I, O; v

1 G& k0 l7 q) H2 C, h$ o5 e3 t  S1 d+ v# t" g
matplotlib 多圖表顯示
+ S/ o, i0 w( g4 e& i6 Q. h
! B7 i8 _* [2 Y$ G# X
from matplotlib import pyplot as plt
0 g" ?  {& m' ?4 F7 B- wimport time  U9 E& E1 m# t( S
import cyberpi! I# N; U3 M  y# k$ _/ L. f
7 Y. r) V2 b9 h# o$ t- O: F, s
loud_list = []
: R0 n* ]; e0 {. v7 B5 \" sbri_list = []
# \8 X! K* ~+ g: Vplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體6 l  H& E" N4 u8 M$ }! r
plt.ion()$ u8 {7 Q7 b  Q# Q
plt.figure(figsize=(10,10))
) s4 M, I  b8 J8 ^3 bplt.figure(1)! ], Z6 z9 {& y) Y- R
x_locator = plt.MultipleLocator(5)" f- ~( I' _' u9 u, c! S- J1 V
y_locator = plt.MultipleLocator(5)
& ~/ M0 G8 j+ B: R7 |. J4 H7 swhile True:
+ Y! R  b' q9 ~3 ~3 M9 V8 A1 n; t" z3 {   loud = cyberpi.get_loudness()
/ O. S$ k% Y0 S  V: F   bri = cyberpi.get_bri()
: r" \" l$ n* {) i/ H   loud_list.append(loud)
: o. G9 l% `: r( }; M. H2 j( R$ |4 g   bri_list.append(bri)
( d" j/ g' {5 P5 f# e   battery = cyberpi.get_battery()
/ [3 m! G3 O! j' k8 R$ M, ~   size = [battery, 100-battery]4 S. b( Z! ?& V( f' B4 Q
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
& U' h- d* ]; C" V+ P! A   ax1 = plt.subplot(221)
" P8 _: S- V- U   plt.title('光線折線圖')
; T# A/ G3 z( u7 E7 G! l+ N   ax1.plot(bri_list)" X. q) j5 Z2 l0 n
   ax2 = plt.subplot(222)
& o. X( T. P8 b  ]. B& H4 i' I7 @   plt.title('聲音柱狀圖')7 y7 D, k$ \1 J! G$ ^" j
   ax2.xaxis.set_major_locator(x_locator)
! R* P6 @$ @" E$ ^" L1 Y   ax2.yaxis.set_major_locator(y_locator)
- W& A) H3 Q/ |5 G   plt.ylim(0,100)8 G! E5 u& n& g1 H1 v4 S
   ax2.bar('sound', loud)
/ B) B+ E9 Z8 V# G; n% R' y5 J  d   ax3 = plt.subplot(223)
- |$ ?7 V6 |) G/ g7 @$ o   ax3.xaxis.set_major_locator(x_locator)" G4 N0 T$ z# U. i+ r
   ax3.yaxis.set_major_locator(y_locator)" F' R' P  @) `/ v% g) v
   plt.xlim(0,100): ]# u, Q% ~7 A  F1 ^+ M
   plt.ylim(0,100)
+ h) Q, n) E# F3 t   plt.title('聲音、音量散點圖')
& R' j4 g' G% |   ax3.scatter(loud_list,bri_list)
7 c1 Q2 u: U. p5 H& f3 w   ax4 = plt.subplot(224)
$ w! K0 R; K, _  e4 J3 \6 m6 h. a   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
) N2 g, p8 r6 J7 X9 Z   plt.title('童芯派電量')
" U/ U! l0 _. @  k9 K   plt.pause(0.2)
8 `! c% \3 }7 q4 x" s   plt.clf()
' X) ^$ V( p5 _$ \+ ^! V   if cyberpi.controller.is_press('a'):2 q9 B0 M! T. C3 _* X
       break
2 H' f# Q, E# d, U( |   if len(bri_list) > 500:* U% n( ~( X. J5 V' W
       bri_list = []5 Y5 H8 s/ V' M& S
        loud_list = []
& l" x" O! u! b$ W) p
0 Y+ F( R5 T/ Q: _" u1 ^' o/ X7 u+ w( d5 z

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-2 20:43 , Processed in 0.028480 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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