圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8373|回復: 0

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

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

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

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

/ ~  o; Y( O* ~- Q5 [- @7 M! M
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。6 ^- _" [2 D# I* }' ~
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    6 l* e: z+ ?2 d' n
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。  d1 v7 Z) U/ Z. N

1 }2 p/ r- N/ Z" a0 T
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    2 G5 p7 U5 d% W1 _# e

# y/ T' [: h  W& x2 G+ J$ a
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。$ {6 ~5 v5 W1 w6 x( c$ A" O2 U  ]

$ q7 {% A1 C. a
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。* g! k! g8 J1 }

- _! D) t0 v/ }$ W8 h3.童芯派第三方編輯器程式設計準備
' V1 f/ l+ b6 a, O
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。. v. `9 f) S9 H
" y  s) g9 ]  W& j7 B
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    & m5 [* ]1 |5 p1 O3 h, u5 n. P% z

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

9 q2 H+ X" Y! ?' ]) Q
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。( X+ `0 U: s' N+ r$ ?

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


# Y0 F( H+ ]+ A
查閱cyberpi API文檔見:童芯派API文檔

: }; }/ ]% }) r  g, H
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    / k, ~- I* `- P# Z, v
" U2 C9 |: H* M1 k2 q6 h* _
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

0 F; I/ L, q  n. L( i$ ]7 O, H3 B5.一些程式設計案例
8 C, V) K0 Y2 |$ P1 v- Z童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
. g! N: T( \6 a3 `& v7 T
功能介紹:/ D# M( J( w) c! N; g) U- w) P
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。2 M4 m  V) Q+ ?- o6 K
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
) ^& u3 J% i5 j+ ^結合藍牙模組可以實現無線滑鼠的功能。* U) ~1 n& a- }. c5 z' t3 P
% p/ o8 Y8 k' c, u$ e& H
from pynput.mouse import Button,Controller8 X, q% a! @" @9 B. u! I( O
import cyberpi- k& u7 X' d, ~9 \2 ^' }+ h) ]* x
import time6 ?+ l4 f( r& D. o: A% ?; |% I

3 z" v$ B2 @; r# h( Tmouse = Controller()
' }0 I* u- e' \0 b . w! S: ^$ x# X+ p  _0 I2 d& c
while True:5 V9 w7 ~6 y0 G9 E
   if cyberpi.is_tiltback():
+ i/ B+ o( o1 J$ a+ S       mouse.move(-3, 0)
# @, h4 ]" _* C% f       print(mouse.position)) z" q& Q& t/ A  Y& q( ^0 g4 {$ t
   if cyberpi.is_tiltforward():: z% Q; X; s" ^6 Z  v3 N
       mouse.move(3, 0)! o% h: q6 F& U% Z: M) ~) A7 N
   if cyberpi.is_tiltleft():' L9 Y7 X5 |7 s5 A6 M9 j
       mouse.move(0, -3)
. m1 k6 @5 l. L, k/ f% H   if cyberpi.is_tiltright():7 Y4 @: I; z  `6 \& s# o
       mouse.move(0, 3)
, W# `" l' [6 n6 f  r   if cyberpi.controller.is_press("b"):* Y5 V; N* G! }/ l  e: d
       mouse.press(Button.left)
$ t" \; z; m9 u/ k& [       mouse.release(Button.left); w  M# R. Y3 \( v
       mouse.press(Button.left). B/ k* p5 f0 Y: o: M& `
       mouse.release(Button.left)
' V9 h' v- Y; ^0 v   if cyberpi.controller.is_press("a"):/ J7 n3 {9 X9 ]4 m) X! j
       mouse.press(Button.right)
& F/ f! W$ Q& S1 Z4 }# w       mouse.release(Button.right)
  y  d8 B! s) Z9 `. ]    time.sleep(0.01)
2 x# q5 i6 G, A# ^2 u- T
6 ~8 d7 X+ x' ~2 Z( X8 L0 |5 V) [, p
! ?$ P2 }" }7 ^# a* k
語音打字器

