圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8416|回復: 0

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

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

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

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


- x& c8 k% o7 D
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。& X. g+ |1 g/ Z. g8 C' |; L
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)* ]8 y2 n6 P* Y: u$ D0 ?
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    : v2 a& q- F" Y* E! X9 O

0 m3 |8 h/ ]% j. P
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    & a6 j9 A& H6 G6 J+ q4 |& A4 L

) ^! r( Y; a4 \
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。; r% g7 Q4 Q3 c4 F9 s! |9 L
/ M! \2 P/ m7 {0 b$ u
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。- N1 {2 {6 o1 r) w4 B& O/ K$ q
2 e9 v4 d' X- @. K/ _6 P7 u8 Q
3.童芯派第三方編輯器程式設計準備8 R+ t3 Z( ^0 l- {
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    1 i# m3 ~5 G6 o2 b) e9 |" n2 k

, L8 l% d7 {* [
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。, K, @" t) C1 C& O+ ^9 H

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

: s: E- o- v. O- _
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    8 w% s+ M; z7 h6 P0 Q

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


* c) T: T4 n& B% ^- K4 |
查閱cyberpi API文檔見:童芯派API文檔
1 O9 {+ w) Y/ N. E- c# h
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    - F/ L! S2 ^# s- x- f: x6 u. Y

7 [5 J1 `. z4 g! u$ ~
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

7 K6 t" v4 `, R. |" L5.一些程式設計案例( d8 u5 x5 U/ h8 z: H
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

$ m; {3 @8 D0 Q7 Q. N2 W8 X' B- o功能介紹:
+ q: D8 w' n1 n6 m$ M8 Y* }( W% H利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
; ]+ ~2 L3 a+ a% W/ d6 r3 i通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
% n+ |6 r- }7 d. Y1 o& y6 M, b' f( L結合藍牙模組可以實現無線滑鼠的功能。
" p- z5 ^) c, a# i# c: S. r  I7 f( H- v: S+ s! O, H
from pynput.mouse import Button,Controller; T3 T2 [8 h3 p8 C$ ?7 d
import cyberpi
7 B7 k. |. L! c( r, R1 `6 t" T4 yimport time
7 C2 a+ m' E* g' d: f, J2 I% o
2 ^+ K( |8 I7 Y4 Z+ k; ?mouse = Controller()
9 |2 o5 A- G7 x0 h% a$ \4 o
" w+ w& M2 J$ L0 S& Q3 zwhile True:3 K/ @1 n8 E2 J4 K5 w- j
   if cyberpi.is_tiltback():
- N* B1 n# h1 Z7 F2 x2 y5 H       mouse.move(-3, 0)
& g) |4 M: Q! h5 W7 o       print(mouse.position)
: X$ n- p# }, P0 t" Y7 F" W   if cyberpi.is_tiltforward():
3 t" s8 K0 K+ {% K: q6 V8 t: J1 Q0 n       mouse.move(3, 0)
$ x5 E) i2 d( O   if cyberpi.is_tiltleft():3 f7 I( z% i; \! @* i) ?
       mouse.move(0, -3)
+ J; {/ M4 S7 A0 u) U   if cyberpi.is_tiltright():' a( O5 T$ x* m
       mouse.move(0, 3); X5 i& _! z; e1 h3 M$ o' @0 z
   if cyberpi.controller.is_press("b"):
8 \0 L3 ~/ |9 u. i1 S# O, {       mouse.press(Button.left)
! M: p$ q$ C$ i  s& ^       mouse.release(Button.left)+ X2 N! A) l0 N9 A' t9 \
       mouse.press(Button.left)! F/ e2 `$ I  y4 S- E
       mouse.release(Button.left)
9 ^# U9 n! n' ]- ^' t8 i+ T+ m   if cyberpi.controller.is_press("a"):
" ]. t% b/ U) R( T+ L1 t       mouse.press(Button.right)/ F7 Q) {6 g; u7 {( F* l9 h) F; ]  l
       mouse.release(Button.right)
# ^4 G5 P7 G9 f    time.sleep(0.01): @4 k: N, w8 s$ Y4 |0 A2 k, g
( b, z# t4 C6 P& _: {

% c6 K* ~6 ]/ X  c
語音打字器

4 U+ a9 f' f, D: p8 J- ?4 y/ ]0 p功能介紹:
) ~  E! D, O/ _" w# @2 `利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
& _/ C4 p% T) p% H3 S. N& L將語音辨識的結果通過pynput在文檔中打出來。
1 k# J0 G7 y  d$ w5 y該程式目前只能支援英文。
7 r% r/ @4 f1 ]1 R, t7 u
2 b  }  W1 `4 Z4 o- I: K$ a, Timport cyberpi7 T+ I$ O* v. f7 j
from pynput.keyboard import Key,Controller9 o5 B! f3 m: D) B3 d) p
import time
5 _3 m: A- E; r& h, c
1 z1 Z  s, |+ a1 u3 _$ W: l& H0 [7 L$ Hkeyboard = Controller()0 r; A0 v& {6 i  Z5 ~
cyberpi.console.clear()
/ r5 y3 o2 G# U4 l+ ~; x$ u' ecyberpi.led.on(0, 0, 0)$ O7 N% ]+ O1 n7 Y! {
cyberpi.set_recognition_url()
# M1 G( m  z, A% A" t3 O% X1 s# hcyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得6 j- B5 Q# b1 S9 z8 B6 r
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")' y  p0 v( n7 H/ g7 |  G
while not cyberpi.wifi.is_connect():- E# ^3 i/ E- p' K
   pass
4 V. z% l5 y! B0 H( V* Tcyberpi.led.on(0,0,255)
# `" R* P9 T3 P5 r- ecyberpi.console.println("WIFI已連接")/ T' j) r& M: t1 b. ^- K+ Q
cyberpi.console.println("--------------")
0 G8 _# c/ y! w8 a# ccyberpi.console.println("按下A鍵開始語音辨識"). s8 m8 u5 i9 |6 Z
while True:
6 @3 N, @/ R% T+ A   if cyberpi.controller.is_press('a'):/ {1 C7 ~/ N- ^* V
       keyboard.press(Key.space)5 a* z) V" {4 K8 m( A
       cyberpi.console.clear()+ M$ D/ }; S( j' Z% l+ P
       cyberpi.led.on(100, 0, 0)6 W  v4 e- I" G1 `1 c: k8 F5 U  J
       cyberpi.console.println("開始語音辨識")' {, ^7 B) A# S) P) _* G
       cyberpi.audio.play("switch")! K) v) @" A' U1 Y
       cyberpi.console.println("--------------")! R  k* X( R* A4 ~/ y  I) M4 H+ m
       cyberpi.cloud.listen("english", 2)4 [# G% U0 Z2 I6 R/ r. A
       cyberpi.led.on(0, 0, 0)
+ K2 Y; h& G4 G" t% \       say = cyberpi.cloud.listen_result()
" X% z# N2 C0 j, \7 _! [; j: S6 n0 @       cyberpi.console.println(say)
3 p/ J0 y# O/ E# ~. Q+ q; @$ P( e" C       cyberpi.console.println("--------------")" x8 d% r; V1 s! v: p( [
       for i in say:
( _% _7 J0 E  n            if i == '':' s  h, P/ Q2 E# N
                 keyboard.press(' ')+ ~  }7 N- ^0 _# d6 m7 p' \6 C
            else:1 s6 A+ k% |6 s1 _0 F2 }0 b
                keyboard.press(str(i))
! q8 N2 T0 P) @# N  \7 c# ^( W                time.sleep(0.03)  M  y& D7 h% `5 r2 r# \
9 T/ h* C1 A5 e6 w2 t3 L
matplotlib音量柱狀圖
- O' Q6 ~; y0 N- W
import cyberpi
% v8 R. M4 c$ g: j  cimport time# {2 H! p9 C/ O/ c% O
from matplotlib import pyplot as plt
1 X* j$ A' o, i  t' W) w# q+ S# Q ; q' U: x9 ?& u, S0 d  Y9 b
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
6 v' O1 g4 S& Q7 s' ]) z9 W% aplt.ion()
8 ~* r% r3 i  b, _9 Q! J
' @9 h8 U7 ]7 p4 B6 u& Vwhile True:
4 H" F& E  L' b- {/ \   loud = cyberpi.get_loudness()
# k$ _8 Q( `6 O& F- `! U" J, ]- A, h   plt.clf(), b3 I6 q2 V1 g
   plt.xlabel("數據名稱")
) c. o6 g. n8 a   plt.ylabel("音量讀值")$ n( l; ?5 r3 o  A
   y_locator = plt.MultipleLocator(5)
6 k  t6 X9 y4 P: x   ax=plt.gca()# j6 h9 q! r# |: C% I9 O
   ax.yaxis.set_major_locator(y_locator)
: k, w' Q  R4 c2 Y- w   plt.ylim(0,100)
# ^/ {3 A* v9 c( F# G% Y5 j   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
. s' t1 t0 e8 A8 ?   plt.title('童芯派聲音感測器讀值')
7 F) ~  z5 }- |3 e% f   plt.legend()+ a# h% V( _) l; G5 ~
   plt.show()
