圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 5956|回復: 0

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

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

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

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


! k& Z. P0 o2 b
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。7 U1 Z! _6 c0 Z3 t
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    : u& c! F3 j$ m. {% p, E
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    * Z  {, j" h- T: v+ N
1 z0 Y5 i) H- U0 H0 X7 s4 y6 Y: q
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)( R- ^- }: N( M  \  z  N( l5 q

) D" Q1 A2 S& k. Q
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    . g9 @4 F8 M$ r7 {, m8 i! P( j7 Y
9 H* E% N, `2 X. W1 u) S
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。& }% q1 u! t# o- o, j# q

# e: O  D" T$ V) {  P2 g3.童芯派第三方編輯器程式設計準備/ f  F. G: G& @. D9 ]2 v
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。( Y  \  f! t7 U! ]

& w7 A: ]9 [6 p) @: S
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    ( }8 h  }$ Y2 M* P% A2 N

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

4 j3 u9 p! y/ D1 e  R, x
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    2 t' ]6 l( e- J: ~" V: i' u

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

: f% M! g& A6 r7 q4 i- ~: b) ]) Y
查閱cyberpi API文檔見:童芯派API文檔
& N) k- x3 A* e' [& \
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    & Q) j2 f/ x% y* s) |4 W  j
% ~" o; |3 B* a6 Y4 }  `! h+ r
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
# R, I" T' U5 x* [. p
5.一些程式設計案例- P# b2 L" z) y" G0 K" E% p  D4 w3 V5 j
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
1 p; [7 L& E) _' b# W( }
功能介紹:6 E3 _7 d7 n, @; `5 e1 W
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
, [7 x4 n6 ]0 A1 g3 G通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。$ S/ J) o( Q3 |. h
結合藍牙模組可以實現無線滑鼠的功能。
* ^( [$ i8 E# `
% y7 b  d5 P( Z. Xfrom pynput.mouse import Button,Controller& T; N+ J, P# K. q; t7 ?& A0 z
import cyberpi
) G1 E' t) w8 ximport time
$ V8 o0 a& u, a: v 2 l  X+ `5 N' m% o) @
mouse = Controller()" z* E) q3 q) m1 S! a% g# G
4 n% ]& ~0 Y$ d6 [8 f& Q
while True:
+ z8 m. v, \9 i/ ^/ P* g   if cyberpi.is_tiltback():
3 q1 v* k1 X$ V7 `" m. l% G6 Q* s       mouse.move(-3, 0)
0 \( e9 I, ?, i* d& ~5 p9 `       print(mouse.position), B& W, R" R2 j2 O7 g' L
   if cyberpi.is_tiltforward():, h- e7 N7 E4 l7 ~
       mouse.move(3, 0)% ~, s: `3 I8 @$ Y  I/ J
   if cyberpi.is_tiltleft():
6 c# Z# ~- g% `0 U* _5 d  _       mouse.move(0, -3)
" K& f( p/ K% D* P1 E2 |# u9 N   if cyberpi.is_tiltright():0 L7 J) ]; Y4 |, w  Z4 x
       mouse.move(0, 3)" u7 ?) [" m* @( ]" W' n7 j
   if cyberpi.controller.is_press("b"):1 [2 e" U+ ]2 `/ V8 G$ G
       mouse.press(Button.left)- [' d* l5 j8 t' M" L) _
       mouse.release(Button.left); ]9 h# Z) [! E( B
       mouse.press(Button.left)
& Y7 J" m  H) M2 O% O       mouse.release(Button.left)
& ]2 ~7 c4 z$ P   if cyberpi.controller.is_press("a"):
" u+ k1 Y* q8 @  I       mouse.press(Button.right)
" A* W' w. z: @$ ?9 v: _. j8 y: K# a       mouse.release(Button.right)) W% M- ^( Y& [8 e4 f& D) R' y
    time.sleep(0.01)
: T# X. Q2 x/ b6 @9 S. J' r; v, v2 w
2 n; R7 o8 Y4 g: A9 f3 U
語音打字器

8 m2 i; G7 D% T; _功能介紹:( v1 N# O4 n/ [3 ]) a' r
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。/ U5 Y  ?6 h3 M+ R9 J# l
將語音辨識的結果通過pynput在文檔中打出來。
  l; _0 B6 @8 f1 A該程式目前只能支援英文。
1 N: R1 ^, N+ o4 U
1 X0 R. @0 R  T: `  M1 a, dimport cyberpi9 \6 }9 v9 v. E; \. o7 R8 f9 Y: I
from pynput.keyboard import Key,Controller
  n& h# i. m3 cimport time/ J  p( n5 o, E( e! S0 g
. [4 ^' _4 Y( }/ v" ^, P
keyboard = Controller()
0 I! C0 P3 ?  l9 s3 ?cyberpi.console.clear()
) w! }( _3 M, R9 y# n6 N, i- wcyberpi.led.on(0, 0, 0)- U/ T( @& i( p6 J; p
cyberpi.set_recognition_url()
8 d8 G) H" X1 _9 Z# scyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得( x$ g/ S9 s9 n
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")3 M5 e- k2 ]) W
while not cyberpi.wifi.is_connect():
/ k( B" H% K: {: m# b* l   pass/ u+ K6 O: ^# `0 o! e+ k8 @% I- H5 a& n
cyberpi.led.on(0,0,255)( K# p  Z4 E  X  L& j8 k
cyberpi.console.println("WIFI已連接")
+ n& [+ c- X% f7 C1 W! \cyberpi.console.println("--------------")3 W. d. v8 O. R$ i5 w  |
cyberpi.console.println("按下A鍵開始語音辨識")
7 U8 v  X' X" zwhile True:
8 T% X3 G5 R( ~4 E# b! y3 J. k- S   if cyberpi.controller.is_press('a'):
! S7 D, `  k) I. a  V' r       keyboard.press(Key.space)
' P8 o4 ^( g. r% W: |       cyberpi.console.clear()3 K5 f. f0 p. q: k" ^: G
       cyberpi.led.on(100, 0, 0)
$ m# R/ J  N$ `' ~% ~       cyberpi.console.println("開始語音辨識")
# }4 j1 b; z9 m. j3 H* [+ q) s       cyberpi.audio.play("switch")
4 }; |- S- F/ M       cyberpi.console.println("--------------"). F% q; w9 U+ @( c/ C% k
       cyberpi.cloud.listen("english", 2)
% r$ Q( P. x! a9 r, s) J# `       cyberpi.led.on(0, 0, 0)
+ u- ]; W) k; q. p$ X3 q6 T5 l5 a       say = cyberpi.cloud.listen_result()
7 m+ P2 y+ A" [0 N( X" F- [) k0 N       cyberpi.console.println(say)
% m$ j7 c: N  n% `6 q! O  h3 E+ F( G       cyberpi.console.println("--------------")- \2 Q' w. |  p$ Y2 y  j: q( @9 Y- r
       for i in say:0 j% v& ^5 m% L5 w3 d
            if i == '':, E/ D) G1 p. y' }' R& O* ?, i  z
                 keyboard.press(' ')
+ b& s2 [) M, X2 U+ [3 C+ C4 B            else:0 e0 l- S: Z% q* R, u
                keyboard.press(str(i))' I+ L" m4 k3 p3 o- E3 i# `' F0 y2 Y
                time.sleep(0.03)0 K5 g& E5 [) [  Q& x

, \. r% H/ f" s9 ^2 W$ Y/ nmatplotlib音量柱狀圖

) n) c' a, N. t/ @import cyberpi
  o8 a  m1 H+ w' oimport time
: x" n: ?$ N2 `% ]+ n2 D: ufrom matplotlib import pyplot as plt
% f$ t8 i/ q: o2 p' ~0 ?' L) `
4 n( G/ C- ?) l  _plt.rcParams['font.sans-serif'] =['Microsoft YaHei']1 ?9 t5 `# V9 t2 C) p
plt.ion()
7 X) x# U" M# y3 N3 h6 I& r . c" H7 U& Q& \+ e* ~
while True:
/ e3 t6 J+ h" O  j6 {4 g   loud = cyberpi.get_loudness()& H8 \3 h/ A! I' S3 D5 d
   plt.clf()$ m6 n$ d: n& N9 W
   plt.xlabel("數據名稱")! X- J% e, y1 `9 d0 a# H
   plt.ylabel("音量讀值"). F) V: ?/ D7 ?  C
   y_locator = plt.MultipleLocator(5)8 L8 Y0 q4 v+ Z$ {2 C$ B. V
   ax=plt.gca()+ o3 ^' |% N1 B( }7 i+ \
   ax.yaxis.set_major_locator(y_locator)
# o" b; w, a, R& W& u   plt.ylim(0,100)
5 ~) N0 P9 q$ \1 [% |) E! |0 m   plt.bar('音量', loud, align='center',label=f'溫度{loud}')0 e0 S6 u6 c4 w3 u
   plt.title('童芯派聲音感測器讀值')" |* f1 J: Y7 \. y5 g) f2 Y9 q
   plt.legend()
' F  |( l! [+ {% Z" k' z   plt.show()9 T& i. s/ I/ l1 A  I7 j: K7 H
    plt.pause(0.01), P( h! {0 Q5 j

4 ^$ f2 q& Z9 W: l% X3 Y5 t: S; Q3 N' L) N4 m, Y5 v% E
matplotlib 多圖表顯示
" e8 E; ~2 ^6 W, J# X

0 g, t, o, H& ifrom matplotlib import pyplot as plt2 R1 b9 O  e, ]  s5 {
import time. O- }3 D; [( n
import cyberpi
7 L/ ~7 f1 F2 U7 x) S0 |$ U
9 R- O; A) [: D, V' u9 j: Floud_list = []
; a$ `# k+ I2 j2 y0 Nbri_list = []
6 v' g3 V9 |2 V8 j" @plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體7 V4 e$ H  ^& t: U
plt.ion()
7 r: t; F9 n. L5 L- ?plt.figure(figsize=(10,10)); d- T0 \* e( s8 C
plt.figure(1)
% @3 D6 R) R9 b0 ex_locator = plt.MultipleLocator(5)) J& h# \8 q6 P. l% _% K/ {
y_locator = plt.MultipleLocator(5)" R% v# |1 W) e: J
while True:( V' H- V, y5 {7 f3 h# k
   loud = cyberpi.get_loudness()7 ^1 n! H/ W1 x2 _6 W7 G! P" _
   bri = cyberpi.get_bri()3 t+ Q! W; M" T% M3 G6 i
   loud_list.append(loud), R' [. Z! U1 N
   bri_list.append(bri)
% I9 P# T5 v  Z3 h9 t8 U   battery = cyberpi.get_battery()$ O/ F, L+ y( D: w' `! B, S
   size = [battery, 100-battery]: U. O) \7 J. j5 ?7 f( S
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']3 I5 s: T/ _2 h% m
   ax1 = plt.subplot(221)8 L8 T9 _2 _0 }5 {7 B3 ^
   plt.title('光線折線圖')3 @! x: h6 v: `5 E& m
   ax1.plot(bri_list)- ~, L1 X/ m6 S. R( n% [
   ax2 = plt.subplot(222). U# v. g* s+ Q7 D$ z8 x1 m
   plt.title('聲音柱狀圖')
9 H8 f; C. F# x/ L4 O   ax2.xaxis.set_major_locator(x_locator)
% z1 Q# U( u. L8 O7 @  _. w' M$ T   ax2.yaxis.set_major_locator(y_locator)
1 _3 c5 e+ @5 D/ v9 z1 Z- h   plt.ylim(0,100)
+ f* n' g9 _% G! ^' q2 O   ax2.bar('sound', loud)3 u0 ^8 x: j: F( Y; W
   ax3 = plt.subplot(223); `! h, w, ^$ G8 F( x( R
   ax3.xaxis.set_major_locator(x_locator)
* ?5 o* S9 P2 u& ?   ax3.yaxis.set_major_locator(y_locator)" M3 x# C# o) i
   plt.xlim(0,100)
# D! M) m& t' c* X   plt.ylim(0,100)& Z! v) a, T' _# F! D+ [
   plt.title('聲音、音量散點圖'); @# K: y" C* f; q7 Y" S2 G
   ax3.scatter(loud_list,bri_list)8 f  X% s( K8 }# `8 w& G% h% D9 v
   ax4 = plt.subplot(224)
  q% G( y# d8 Y% |/ x* H   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
% E6 ^7 j9 j- ?: F; W   plt.title('童芯派電量')
" J% G# k7 ^* @0 k9 ?   plt.pause(0.2)
$ @3 ?' j; U1 {) A. k8 Z# h/ p   plt.clf()% |' J& l) g% k$ [8 h- N- X' R: Y
   if cyberpi.controller.is_press('a'):$ u; c6 E& B. Y+ ^% b
       break
  F/ _% G- Y% R. I. d# a2 y   if len(bri_list) > 500:
: K0 t' i: m8 M$ c, n9 ?       bri_list = []& r! P! K$ j* L# M( Q
        loud_list = []1 o1 c& s3 ]: ?( u$ Q/ w& U
$ b- }3 H. ?8 |

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2024-4-28 11:51 , Processed in 0.030296 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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