圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8431|回復: 0

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

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

$ p" U/ k0 u% E% @( j1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。
    3 h; ^7 ^$ o; y

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

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

# F" D( @: K- m1 G: `$ N# k
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    3 z3 m! Y' a0 e6 M) w
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)- B2 w! ]# G7 r! D9 c1 m! J: s7 [
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    $ H  o0 X) N6 b

9 Q2 O' t5 f, S$ V3 O
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    : `; i% O, n/ `- d5 u3 M# O

5 l0 u7 c: d  ]1 S' \
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    5 a, K( Q# d& ^6 h  Y4 e

( k, F) q9 z  }9 P; s) }
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。  F! a$ c9 F/ E+ t7 j# {, n

2 I! {/ z  n+ y3 k, r$ w3.童芯派第三方編輯器程式設計準備
  \' P! `0 K3 i8 o
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    6 y- H. @, N' e0 z. W. _
6 F4 n+ O4 I1 \
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。4 \8 S; ~- o  K

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


0 _7 \' o8 ]8 D2 O9 S4 b
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。& j, w* h. o  x8 o1 v# q2 y1 a* D4 m

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


* g6 ]5 {1 c- ~/ }8 |& _
查閱cyberpi API文檔見:童芯派API文檔

) u" B1 T" l; |5 m0 m& W, c
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。/ P4 H* N; |9 r+ N# T) p+ W  D2 b

- F3 F$ j! J% L- E5 {& M/ S9 @; h0 r- C
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

' w" ]9 u! l1 ^' V" ?5 J5.一些程式設計案例
, d+ n) g& D8 N. n) X5 [) Z童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
' @) t$ {: |: U
功能介紹:7 E6 h8 g0 ^* q7 g/ q- Q; |! O% z
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
7 j% O  X, h+ ^# k" `! A通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。( J5 A6 t0 J5 v7 V
結合藍牙模組可以實現無線滑鼠的功能。0 ^4 b9 n. r( w. l: Z$ Q
. L, {; C& q% a! e5 I
from pynput.mouse import Button,Controller; j7 P7 [! O( M5 k: ?$ t
import cyberpi
( |, R' Y* [5 B+ v; w! Eimport time  ~5 ^5 E- ]6 n) y$ a( `8 o

, ]0 t. t0 H8 e, b3 Q3 p3 kmouse = Controller()
: o3 L+ `  O/ @* N / B' ^' x9 S# C' ]/ C+ B" f) `3 U
while True:
5 H+ c1 k1 }7 n+ w   if cyberpi.is_tiltback():
" C' r5 R5 y* K$ x1 |       mouse.move(-3, 0)7 r/ i- Y5 L& N2 l
       print(mouse.position)6 B, \8 L9 L9 j- h
   if cyberpi.is_tiltforward():
, {% f7 Q$ c) i: |       mouse.move(3, 0)
) @* p) Y9 \* f& S7 A' ?9 P$ ?' A   if cyberpi.is_tiltleft():5 N/ e$ o1 w% I5 V* f  I
       mouse.move(0, -3)
4 f. I+ V1 f! C. }# L' _   if cyberpi.is_tiltright():! j& @+ A$ `/ X5 m' |
       mouse.move(0, 3)
; [2 B6 G& @5 \: L   if cyberpi.controller.is_press("b"):
, ~3 }, r1 O/ y8 K* e/ ^, h       mouse.press(Button.left)6 I% D, o7 ]/ b
       mouse.release(Button.left)
* G6 z7 X/ h' H$ P       mouse.press(Button.left)* ~* o4 U0 L8 _8 e* I( L2 d
       mouse.release(Button.left)
1 H4 o0 Q! n, E8 X" Y2 u   if cyberpi.controller.is_press("a"):
' z# d: |1 D( N- j2 Z9 f       mouse.press(Button.right)" D+ h- x" t/ c$ P3 C' M3 r
       mouse.release(Button.right)