2 n8 E" @! @; X+ Y3 d2 [2 }' o8 M4 R4 G    plt.pause(0.01)9 L! ?' Z  L$ e; K1 a* {  n

* Y3 E3 q: H! K$ k
8 H$ {, z- [4 z8 @$ E# {( amatplotlib 多圖表顯示
  P- w# I1 z0 |" y9 D0 y

; d. i5 ^4 D7 ]7 R$ nfrom matplotlib import pyplot as plt
3 k) Y* `7 O. h7 ?4 {+ Eimport time
  T3 }5 E9 D2 L9 S+ x7 Gimport cyberpi. ]. R8 |# K2 L, j0 X0 T

, r& c. p% L) _6 ?& V. Qloud_list = []
: W5 h* }% S" g* @8 y# l. Y, mbri_list = []
# x+ [/ U# l0 ^+ ?plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體+ i1 c3 E" ~+ H) s& `5 w* C
plt.ion()0 }# ]0 k! q6 m. W8 h4 y$ x* A, _
plt.figure(figsize=(10,10))+ S* `% ?6 F8 c2 q) U9 m
plt.figure(1)4 H- }* h! }  @. i) J: O3 f5 s
x_locator = plt.MultipleLocator(5)
4 m& V: z9 `3 j; M6 _y_locator = plt.MultipleLocator(5)3 q7 u1 Y2 B& l4 A$ O1 t
while True:: G, R  Q8 ^. Z1 \; t9 r
   loud = cyberpi.get_loudness()
  H6 u; F$ C/ o2 C) `. v3 b3 n   bri = cyberpi.get_bri()
6 E; O* c+ |, M( Y+ X   loud_list.append(loud)% {/ ]' J6 J/ g+ L" d3 [
   bri_list.append(bri)
6 i1 E/ X! R" @* E   battery = cyberpi.get_battery()- m2 |5 A- h$ _( O: ~
   size = [battery, 100-battery]; g- l" H1 ]. y, ]. {1 W" N0 B
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
/ Y. Y* P3 p/ {; m   ax1 = plt.subplot(221)
9 |4 g2 g! t+ o) c/ o" T% Z   plt.title('光線折線圖')" R, o0 g2 m. ^6 `# e+ W! T+ @) l( }
   ax1.plot(bri_list)
) s1 c" c, n6 `" s; j& b5 m' e8 r   ax2 = plt.subplot(222)& o0 @( O) n7 L. U  A/ l( K  M
   plt.title('聲音柱狀圖')
