圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8388|回復: 0

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

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

  v6 B0 V7 q- [& t- c' L1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。
    7 u/ e: ]. g/ T3 `, k

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

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


; I4 |; E& W$ p9 Z7 ^+ {4 N8 @
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    ' r  S8 a4 M1 Q- Q# m0 ~
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    8 M* J# ?; P, j' A' D& Y
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。6 d7 M  }; H; o9 j+ F1 x
0 g, R) O: g( r2 |6 Q3 Q
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)9 ^: O6 [& b; E. L
' i+ U/ p; ^- n! `5 c
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。$ V/ g1 g; d* V9 f
: G# u+ h7 |& S7 h6 G% x
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    6 E: Z/ l( e2 Q- j1 C5 O% t, |

9 l) F3 A- P; [0 m+ B' p3.童芯派第三方編輯器程式設計準備, [' O% O4 a* I+ r
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。! x8 G8 K- |  o5 j
. D' b% z! _. L1 h! t
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    * X8 T" f% b% {$ B+ W  U' m  k

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


. P4 w% ~/ G2 \$ @
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。! e3 c- z( I. w& B1 A& U7 H

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


$ y2 h  c, s' L8 ]1 B& }
查閱cyberpi API文檔見:童芯派API文檔
6 o2 O2 t, k) I. {' U
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
      |8 L) p- A( Z; k+ J
9 |& p8 @- c9 v
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

* Q! X7 Z: U3 ]+ {4 s8 D% Z5.一些程式設計案例: F( X! g! W3 s$ W4 |! W5 L
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

8 a# S/ m" u9 _  U功能介紹:' U( O  B, g* {$ {( G9 L8 N
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。( \. ~4 X; d* i7 J2 h. m
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
& e* v# T" |, r; p) Y, s  R1 H結合藍牙模組可以實現無線滑鼠的功能。' R, @: C3 V3 `- u
5 \+ [, e9 X+ h: C8 P6 v( u$ K
from pynput.mouse import Button,Controller5 g. ~% g( D+ p4 M9 u$ w  o
import cyberpi
( M* @! f) W  c8 y& ]9 l8 Jimport time
2 A9 P# B" {2 d % g' v5 A! h- i% i. p
mouse = Controller()1 I6 P0 D( s8 N+ ?
. C% ]& N9 r9 h8 h% @
while True:
! X( e( {! t9 ^  B5 u& z. w   if cyberpi.is_tiltback():* C) u4 ^1 y. X0 ?0 L  R
       mouse.move(-3, 0)
- B( X3 U4 V! N) ]( {       print(mouse.position)1 Y4 q. Z  C* Y6 p- t! A
   if cyberpi.is_tiltforward():5 M: w+ R( q) b
       mouse.move(3, 0)
! g: `0 b3 Z2 K: w5 E   if cyberpi.is_tiltleft():
" u9 c9 |, D% j# @6 Z# I       mouse.move(0, -3)
$ B0 W! Q) D3 [* J   if cyberpi.is_tiltright():) O) R* l( f. H! T; d
       mouse.move(0, 3)* R. X5 w" h, Z- o
   if cyberpi.controller.is_press("b"):
, z/ Z* k& ?1 d, b& b$ p& b' U" [       mouse.press(Button.left)
% U. \8 P$ f0 `  z# F/ }       mouse.release(Button.left)
6 P$ c8 T. l# \; O9 ^       mouse.press(Button.left)3 C& M, H/ W( [" N  ], ~
       mouse.release(Button.left)
4 K2 n9 S, q2 }4 g  S- V, I* h   if cyberpi.controller.is_press("a"):  G; [% S8 Q4 j6 b9 S$ L
       mouse.press(Button.right)
9 x- t3 u' ]; _8 m+ \: j       mouse.release(Button.right)! P& U) C: Z1 i
    time.sleep(0.01), O: t4 m4 `! F, M, I

5 O7 a9 D' u$ s
; v; `, m9 i' ^$ b! Z  q
語音打字器

( {  s- f1 J9 v) Q: L# Z( V8 m功能介紹:+ b/ X  E* |7 l6 o
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。# N7 B+ d: s' I. q( d5 N
將語音辨識的結果通過pynput在文檔中打出來。
2 B1 i! \/ K5 t5 N+ N: X該程式目前只能支援英文。- ]& j' _* n8 C
0 z3 w6 M$ `* m
import cyberpi0 l) I) B$ G. n8 _8 h7 W; f7 Q1 S, Q
from pynput.keyboard import Key,Controller8 ~( u/ P7 K$ w/ _! d5 ?
import time
# E' `. |0 C3 F4 ~
1 n- `& W1 _. W5 w( g* W7 X. `keyboard = Controller()
3 q6 h" y1 l" h+ O$ a* Ocyberpi.console.clear(). H" O8 j, m5 w+ u# v8 @3 C: _
cyberpi.led.on(0, 0, 0)
9 ^, Z3 @1 ~* J3 q0 J6 j+ E5 c& Acyberpi.set_recognition_url()& L2 X4 A0 c- x. |; K; U  w
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
' j- G+ L% G0 `6 ]cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
% v- p' q3 E5 n' s8 Owhile not cyberpi.wifi.is_connect():( o2 l; I) o( H) W/ c3 v
   pass1 j6 }6 m$ B' K- g
cyberpi.led.on(0,0,255)5 O2 w, S) b! y! u
cyberpi.console.println("WIFI已連接")# i2 J: [4 {& S
cyberpi.console.println("--------------")
" f: ^/ x. ~: B4 ycyberpi.console.println("按下A鍵開始語音辨識")
" g- V3 {" A! M5 [& Xwhile True:
8 {" N' K9 X- E( H8 s$ {2 f   if cyberpi.controller.is_press('a'):, J. |+ H, n3 g( o0 D
       keyboard.press(Key.space)
( X' e3 j+ k. c" U. R$ K       cyberpi.console.clear()6 x/ M& P& k6 [2 |( |% }& X# q
       cyberpi.led.on(100, 0, 0)
- i7 C/ z! {+ M       cyberpi.console.println("開始語音辨識")
, e4 }2 B5 A9 c       cyberpi.audio.play("switch")( q& l. \- h. s+ f
       cyberpi.console.println("--------------")
; A$ v# p7 N4 k' i5 O4 l9 G- y       cyberpi.cloud.listen("english", 2)
" h3 q( A8 o: f1 w7 L8 E       cyberpi.led.on(0, 0, 0)
; ^: x% I. g! K# |       say = cyberpi.cloud.listen_result()
& t4 m' z( w; I# b+ |" H       cyberpi.console.println(say)+ z/ p) m( q' a& V
       cyberpi.console.println("--------------")
+ q" T* w' q- e0 J' n4 S  L" \5 e       for i in say:
; F0 {& @+ l- R) g4 @$ `8 M            if i == '':+ v- I" c+ H9 m
                 keyboard.press(' ')
6 W: V8 f  ?: {: |            else:5 v/ P; W% |, b
                keyboard.press(str(i))+ T' Z5 K* \* q8 a& y- k% o( d. }6 }
                time.sleep(0.03)( j- _! n. d# E# F% X( @

# z2 |) r% H  N2 lmatplotlib音量柱狀圖

# F# h# }8 g: B6 B" fimport cyberpi6 F/ v5 i5 d4 o8 T$ B  r" W( b
import time
  {2 q( a% T. u: ufrom matplotlib import pyplot as plt
4 i7 ]3 ~' B' ?1 I  H3 F ' p4 [8 z# n8 E, w. y6 _
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']' _( }) N+ G. T
plt.ion(). h3 H0 }7 b% I, S5 r: f

* d8 `- b7 _9 v' i" c7 ^; lwhile True:
; I- f5 [) l8 C2 Z7 U+ W) @' E. E   loud = cyberpi.get_loudness()* i" w0 \1 U+ T; t2 l- ]
   plt.clf()* a' t6 |, ^# S3 G, D+ b- d
   plt.xlabel("數據名稱")
+ F, d4 Z; A; z; w* b% b7 w   plt.ylabel("音量讀值")4 Q$ d8 r' e1 @" ]" _9 e
   y_locator = plt.MultipleLocator(5)7 ^- g9 w& G$ w$ Y
   ax=plt.gca()8 ?6 V* g8 O4 Y; T( G5 I$ e
   ax.yaxis.set_major_locator(y_locator)( |2 t9 o* n( a; q  S
   plt.ylim(0,100)4 C+ G) m2 G! {0 ?* g
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')0 `  [% |0 B5 m  P- }
   plt.title('童芯派聲音感測器讀值')* b: |) V0 L2 |) H5 B0 n
   plt.legend()# x( [) \% D! Z  a$ w. R
   plt.show()
' V6 F! e+ D1 A% S- }; [    plt.pause(0.01)- b1 n( G7 a  ]
- a6 c" F$ X4 U9 m1 A9 x
% n& V2 w, D; o" v
matplotlib 多圖表顯示3 j! L* D$ H0 C( i
! r( i' {% p6 h8 e4 I8 r/ t, i
from matplotlib import pyplot as plt4 r$ |+ e/ P! B, l; a. o" j
import time3 [$ z$ R& R+ w& l6 e$ h' _8 C& O
import cyberpi
' _4 X* s9 K6 ^9 h# C
  I, P5 k3 L  T. Dloud_list = []
5 m& E# _7 P' X( L( P' Cbri_list = []
4 S, m+ E. |# C: a& W1 w! e) A$ lplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
# P# @, s+ m* ^plt.ion()- c, J. l1 p5 D8 L  t, k1 p/ q
plt.figure(figsize=(10,10))
7 {9 B! U- E. Iplt.figure(1)
6 b/ I' N+ A+ b$ O% s8 i+ W7 s, U$ B5 w, `x_locator = plt.MultipleLocator(5)0 C1 u' ^0 r3 A
y_locator = plt.MultipleLocator(5)
0 D/ j+ q/ k& @( F. ~while True:# \1 y% C) ~! T4 e
   loud = cyberpi.get_loudness()7 O5 [5 k' w! Y* M0 U  G; q8 A$ M
   bri = cyberpi.get_bri()9 X+ N" J9 ?, x
   loud_list.append(loud)
$ W& A4 Y1 q2 a. G   bri_list.append(bri). i. h0 x' H  Z% Q
   battery = cyberpi.get_battery()
: i% n( T! \6 c+ j& ?6 {7 U1 M8 c   size = [battery, 100-battery]
$ `! Q3 ]/ ^* N! Q; ~7 C   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
# g3 M: Z& t: o/ Q. }   ax1 = plt.subplot(221)
8 N) h% z$ l3 z5 O. |# g5 E   plt.title('光線折線圖'); w( o. L# J" |! B; h9 ^+ _
   ax1.plot(bri_list)( N# b- P( \3 C/ D4 Y, }
   ax2 = plt.subplot(222)7 M' d4 H1 x% |
   plt.title('聲音柱狀圖')3 [8 o" J+ b* l- J2 D
   ax2.xaxis.set_major_locator(x_locator)4 {  U* ]- c3 A# C
   ax2.yaxis.set_major_locator(y_locator)* z" R) b  ?+ Y4 r
   plt.ylim(0,100)$ P1 M; A* V9 y
   ax2.bar('sound', loud)
6 T( |4 q  ?# |8 H; s' s   ax3 = plt.subplot(223)
- [$ n, N  L# _; G- m) B   ax3.xaxis.set_major_locator(x_locator)- t- t, L; H3 m- H% i
   ax3.yaxis.set_major_locator(y_locator)
8 z( P# h: \; g   plt.xlim(0,100)
9 A. M7 G0 }! E, J, {! _( r" f   plt.ylim(0,100)1 f. m3 }# d. C
   plt.title('聲音、音量散點圖'), d+ |$ N: @, z
   ax3.scatter(loud_list,bri_list)0 y1 v7 Z. i7 @3 Z) O
   ax4 = plt.subplot(224)
% R" l; j0 Y. K# c   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
9 z+ z( O; l# Q& _6 i5 B   plt.title('童芯派電量')$ U: S9 t* r. H( N: }& D* N
   plt.pause(0.2)0 F0 |0 |: w. ]3 K3 u
   plt.clf()6 W" i' p. K. b
   if cyberpi.controller.is_press('a'):- N/ r$ W2 c: o) {) B
       break& x8 \# l" L) w* a, g
   if len(bri_list) > 500:, ?3 ^/ I% ~2 p) y  @) O
       bri_list = []5 z$ ~/ E" r2 _( L
        loud_list = []9 T: @! p$ X% ]0 |* K6 Z

8 c# `9 Q& _3 {) ^! G- z# x8 u

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-23 05:13 , Processed in 0.025414 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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