5 J$ M# Y. r/ g6 {$ @! c* {4 w+ M功能介紹:' z) R7 S/ s$ k, q; G; ]) h# Z% ~
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。8 E- Z( \4 k' U$ O/ W# _( m
將語音辨識的結果通過pynput在文檔中打出來。
+ D2 P# t, j) y該程式目前只能支援英文。  Q" K7 j3 A/ b

3 f# O2 y3 |- I" m& N' [import cyberpi
8 Q1 c; G3 ~# h# w, ^+ \7 F/ [2 p# rfrom pynput.keyboard import Key,Controller
" E& R$ r' f# X4 S+ D  x  f1 Z2 ximport time$ [" U- D2 l% t' d; y1 M4 I

6 W! ]9 _% x( Z$ X% R* bkeyboard = Controller()- p0 G! q3 _1 Q+ u# |/ O
cyberpi.console.clear()
! X( j6 v7 H7 R) vcyberpi.led.on(0, 0, 0)
* W9 q* }! x# R# zcyberpi.set_recognition_url()5 a, n7 v' t1 X6 a) C1 l
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得: i. \1 R6 y; M5 t, L# g
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
6 Q2 C8 {4 s4 L4 ?  p7 I/ _2 R3 Owhile not cyberpi.wifi.is_connect():
' T6 i  h# {: k   pass8 W7 d& a$ n0 B6 v, b+ T; G
cyberpi.led.on(0,0,255)- f. f  }% h  j
cyberpi.console.println("WIFI已連接")
, x* J. M4 t* i: g. c  \' O! ?cyberpi.console.println("--------------")
) b0 s, h* j1 M6 [; \  X* R$ |. Scyberpi.console.println("按下A鍵開始語音辨識")
( Y, `5 r8 \6 H& L4 _: s" Dwhile True:" g& K( Q& l3 U8 a1 P
   if cyberpi.controller.is_press('a'):
( G; |( m: ?2 s% d& W4 T  w       keyboard.press(Key.space)2 M% v+ E2 e. B$ P' ~# p
       cyberpi.console.clear()
5 [; z3 H: P) z) {3 _9 a       cyberpi.led.on(100, 0, 0)' k* M% W2 C7 U( ?9 d0 ]$ u
       cyberpi.console.println("開始語音辨識")
7 Z% t  @# }8 m3 c0 ^3 E       cyberpi.audio.play("switch"). `/ i$ O+ m  r! z* F9 p
       cyberpi.console.println("--------------")
4 v. Y% c$ ^' Q/ A       cyberpi.cloud.listen("english", 2)
; F, U. M# D: Z) q' Z8 ?       cyberpi.led.on(0, 0, 0)
6 `; w7 m( a3 Q0 _) C       say = cyberpi.cloud.listen_result()2 m, H! A  C2 H& F/ M, x
       cyberpi.console.println(say)/ x: v1 ~8 x: f6 c6 n
       cyberpi.console.println("--------------")% D. U' Q5 y% @; _( M& H
       for i in say:
% w2 M3 u7 `) E% X) I            if i == '':
$ p  x( B) t9 B. O  s* N) g; j4 W                 keyboard.press(' ')! ?7 @) q+ J) |
            else:" i1 g8 H2 D) Z
                keyboard.press(str(i))6 k+ q) |; u# ]& C
                time.sleep(0.03)
6 \9 z+ W% A) N; k) N' ]. t
$ ~6 y; g' h* O/ M
matplotlib音量柱狀圖