$ T3 B% r; b6 i8 `1 ~    time.sleep(0.01)& A% {: E# w& ~) I- y$ r" \

3 V' k4 Y: K! ^9 O2 k0 U6 r4 f% A1 k4 q* I
語音打字器
' r: ~) C, _* U' H+ M% D- V" J8 k% L; z
功能介紹:" k& g& i1 j( x4 R
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
) t1 A6 _5 p- G2 B6 c- k) G$ l將語音辨識的結果通過pynput在文檔中打出來。3 ]; U0 L1 i4 b+ S( `+ T
該程式目前只能支援英文。* Z% ]0 {- e3 @: I( m" v1 h
5 v+ n# q! k/ _
import cyberpi5 C, q! n9 J5 O. S( L# h8 p
from pynput.keyboard import Key,Controller
1 `! P% X+ t, \4 M: ?" Z6 Nimport time
9 |. R$ ?4 Y5 ? ; ^% f- z  A8 H
keyboard = Controller()
1 J3 V7 g4 E9 N* y4 `. xcyberpi.console.clear()
/ F3 N1 M5 J! t- j  P% j" a2 g! |cyberpi.led.on(0, 0, 0)
' z9 w5 X& |/ ^cyberpi.set_recognition_url()4 p. Z2 B. R$ h4 g1 l! X* n
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
/ E. P/ n3 W2 T* p% [6 B9 ucyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
8 P' S1 i! v" K0 P, w( L5 {while not cyberpi.wifi.is_connect():
0 c9 v2 t; ]# M   pass
) Z; U+ ~) @& F' R( @* B) vcyberpi.led.on(0,0,255)
; p; M% N3 y( a! t# P' ucyberpi.console.println("WIFI已連接")
, h' I9 t+ U8 |9 w: ncyberpi.console.println("--------------")5 R/ S  }. |: m/ F2 J: W4 M
cyberpi.console.println("按下A鍵開始語音辨識")% v  j3 I  e7 y- ^% }
while True:0 y% w6 v/ Z& |: \4 f
   if cyberpi.controller.is_press('a'):0 H" s$ [  O( B+ w# d" u
       keyboard.press(Key.space)3 Q7 T' ]# Q3 K( L/ j
       cyberpi.console.clear()
2 o  e% e. @3 Z+ [- U       cyberpi.led.on(100, 0, 0)
* {9 _  X4 C5 C       cyberpi.console.println("開始語音辨識")
- i1 x8 E/ a. X       cyberpi.audio.play("switch")
3 q# r  h% s. A4 v, e       cyberpi.console.println("--------------")- z8 W, m4 F" z( c: i
       cyberpi.cloud.listen("english", 2)4 v' W8 e$ V1 {5 ~! v
       cyberpi.led.on(0, 0, 0)6 o5 J6 x$ G- {/ D1 F
       say = cyberpi.cloud.listen_result(), D* o% x/ R: N% B
       cyberpi.console.println(say)
5 [  Q# i' A4 i       cyberpi.console.println("--------------")" t2 w* F) A. H1 ]4 C' Q: _
       for i in say:
" f: O4 _$ ^* w7 D6 \& e            if i == '':
1 g4 b9 O& t# L                 keyboard.press(' ')
9 N$ C4 H& R5 |) g            else:
0 x+ I! X* H9 Y7 f                keyboard.press(str(i))
, O! }5 |/ M6 T5 c6 c9 g; O7 ?$ T4 `                time.sleep(0.03)
% m* Z1 E- h( v( @/ r. v  _
3 E( d  [$ O" {9 P+ h
matplotlib音量柱狀圖

7 m% ^' ?# }* ?import cyberpi2 Z2 a3 f0 N* l. g! a4 B" [
import time* _' p0 m4 v7 g/ [2 \* K; L
from matplotlib import pyplot as plt
# E, u7 L( t% l4 w  [) z
; d; Q6 ]8 a2 l# rplt.rcParams['font.sans-serif'] =['Microsoft YaHei']
/ Q/ L& O; F) y# M2 l# Oplt.ion()! l" l1 b$ l! ?& z
: b! x+ a' @3 J# b4 x
while True:
; w8 ^3 O) b; T3 {   loud = cyberpi.get_loudness()
1 D7 b: T" [+ l7 \   plt.clf()
6 _1 X; M/ _* {. H# J   plt.xlabel("數據名稱")
( m7 R! k3 S, g   plt.ylabel("音量讀值")0 m' R- [* |* N1 Z# R$ H  M/ \
   y_locator = plt.MultipleLocator(5)* A: ^& j2 G/ R2 v6 f9 e! Z! o
   ax=plt.gca()1 F" K! d8 M/ g" [/ g
   ax.yaxis.set_major_locator(y_locator): [5 ?9 O' G" S5 D
   plt.ylim(0,100)
8 {2 }$ I: F6 ?   plt.bar('音量', loud, align='center',label=f'溫度{loud}')4 w! \9 T( X% l
   plt.title('童芯派聲音感測器讀值')  m  `9 k" n- h2 f, ^
   plt.legend()
/ S, K$ Q* I' L, X, K   plt.show()& U$ Y0 j( e+ E. R% Z( N& H. T, ^
    plt.pause(0.01)9 L2 F6 w: t7 g) o: E# L. S3 `
! `5 l6 ^- w" e* S7 o/ u

6 g& J) H2 [3 Mmatplotlib 多圖表顯示* M0 @( |6 j9 L4 x4 y# h

2 p8 o/ \4 z& a7 V; sfrom matplotlib import pyplot as plt
4 e# }, U& X% \( zimport time
, j: X" }+ P% b; Uimport cyberpi
, c" t7 i) a6 E+ p4 j: s( v: s! ~
; I% e  u8 `& v2 }* P; floud_list = []- o8 S- I% ]* U% Z7 v
bri_list = []
3 W, u8 P& l% Zplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體% i. \' F2 E- q5 ^- p
plt.ion(): u' ?) I6 E7 f( H
plt.figure(figsize=(10,10))
7 \. E! ~" r8 K3 Q8 O# t3 u1 Zplt.figure(1)/ d' G0 Q+ {3 z8 @9 t
x_locator = plt.MultipleLocator(5)
0 I  }0 o" H" j; I  A2 a2 r& \y_locator = plt.MultipleLocator(5)9 I) t- A: ?5 g, `2 i( j7 @
while True:
; y8 B2 @$ f; |* F& C   loud = cyberpi.get_loudness()
, [3 w5 g- C" [6 `% w7 I   bri = cyberpi.get_bri()0 P3 v" X" Z) s% O+ }( y3 z( R! B7 @
   loud_list.append(loud)  {0 W) \( c& t! d( _: Y5 z7 B* I
   bri_list.append(bri)
. L9 q" U6 h+ x" ?: ?" |5 U   battery = cyberpi.get_battery()) V0 I# y. N2 {
   size = [battery, 100-battery]
5 s: n7 e+ f2 g/ x! q9 \3 \   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']1 P% P  C  x  k
   ax1 = plt.subplot(221)+ ?2 B# t8 c7 v0 |
   plt.title('光線折線圖')
; g* I; ?2 D7 p0 J  W8 k! g8 o4 t( s   ax1.plot(bri_list)
" U. v* w+ y9 Y1 r; I: O0 z- v   ax2 = plt.subplot(222)
( R) C6 q7 J1 s2 B  O! ]- w   plt.title('聲音柱狀圖')$ A/ @' P1 f! Y  J9 \& ?9 {0 F# b
   ax2.xaxis.set_major_locator(x_locator)
* m& i  |6 ]# y5 P8 t. n% @' N   ax2.yaxis.set_major_locator(y_locator)8 N- Z' u- x" a7 R5 l6 J
   plt.ylim(0,100)6 I# s* t! h% h" B
   ax2.bar('sound', loud)# i9 B+ `0 S3 L2 {, d
   ax3 = plt.subplot(223)8 g0 w4 Q' ]1 B( d0 V# X
   ax3.xaxis.set_major_locator(x_locator)) ^; i! M. Z# I- z- a# x6 g" I
   ax3.yaxis.set_major_locator(y_locator)
* h4 V! E7 a* S! w% @- F   plt.xlim(0,100)! e( ^2 Q: L8 s8 Q0 ?- W( R
   plt.ylim(0,100)% }: v8 T, `' z0 a  d# O
   plt.title('聲音、音量散點圖')  I. X1 g) y" W* ?' _/ o# H
   ax3.scatter(loud_list,bri_list)1 I. n, ^( c7 a, [  f
   ax4 = plt.subplot(224)
! {7 c4 e0 a3 S; |$ z) I, Q   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
1 _* N/ [$ a5 T2 S3 S; d   plt.title('童芯派電量')4 n6 A, n; @2 ^+ ~/ r/ F8 b! C& d
   plt.pause(0.2)
! I* ?0 V4 {4 m; L   plt.clf()& u, q: b. I3 s4 a& Y+ C
   if cyberpi.controller.is_press('a'):  x; w) X- i; S+ m" o  p) v
       break
' Q" |' U' J0 D: k7 t* J  Q   if len(bri_list) > 500:
: w7 M7 n: `' k! T9 _       bri_list = []* d* i5 T$ _5 U6 n9 Y
        loud_list = [], ?, g  e* D. K! r( d* X1 X+ Z

9 H8 s  M* C! o1 x  M- R

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-27 07:13 , Processed in 0.025993 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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