. t3 O, ~3 {0 T# k& a1 T$ s% Q3 G   ax2.xaxis.set_major_locator(x_locator)1 c9 I& M6 V1 z. [$ s0 {) V; S
   ax2.yaxis.set_major_locator(y_locator)
0 _( x/ Z" y# v- {   plt.ylim(0,100)
# \$ n8 Q: P# @2 @2 n2 v   ax2.bar('sound', loud)
0 D; c/ @6 P+ V" H# E   ax3 = plt.subplot(223)) w9 k6 ]% L; O4 H. w- D7 e8 f+ C
   ax3.xaxis.set_major_locator(x_locator)
2 y' S4 X( @: O" _6 ]5 ~( Z# ?   ax3.yaxis.set_major_locator(y_locator)
; y1 ~" f; W& r   plt.xlim(0,100)/ j% C  ?4 ]& X* e( S
   plt.ylim(0,100)4 ~4 m: U1 p6 e5 B: X7 `
   plt.title('聲音、音量散點圖')
8 E8 E& A3 P  u1 i* }( d   ax3.scatter(loud_list,bri_list)5 |+ k7 C' d9 T# f; n4 ^
   ax4 = plt.subplot(224)4 x- R( b8 z9 Z% f
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
# A" Q) X% q+ b4 T: ~& t$ S   plt.title('童芯派電量')& j# u# ^: @8 c4 p, \; J8 k
   plt.pause(0.2)
- F* C7 a! U; p$ e& i5 Z   plt.clf()
/ e  ~/ G$ Y  |   if cyberpi.controller.is_press('a'):) k. r* R) n& A2 N
       break$ u9 L! z  w- }
   if len(bri_list) > 500:
( l/ n( v* T. b1 N' l( S; t       bri_list = []2 B1 N8 j& J( V; C& [1 _  `
        loud_list = []
6 K" Y  A3 t& C( L8 k; t, _+ i9 V) Q7 t5 b* ^$ c

本帖子中包含更多資源

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

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

本版積分規則

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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