圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8517|回復: 0

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

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

1 |+ o* G( n& M% K$ e+ A1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。% U' I$ F' j! |( n; ~/ u) u

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

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


1 }8 N) L" s. w, E4 t$ U& b
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。" {9 W. W; N7 n6 t5 b. {: [6 t
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    9 l: v' c1 G5 X- y/ S2 ]
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。" s! f9 a+ @/ |' [( i9 I( _
& p4 T' a0 h7 a3 p/ N
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)) o, g, q! [* [; }

: T. |- X0 N: m) l7 O$ `
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。  X: q( i- H/ r
9 h; L0 J: p% F, ?! `6 I
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。! Y9 @8 Z2 U4 |( A* e

5 O4 l7 `% D/ X! {2 ?: L+ _- V3.童芯派第三方編輯器程式設計準備
! T7 x7 ^+ K6 D/ z8 J0 v- ^
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。( {+ w4 o& q+ J* o' k" U+ X9 C

1 i; c1 T0 m" x) r6 T2 W2 t7 b
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。9 T3 B% _% i( S1 \

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

  s; w& }+ U" L/ f
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。: ]$ j( ^1 K4 p+ C& W

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

6 S) E( H3 i# U* ]# L$ r
查閱cyberpi API文檔見:童芯派API文檔
& a3 |- R/ k) l- V
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    6 j+ [( t  z2 F; ?

8 V4 G/ Q9 \: K7 _- \6 S: a/ ~- K
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

/ H1 M# n& Q1 a4 |; ~- X. D9 N: I5.一些程式設計案例" Y. A% `8 h8 |0 o1 A. l
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
7 A6 S" E2 u; L0 V% @$ }+ V! A" l8 c
功能介紹:! t/ Y4 ^5 `3 [9 F5 x
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。( e. A( ^2 U! H) v* N
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
+ h3 `/ @' X7 H, F% z1 ?4 H3 l: ^結合藍牙模組可以實現無線滑鼠的功能。
' F6 f# K8 l8 v4 ~& D
1 \& t" m4 Z1 ^- Bfrom pynput.mouse import Button,Controller: i+ a$ W) \  m- O
import cyberpi
0 O- m' [# c& W" i& U6 I4 m, pimport time+ Q; v5 }3 [. q3 i4 b
: ^" Q' Z+ @; d5 b
mouse = Controller()
- w* X0 L+ C8 ]6 U  ], e  P. G! A . J9 f0 u  P* O8 ^$ k9 L) m
while True:
* E( D4 w) {' {- p   if cyberpi.is_tiltback():+ f2 S: A( h+ n
       mouse.move(-3, 0). [' v" a1 s' ~0 v8 \( g7 a2 o
       print(mouse.position)
% @1 ~0 C2 ^/ W: K6 @   if cyberpi.is_tiltforward():. c8 I; \; b* T+ d( J0 `
       mouse.move(3, 0)4 \& f' F2 O& ]; [1 t
   if cyberpi.is_tiltleft():
6 p. C, @) F9 C. ]; i' ]       mouse.move(0, -3)/ `( k. O6 A. u2 z: R
   if cyberpi.is_tiltright():
0 p. `" b# a' x6 o& w0 Y6 z       mouse.move(0, 3)9 a0 A, u/ C# |' F, M1 E$ U% Q
   if cyberpi.controller.is_press("b"):0 B$ z, A; @$ r
       mouse.press(Button.left)/ a, e2 i- e% F
       mouse.release(Button.left)
3 |# u5 y5 ~7 t0 b+ l, @8 o- N& _       mouse.press(Button.left)# C( i4 e: L5 |9 S  l6 u
       mouse.release(Button.left)4 V- D3 K2 n- t1 M
   if cyberpi.controller.is_press("a"):$ J$ M' l7 ~6 F$ u" q- P9 J8 S
       mouse.press(Button.right)
; l$ g* n- U1 u4 d0 M       mouse.release(Button.right)
3 a% j, S2 i3 \8 g$ h9 x    time.sleep(0.01)9 r+ \+ Q. P* W. K& w3 h) B

* c; v- ?6 z: _( P" L, a' T/ P* q  H
語音打字器

8 \- X2 n5 e  o4 L+ W% L功能介紹:
' @9 A/ }" f8 b9 F2 g利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。3 u" o6 _6 t9 D( r" h' P( U0 {
將語音辨識的結果通過pynput在文檔中打出來。
! U, {: G* U! i- O3 L該程式目前只能支援英文。
  k6 \( d. o, r7 u) w& b& z0 s6 e. ~& D: l' e
import cyberpi
8 e1 D" |3 V4 ?) q7 ]from pynput.keyboard import Key,Controller
' N' K* T' \" k# O9 V# ?' ^import time) w; }9 p* U3 o0 o$ z# n

1 h. ?3 A# w  A5 m4 T& @keyboard = Controller()( [0 U) Z; S9 b
cyberpi.console.clear()
  M- ]; ~, f+ [, m) ?5 W1 S1 ^cyberpi.led.on(0, 0, 0)/ ]$ J2 x( Z9 Q, \8 u) [/ N& `
cyberpi.set_recognition_url()
3 H* _5 w: D) V+ l' {8 Icyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得) J& A, L. _2 v  N3 |4 Z2 [
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
% \1 G+ P  w" J' C3 ^( z8 n2 Owhile not cyberpi.wifi.is_connect():5 |3 j2 [  o( h; f
   pass
) o; g: T/ h9 G5 K1 t" kcyberpi.led.on(0,0,255)5 ]) h. N7 e0 t, O
cyberpi.console.println("WIFI已連接")7 @* C% c# H8 [9 `5 ], g
cyberpi.console.println("--------------")+ d: T# I- e& r- K! r0 r
cyberpi.console.println("按下A鍵開始語音辨識")! T+ x  h+ U6 [( \: V  |
while True:
4 ]" T0 u- X- u6 R. R9 |0 [' p- Z   if cyberpi.controller.is_press('a'):
+ E* a3 y7 W! ~  n       keyboard.press(Key.space)
- _& R. _& B6 ]2 A       cyberpi.console.clear()& L; p; v+ N& Q# D
       cyberpi.led.on(100, 0, 0)8 g6 n: V% P  b, x
       cyberpi.console.println("開始語音辨識"). \; n. i+ g: l& c
       cyberpi.audio.play("switch")" E/ a% a- R5 p+ \8 M" D/ ~0 x) {
       cyberpi.console.println("--------------")$ s+ R, c& K$ u& p& i" u$ W8 j
       cyberpi.cloud.listen("english", 2)! `  k8 Y* T+ U& u
       cyberpi.led.on(0, 0, 0): p% M" u% p9 r2 G
       say = cyberpi.cloud.listen_result()
8 n8 z  v! S3 Y2 e, U       cyberpi.console.println(say)
! i' A; \$ w# w9 m+ Z       cyberpi.console.println("--------------"); W4 }+ c. _, e/ W% g
       for i in say:2 U- f- @/ n# B* v" h3 I. C
            if i == '':6 F. m# r& n/ r
                 keyboard.press(' ')
; a+ \# N# N; I# Q4 M2 I            else:& J5 F; D* g) |7 B) }8 w
                keyboard.press(str(i))
7 U; O+ J# x" C                time.sleep(0.03)
% I" E4 G% \: Q  l7 D5 n! i. |- o
: ]7 }) v" H( X! Y5 ?  o2 c
matplotlib音量柱狀圖
3 U1 A- o2 Z( p5 b
import cyberpi' B; z/ K; |: y/ \
import time
" s+ k  U) {9 ^2 B1 |& t- wfrom matplotlib import pyplot as plt
$ W" p% o* |* x2 s
" n( G" }7 E2 v6 p) hplt.rcParams['font.sans-serif'] =['Microsoft YaHei']6 @( D& e( B% h: \7 D# ~1 L) H
plt.ion()+ |( I2 s4 ^  u  ]' r, s

7 M, ]% u  p- y8 Zwhile True:% e  \) p! n- e9 a, }7 _1 N
   loud = cyberpi.get_loudness()
/ t$ \" P* E* M   plt.clf()
* |/ E' \8 b4 p! K9 b! @   plt.xlabel("數據名稱")' ^0 H6 E2 f/ {+ Q4 z
   plt.ylabel("音量讀值")3 P% ]/ I" n) j5 [) [4 ^
   y_locator = plt.MultipleLocator(5)0 p4 {9 X5 B3 A! ~, v
   ax=plt.gca()
: t4 k. Y* C# |  R, H, `6 w   ax.yaxis.set_major_locator(y_locator)
: S9 j3 v9 {$ W0 ~' j2 C. f   plt.ylim(0,100)
6 X7 S# V( w) L   plt.bar('音量', loud, align='center',label=f'溫度{loud}')0 p# E9 B" L* t/ V* n
   plt.title('童芯派聲音感測器讀值')6 E7 [4 V- V" u+ ?0 g2 o& t$ R- `
   plt.legend(). F5 c& ~6 h: {* G& C; j+ W
   plt.show()& m1 `" [& Y7 U6 r& v7 G
    plt.pause(0.01)+ f9 D3 d% N1 x5 H2 _$ H, ^
1 U) k( R4 E6 {- |, b* j
' ]" `0 d8 h( K" M! K
matplotlib 多圖表顯示
6 E0 Z1 |( B/ m7 w4 f

: D# H+ ^. \9 M/ a2 l9 wfrom matplotlib import pyplot as plt
6 J0 b0 N: k! ?import time' r' Q- @7 m9 o% d; _/ f) |7 u
import cyberpi1 G& y6 C2 U) U

+ V; P0 C( R5 Eloud_list = []* L& u- P+ S# m- n" x' ]
bri_list = []
4 d( e; a% V+ O+ G9 T  ~plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
0 L9 Y% Z1 k0 }% [- H: ?: n! wplt.ion()
$ N1 v4 f: q# o; o- Jplt.figure(figsize=(10,10))" l( K5 d6 c  i) u
plt.figure(1)
& x) ?- o9 w4 V: k- Ix_locator = plt.MultipleLocator(5)
3 o. t) ~3 w$ q/ ty_locator = plt.MultipleLocator(5)$ r! t; Q7 y" H7 i. O- \
while True:+ j7 \  ^" F" K: Y9 ^8 t
   loud = cyberpi.get_loudness()7 w; n9 \3 k$ _
   bri = cyberpi.get_bri()
' I( z: j* I  |) g  c8 F   loud_list.append(loud)0 n1 u0 K% ]4 c8 [9 w) m
   bri_list.append(bri)
+ w: _2 R; h/ e+ T8 i   battery = cyberpi.get_battery()
4 Y) g2 n1 I! |   size = [battery, 100-battery]
/ L* u6 }' X; D# G   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
) n# _; U$ s& n, s5 c2 o   ax1 = plt.subplot(221)) U9 x; `/ n; D- D" _# W& I" E$ Q% x: n
   plt.title('光線折線圖')8 b& }# x" t/ I" X3 k0 ^
   ax1.plot(bri_list)/ B% O( _3 {% L4 u/ g! S5 ^
   ax2 = plt.subplot(222)
! `5 j0 w1 H2 d! B. m   plt.title('聲音柱狀圖')
! N+ I5 t: y% M  ^   ax2.xaxis.set_major_locator(x_locator)& [2 x/ `( B$ t) l! V4 {
   ax2.yaxis.set_major_locator(y_locator); e+ ~/ b7 l. E% P( b( k( c+ r
   plt.ylim(0,100)
9 Y6 l5 `( k4 R6 A, \   ax2.bar('sound', loud)
! S9 |3 Q8 ^$ \   ax3 = plt.subplot(223)3 b$ M5 N  [' L  o
   ax3.xaxis.set_major_locator(x_locator)
7 a2 b! {- l; j+ {% j   ax3.yaxis.set_major_locator(y_locator)9 P& z! q) g( c* {3 ]
   plt.xlim(0,100)
: }5 n/ q! m; p3 A   plt.ylim(0,100)
: e( H# @" i2 o  m3 D   plt.title('聲音、音量散點圖')( `: v3 Z$ a, z* V: j
   ax3.scatter(loud_list,bri_list)% h2 ?4 C: B) Z3 E3 p
   ax4 = plt.subplot(224)$ O: |7 n4 a8 B- }
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})& D5 F1 q( n' r1 U7 m6 X
   plt.title('童芯派電量'): E: t2 i1 q) C
   plt.pause(0.2)  G2 [: _9 e% h6 t; k4 m
   plt.clf()
* U) Y# p8 l2 v+ r   if cyberpi.controller.is_press('a'):6 }0 z# Q/ i0 P) N, \. `
       break* c5 k! w: e+ F; h+ E. j
   if len(bri_list) > 500:
. |* Y4 r% m( h3 }- |       bri_list = []& d. e# Z7 e. F
        loud_list = []8 b, @) u% x( N. t9 o! m

& E$ [$ [, J  @2 u3 _

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-3 19:34 , Processed in 0.026796 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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