! I" m# B% E" y4 {4 M! o% D, qimport cyberpi
7 I2 d+ B" A+ b" d+ q8 timport time4 K! P( w8 c$ A
from matplotlib import pyplot as plt, c/ h9 M7 b' l

& _$ R& p; w9 n1 Uplt.rcParams['font.sans-serif'] =['Microsoft YaHei']# Z. B. o7 ^  t; r" s. F3 ]* M# k$ Z0 Q) x
plt.ion()+ D+ E( F! x6 G7 h  a+ ~

( z& W2 |3 Z* @& y- R5 X3 {while True:
! F. G0 d0 G: k( J+ C   loud = cyberpi.get_loudness()
4 Z, B1 j6 U) w0 X   plt.clf()
$ c# y8 e; ^: S0 E# G; p+ K   plt.xlabel("數據名稱")6 D2 E# Z0 r3 Y' c3 v
   plt.ylabel("音量讀值")( a. {) P* s" h" x9 r1 k* G' n  b
   y_locator = plt.MultipleLocator(5)
& G* n' Q% @$ i3 v2 k   ax=plt.gca()) Z% e! I: E( w* G( N" N$ o' R& _4 m3 L
   ax.yaxis.set_major_locator(y_locator)
3 C" R( n  L3 Y0 m   plt.ylim(0,100)6 R) K4 F* X7 {( q" Z8 i0 L
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')6 X! g5 M  W) _. l0 M9 U6 p- x2 B
   plt.title('童芯派聲音感測器讀值')8 d4 h  k5 N' S$ V7 O5 ]; f6 Z4 p; e
   plt.legend()( h2 x" L0 o, U2 P; E* G
   plt.show()
- |5 N: R+ |" ]( E    plt.pause(0.01)4 q8 [& c7 K9 b$ b2 |0 k( I

2 ~; w7 F7 e% Q$ x8 o3 V- l3 [0 \  T& f2 C# d4 ?, ~
matplotlib 多圖表顯示
6 Y  d3 }- n& A; r- t4 ?9 B

9 Z  U' U$ \; M4 Afrom matplotlib import pyplot as plt# J+ g8 G/ {! F
import time( y) y0 ?/ ?# t, v
import cyberpi: Z" r' o6 \7 b- X2 N
4 b9 r( v: R4 |7 v0 G. h
loud_list = []
& k& z+ W5 L3 X/ k" ?bri_list = []' n% _) P% R" c/ z% K9 t; J$ Z
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
. G. q6 i: ?+ e' u9 o$ Nplt.ion()
0 C2 f# E0 E* r5 _" I1 J5 C) Zplt.figure(figsize=(10,10))# {3 t  C* I) C" H0 t
plt.figure(1)
( E+ P1 {2 c9 Y% \x_locator = plt.MultipleLocator(5)
4 d& ?# ~* M# s9 c8 j6 ^0 v: ~y_locator = plt.MultipleLocator(5)
. w- v: z: Y9 [% g9 i) M' pwhile True:
1 Z4 h" f* ~' r   loud = cyberpi.get_loudness()
1 U& z, ~1 n; ?% Y& c* L* |   bri = cyberpi.get_bri()7 @; q# U$ H$ ~3 w7 I
   loud_list.append(loud)) k: [) y2 f0 @) a  W
   bri_list.append(bri)
$ s. z; s+ i  u; p   battery = cyberpi.get_battery()! S3 e. H+ R2 H& Q: Q
   size = [battery, 100-battery]
. k6 ?3 X# n' t   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
: j9 {0 v) o) M   ax1 = plt.subplot(221)
/ [% g3 W7 l- R" E6 @, e   plt.title('光線折線圖')
1 J7 E  C9 R5 z7 b8 v   ax1.plot(bri_list)7 N5 W' Y( f( Z. k
   ax2 = plt.subplot(222)/ i- G: P: [" D/ {' k/ f
   plt.title('聲音柱狀圖')/ [& f$ N/ e% d" H# ~
   ax2.xaxis.set_major_locator(x_locator)
# h/ k# {% \4 e7 \: f  q+ S5 w   ax2.yaxis.set_major_locator(y_locator)
2 @1 Q) r, q# N5 p5 T; p% z   plt.ylim(0,100)  s5 y" V0 Z& W1 F3 |( {% n2 y* V5 G
   ax2.bar('sound', loud)
; @2 P! w) n2 x   ax3 = plt.subplot(223)8 d+ p  d5 @9 ]9 r$ K
   ax3.xaxis.set_major_locator(x_locator). r8 I, r6 M2 M* f
   ax3.yaxis.set_major_locator(y_locator)
% Y0 p4 T# ?0 E' Z- ?2 c' }   plt.xlim(0,100)
  I% V5 `  c, I$ D$ W   plt.ylim(0,100)
& m' }- q, _+ o) v% P) @   plt.title('聲音、音量散點圖')8 A$ U# p, n) A) z9 c* G
   ax3.scatter(loud_list,bri_list)
8 Y3 D/ G5 l  X   ax4 = plt.subplot(224)
# Q) F7 u/ X" r# |/ |% c( ~' a   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
5 P* S. T$ j3 H* M1 l   plt.title('童芯派電量')7 i2 I7 V2 D' C
   plt.pause(0.2)5 H% L% @% n$ e. b
   plt.clf()8 ?; o# C* c- D) ~: i
   if cyberpi.controller.is_press('a'):0 j! V! h3 n: R, y2 o3 C
       break2 B( d& w( f# E' `# s
   if len(bri_list) > 500:
9 v. V. ^; ?# ~% Y) w; M) [/ h       bri_list = []' r# r$ ]" Q  O# B, ~
        loud_list = []. {0 [7 I* P% O; Q5 n% p; p

3 l: [' p- I# M- T8 J8 \9 M

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-21 07:06 , Processed in 0.025883 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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