圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8374|回復: 0

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

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

) V( X' ]5 b! G7 F0 d+ |1 h1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。
    ! c; {4 Z% U7 R9 V; G5 A4 g. P

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

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

8 T' C) M7 K; O3 v. G, p' ~4 p5 P
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    1 h' F( m* Q/ ]5 {  h7 I$ _% h+ X
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)- \9 [' l' Y: S
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    ' R+ H( Q1 l6 J; W

/ s% P9 ]0 Q$ s+ ~" z  A
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)1 h7 ~( }# a, P

' Y- u! @  U1 A2 z. m8 I: W( j
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。! B$ N  u7 w9 j1 ^/ n4 l6 |; H
9 G4 _" ]) W, Y0 I4 h
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    4 _$ r( U0 F* z/ q" g  e6 _4 N0 |
# n. G3 ^# C  |, p# Q
3.童芯派第三方編輯器程式設計準備8 m+ a  [( P9 h% T# l+ F8 A
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    ; y) R9 M. s. D7 G# J3 Z

( u# Z# i: D5 u  ^; G
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。" B  }  A( n+ ~6 C* _" X

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

: O+ K( U# G& L
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    ' U3 W; m- U- K, D7 p

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

' J9 _+ Q# C! A+ Y$ \- O
查閱cyberpi API文檔見:童芯派API文檔
# X; Y  V* c8 j" ~7 R
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。( v" _) c7 h; F3 R

$ ~; H" B+ y1 {. ?; H
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
: b# K( k) e9 B- ~
5.一些程式設計案例
5 g* J# o0 x5 s& R童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

) l- w% y$ N. D1 o8 V. o功能介紹:! d& M7 R4 y2 o2 X9 c) h) [
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。% e& k! F. l- [7 {0 q+ d7 X1 q; p% h
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
7 g* K9 r* V2 g. j9 _/ v, c+ ~結合藍牙模組可以實現無線滑鼠的功能。& P- n" l0 u+ Y- h4 O

* j1 ^. w% ?. B2 K1 ]5 M" U- rfrom pynput.mouse import Button,Controller
$ R1 T4 D1 q8 Ximport cyberpi. s4 i3 r$ U( a' F0 C/ u! q
import time
* p9 R1 I+ ^8 e6 L; b5 \& ]1 W
9 W  J# q1 i, {2 e, ^5 B6 A: rmouse = Controller()
5 t: N( P+ Y* m1 v1 i 6 |' B( @, ]/ T# Q; T7 P  h% V
while True:2 |/ U* I2 r# {
   if cyberpi.is_tiltback():0 w' u* I1 A! u, U/ Y$ _$ [/ s) d
       mouse.move(-3, 0)/ r  o) Y+ {; U( z1 \6 ^) R
       print(mouse.position)
  O1 g( o* D. K   if cyberpi.is_tiltforward():
+ Q. ^( q4 u, Z# U' @9 e6 r       mouse.move(3, 0)
# s% S, g, r0 n: i7 K8 n   if cyberpi.is_tiltleft():
0 V' Q4 u* A0 B  I       mouse.move(0, -3)- @) w1 r1 T, D& O/ u+ q
   if cyberpi.is_tiltright():
$ d7 @. V  f. S& y' O1 ]       mouse.move(0, 3)- Y% E  K6 N1 V1 @# G/ |' I7 x+ C" M
   if cyberpi.controller.is_press("b"):
9 ?4 N1 }* B! y4 G       mouse.press(Button.left)
- X" p$ Q* f' ]# x6 w: l       mouse.release(Button.left)
: Y. e6 i4 v# n  A       mouse.press(Button.left)
/ J0 l: `3 K0 J       mouse.release(Button.left)
4 ^- f* E/ O# A, v   if cyberpi.controller.is_press("a"):
& V+ U$ i9 u8 \       mouse.press(Button.right)$ G" ?$ e' T; e( U
       mouse.release(Button.right)
& G" x9 h7 P" z' ^$ l    time.sleep(0.01)
* K8 D! o  ]' P
/ I7 T5 ]% z5 j* }0 [7 H* m3 y5 ]8 [& S
語音打字器

9 K. `' @) D3 Y功能介紹:
* C2 ~- L4 F: U2 A3 D2 v( A利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。9 V& y' R0 c4 {* Y& v  ]
將語音辨識的結果通過pynput在文檔中打出來。0 B  l& _; ~" m
該程式目前只能支援英文。
0 [9 P( z& G0 Y+ Z1 L" p$ A: v% _7 y/ \) \
import cyberpi
$ A9 C0 E& H4 o; H9 G9 _from pynput.keyboard import Key,Controller
4 ?& A, u. C. m% b3 Jimport time
+ F2 D3 s8 N7 S, f0 o 7 z' T5 @# ^. l: @2 Q
keyboard = Controller(). \3 B) \  v, e# \* b: G# O, s# U/ w6 q
cyberpi.console.clear()
: z3 {  Q$ d! s6 A5 Ncyberpi.led.on(0, 0, 0)
! ~( Z! n  }7 ^+ O6 V4 t* {: s8 Ucyberpi.set_recognition_url()' G) U: C/ M7 T9 H7 W
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得5 v; q' t6 V* A3 p  A  P5 g
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
& h4 ~+ d1 `* ?2 u9 D5 [+ ^5 Owhile not cyberpi.wifi.is_connect():
: h) G4 }( ~8 g+ H3 }3 f9 U5 z   pass* M( U- d! Q( Q( F% {9 @- i
cyberpi.led.on(0,0,255)
: d' D$ F1 k: ~& `( |" Y  xcyberpi.console.println("WIFI已連接")
; B3 \5 b( Y/ Z8 a* n3 Lcyberpi.console.println("--------------")/ w( z; n: @2 P3 B3 w2 u8 J
cyberpi.console.println("按下A鍵開始語音辨識")1 K8 M( H  }" {/ ^7 z" e- {
while True:
8 P7 a9 \, [0 B; b) [   if cyberpi.controller.is_press('a'):- Z+ O  z, v+ ]! {0 I
       keyboard.press(Key.space)7 h4 n7 T) t" J: w' d
       cyberpi.console.clear()
2 y, Z* n; L$ Z( b. E       cyberpi.led.on(100, 0, 0)* N' f) B+ P; ]. L9 q3 o" Q
       cyberpi.console.println("開始語音辨識"): _1 A% ^) S3 ~
       cyberpi.audio.play("switch")9 M: ^( u: M) B! J' G0 {$ X1 h
       cyberpi.console.println("--------------")
/ p" o; L4 ~+ W9 Q- W       cyberpi.cloud.listen("english", 2)
3 K2 d3 O: P7 a! l* e# ~6 @       cyberpi.led.on(0, 0, 0)
: N! A+ Z5 ?* X% R( n       say = cyberpi.cloud.listen_result()2 k, E$ L+ Q& l
       cyberpi.console.println(say)
; D3 S; d3 j3 C! P       cyberpi.console.println("--------------")
) m' S% i& C$ R& v0 Y# l) Z       for i in say:- i# m5 f4 L3 h* z, h  {
            if i == '':. ^7 q, y: Y! o
                 keyboard.press(' ')" W' @$ H( b( j( y) J
            else:3 u) z& c. X, B# ^( T$ A
                keyboard.press(str(i))
4 e2 r/ `3 q1 P+ A& A                time.sleep(0.03)8 J9 S! q0 d  Z; Z) O4 A6 U2 T; j- M
& y6 g/ n4 a* A8 M* x" i# G
matplotlib音量柱狀圖
$ j. \4 R$ `/ {9 A8 K  E
import cyberpi- I9 f  A/ H1 F9 i0 q' _. ]7 h
import time) s2 D  p; \7 E# g% B2 m$ O6 m
from matplotlib import pyplot as plt
! U! B( {4 m" g0 D' b! D 7 U6 Q7 R9 f" x. I
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']' D. f3 u  S, }' d, W5 Q3 E2 X$ ~
plt.ion()
5 S' b; s' S% A7 {8 I" T3 r
) Z7 x8 U/ ^" S+ rwhile True:
5 F6 Z9 V1 B4 }   loud = cyberpi.get_loudness()# c: Q  {2 s) I* o2 l- B8 Z5 T
   plt.clf()& v: b3 S$ v, Q, d& ~' k3 _
   plt.xlabel("數據名稱")/ f7 r  i4 v& ^4 {  h# M- [9 V8 {
   plt.ylabel("音量讀值"); ]. N) i' O" G
   y_locator = plt.MultipleLocator(5); l/ R! F# X) y6 c( S2 e
   ax=plt.gca()! s& `5 O: m6 Y5 V* V5 A8 H9 d
   ax.yaxis.set_major_locator(y_locator)+ N% Z% l7 g! _  F$ ?, }
   plt.ylim(0,100)
9 Y* f* H3 ^0 M1 [5 B   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
: G) j, q% {$ L. ~1 q( p   plt.title('童芯派聲音感測器讀值')# ^* J3 P4 o- N; R; l& k; Z5 B
   plt.legend()
, k- {5 H7 E. H# o6 B/ A   plt.show()4 r4 c! D5 A$ j
    plt.pause(0.01)
! o* U- C+ F1 L; z& ^! x+ W( R0 z! u

( ?5 l' A) l9 i- D; T$ Gmatplotlib 多圖表顯示
* ^" |) T! @1 D
3 @. e  J, `) b1 ]
from matplotlib import pyplot as plt+ n, K2 j- [( @0 M
import time
- ?; P0 ]0 @4 j% p0 x( a) k) Fimport cyberpi
: v$ T! D( y( X1 U! k- a 1 {$ M( Q! C5 n$ O. E: ~9 A+ p
loud_list = []
( v6 E, x; n# Y" R7 N7 ]1 }bri_list = []1 z3 T7 s: V! ^8 `/ x  B+ b# S
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體5 D" s0 E  R3 Y' H3 c& ~5 P$ G6 Y
plt.ion()
2 Y( H* K9 i2 f$ Iplt.figure(figsize=(10,10)); _9 s4 h: c; ?( G( I6 C/ B/ o2 _
plt.figure(1)1 o+ n! T/ F7 k6 ?2 G
x_locator = plt.MultipleLocator(5)5 R2 l& ~, F2 Z9 S$ G
y_locator = plt.MultipleLocator(5)
9 O3 [) X# m& o  S% y' wwhile True:! s- a# R# `/ K- b: A, S
   loud = cyberpi.get_loudness()
4 ~# b+ N) {/ g0 U  L9 L* {; C   bri = cyberpi.get_bri()
+ O5 l0 o8 ~# V7 ~4 R   loud_list.append(loud)2 O0 m' n3 c0 k  G4 V! f6 ^; d0 }+ U
   bri_list.append(bri)  Y- t7 ^6 Q# Z
   battery = cyberpi.get_battery()6 l& ~  ~# x0 p2 o
   size = [battery, 100-battery]7 V! u. x  X- t$ d7 Q- O
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']0 A/ ]! S$ D6 G( |4 m( l
   ax1 = plt.subplot(221)
( h! u4 V* F1 A2 b   plt.title('光線折線圖'): {% o6 [1 d  D5 H2 _
   ax1.plot(bri_list)
/ y% |: b  Q1 |% n   ax2 = plt.subplot(222)
4 r" N* z3 u; ^' W2 c   plt.title('聲音柱狀圖')
7 Z+ t/ d6 U& h" q' O: t0 C   ax2.xaxis.set_major_locator(x_locator)
. m, X) k8 t9 ~1 |3 m0 t+ h   ax2.yaxis.set_major_locator(y_locator)
0 O; i4 ]4 j8 @! n& }* m1 V& g   plt.ylim(0,100)
& t+ I. K/ n- s- @   ax2.bar('sound', loud)
& K5 n7 H5 B3 T0 Q" R   ax3 = plt.subplot(223)1 r; q3 f! Q* l4 H9 s. [
   ax3.xaxis.set_major_locator(x_locator)- P1 M8 i+ {7 r) ]( F  ~
   ax3.yaxis.set_major_locator(y_locator)
1 c% w- {* l2 }4 T) F- v# m   plt.xlim(0,100)) L# M, P  a% v) J% Z
   plt.ylim(0,100)
8 b2 a% }; N6 o. i   plt.title('聲音、音量散點圖'), Q" h2 H+ i# g1 U) O
   ax3.scatter(loud_list,bri_list)$ d5 g& O0 [, I
   ax4 = plt.subplot(224)" N7 e) U$ O0 C" H) }
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})8 k0 p6 J5 A, A% R
   plt.title('童芯派電量')  w4 D2 O% _* v: Q  x
   plt.pause(0.2)
7 ^% W7 A8 O# z+ P$ ?! P" \$ n1 g   plt.clf()
/ ]7 p. z$ u* F6 e   if cyberpi.controller.is_press('a'):! N# [4 b: r) F$ q$ C: |
       break
: ~! h' T+ f+ Z, N5 }  o+ u   if len(bri_list) > 500:
3 T, v0 k" q0 r- o# x7 ^       bri_list = []
0 v( L6 k" Y, {: `' O# j1 t( R        loud_list = []) x1 M2 I+ w& m0 `; j4 x

7 T/ P6 S9 S7 K; ~4 ?5 p

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-21 13:54 , Processed in 0.027419 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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