圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8400|回復: 0

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

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

5 e* S" @1 @( q) _& W1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。
    " N/ Q9 t. ?3 o8 l

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

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

# k5 L' g5 G+ X  P
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    0 H2 T6 P# u1 U/ Z; U8 _& T
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    5 h( [/ x( b, T' s, o7 V+ a
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。5 I3 X+ |- p! `

) z  _5 ^' ?2 U0 y6 C! N2 p* n
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)/ B2 [/ E& W5 r( N1 z/ M

- {- z. j8 O3 l  x; C# Y6 t- N' S" }
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    4 ?: X& Q* C4 y% @% n3 @

# K) _8 V/ t& r4 i9 P% k* n
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。* g2 S5 Z  s' j* z0 d$ X2 e; j
7 a4 m! S1 j8 {/ ?% D# C/ |0 F( E
3.童芯派第三方編輯器程式設計準備
" @- T$ e0 J' @
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    8 k0 n6 j9 L( o6 t2 @
* m% A( e0 P% M7 u
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    8 L1 F6 _9 r; M, O- H8 u" d

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

* w1 V; a( `7 p. q8 R5 @2 y3 M5 {
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。/ m, M# @6 o: A

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

# k* k4 q( X$ E6 N
查閱cyberpi API文檔見:童芯派API文檔

' Z7 \8 F1 n7 t
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。- P: ?% T. y1 D- D- M0 ]
: q" p4 ?# s3 ~/ ^
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

+ E+ e0 G, t+ {: M' \+ U$ \5.一些程式設計案例- V3 |( ^+ w1 E8 a2 `9 b
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
# {2 s3 e; J! s
功能介紹:, g' z8 G  X; N* A
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。' P7 |7 P( d* [) C' l3 m$ J6 F; c
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。  u' G' H6 y5 y; m. r0 I) q7 z
結合藍牙模組可以實現無線滑鼠的功能。+ F" i3 o: q% N- I8 U0 a$ M0 K3 i2 |: O/ ^
0 l% ?. q" ^# ]& _# T
from pynput.mouse import Button,Controller# B* F/ G' P, R, W- G* }: [3 i5 D
import cyberpi3 V: i! ]7 `% S6 H& Q
import time
( f) @, g$ P3 z4 ?* e3 j
, y1 F' \4 ^; a$ Dmouse = Controller(): F  y. Z2 F' R, K

" l0 |8 ~/ V2 _- @while True:) g2 L6 Q  N; Y9 f6 Q" d: b
   if cyberpi.is_tiltback():# ?9 j1 b0 G1 n" ?7 B; h
       mouse.move(-3, 0)
% D+ V' _8 [, @1 x0 Z6 z       print(mouse.position)
, B8 [9 J1 m! k- z. _: t   if cyberpi.is_tiltforward():
# o7 j8 ?8 w3 f$ ]# a0 N* k       mouse.move(3, 0)5 }. Z( `/ n  u6 u) c2 U
   if cyberpi.is_tiltleft():
" g- G% O  V1 u2 `; F       mouse.move(0, -3)0 E0 a- _$ N3 I, A5 i" ?9 _
   if cyberpi.is_tiltright():
) w% b$ s- Y( Q! s8 a( P& k       mouse.move(0, 3)
* T1 i, v$ @2 d8 o   if cyberpi.controller.is_press("b"):
. V( Y- u% B4 h, f       mouse.press(Button.left)
' b& l' ~1 F! ~9 N9 c) g7 ^       mouse.release(Button.left)9 [' o  R5 T8 h" ~! M7 a5 s/ {5 n
       mouse.press(Button.left)
  q9 t2 s: H2 T/ c4 @       mouse.release(Button.left)
' _- |% b: J8 }. Q: O4 l   if cyberpi.controller.is_press("a"):
; z5 X+ V: O) V6 p       mouse.press(Button.right)% }1 d+ r7 l, k
       mouse.release(Button.right)- H# e. ]+ t" L. x% E
    time.sleep(0.01)/ g2 i- \9 J! H- k8 V/ i# X

9 W' e0 ?( D; x$ Q' a( s' _; y
: o& ?' s6 e: O# b) |
語音打字器

/ {7 B1 W& {9 E% U功能介紹:
. h1 v$ i( m8 c2 H3 Y( p" O利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。3 G5 r4 U/ z& q1 r
將語音辨識的結果通過pynput在文檔中打出來。
9 k5 H$ E2 C2 M* q7 N& P該程式目前只能支援英文。
& d9 g2 n9 |) t/ X& O: ~) F
2 A* Y6 w3 K7 t% {5 H' l. Bimport cyberpi9 Y1 S' w# M( E
from pynput.keyboard import Key,Controller
) q( ]2 ?/ Z- }- J2 I8 gimport time
2 f1 E  r2 x* j5 ^2 R! L
0 Y9 f' p2 ~9 ?8 x: jkeyboard = Controller()
8 p' P5 a2 {$ m# K4 R+ |3 Ccyberpi.console.clear()+ u6 q" J- D( Y  g( c
cyberpi.led.on(0, 0, 0)% T& Y. H3 t7 A+ x# B$ T
cyberpi.set_recognition_url()
; G+ s- L* E$ {# S4 {cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得3 @  G' L* g# G2 ~# v
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")  H5 R9 K9 h8 D* U- O9 o7 M8 @( {3 `; V
while not cyberpi.wifi.is_connect():
- r4 W6 v$ r0 `) I  L, C5 p   pass
- {2 `$ p0 z, h- B) E! `cyberpi.led.on(0,0,255)1 v7 e. e8 L# O: N, R
cyberpi.console.println("WIFI已連接")
% ^0 C& H: N( a# ~9 d- h: xcyberpi.console.println("--------------")
* q- s9 f  C, B2 m( Fcyberpi.console.println("按下A鍵開始語音辨識")
& V1 P9 m. r0 S; f, Gwhile True:6 ]+ A1 `, P8 v; a
   if cyberpi.controller.is_press('a'):
  H, X$ j1 i) z       keyboard.press(Key.space)+ G2 l- K/ [% x' [9 `' D  k
       cyberpi.console.clear()& e9 V" k; f6 ?( a2 \$ l. @4 ]
       cyberpi.led.on(100, 0, 0)9 M& a7 a9 V- {' V
       cyberpi.console.println("開始語音辨識")
! g  |" E1 u5 k0 t, q; d       cyberpi.audio.play("switch")
2 v3 m* q$ y( C: [7 j       cyberpi.console.println("--------------")/ M/ ]0 Q0 J5 Z) u! d! [- n; H) k
       cyberpi.cloud.listen("english", 2)7 T2 G% s8 Z  \7 e; a7 g+ h
       cyberpi.led.on(0, 0, 0)
( j! m1 y3 p; X& p       say = cyberpi.cloud.listen_result()3 r, I& g) E3 ~  b2 m  k
       cyberpi.console.println(say)
, [6 E, z$ v6 s! H       cyberpi.console.println("--------------"). Y% a4 I# d/ D0 h# i7 m8 q/ c
       for i in say:  w+ m4 S% [6 G1 U5 A- Y( J
            if i == '':. l3 E& s7 e* [' r: D
                 keyboard.press(' ')! l7 i/ A' d" d3 O! E" i
            else:
! r4 X3 F9 y0 X$ h                keyboard.press(str(i))
4 S; i, I: T. M: w) p0 M                time.sleep(0.03)
. b* D5 m) \% x5 F! U, o; x
; s. g+ B  l0 L7 n" n) l! s
matplotlib音量柱狀圖
. y6 E3 L( S3 t+ C2 L  u
import cyberpi
- V6 X+ o% n' _- L$ O3 uimport time
* H9 x# a* X) I& i, |from matplotlib import pyplot as plt
0 F* {1 D/ L5 }/ d6 e, W: W% { : e, L8 ^) z; a8 V1 l8 k* F+ N: T
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']1 o/ J$ p+ |. B: s# j" \* H
plt.ion()
8 f7 Y4 p' d( _6 {9 ^$ n: P  ^
! _9 F& G/ K+ u  Kwhile True:
! N" `1 v# x; q, l5 v  \# i+ s: \   loud = cyberpi.get_loudness()) {, J& l- c; I4 h- _
   plt.clf()
) j; h3 P1 s" H* z5 W; U  H   plt.xlabel("數據名稱")
+ U9 m4 P/ a5 A" E   plt.ylabel("音量讀值")
$ E- L- |7 R! z7 c6 d/ H( h7 g   y_locator = plt.MultipleLocator(5)% r1 N4 }5 c2 b" L1 v2 ]
   ax=plt.gca()
7 H* T/ X8 \5 R% Z   ax.yaxis.set_major_locator(y_locator)
, @) Y0 r' s+ I   plt.ylim(0,100)
+ E# C( u/ ^" t. C$ z, g0 h: \   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
( B+ X% n/ V( c3 ?& E   plt.title('童芯派聲音感測器讀值')# T/ |- v. I0 F6 L' Z
   plt.legend()
3 `( z$ c% K/ o# _* a  F0 J   plt.show()  _3 N) O/ q- {7 O0 d2 {
    plt.pause(0.01)
  m3 W% A2 t7 C' f/ Y
% K! G+ c( Q6 P" C- @+ q  B$ e* J& F& \2 ^( z1 ~
matplotlib 多圖表顯示: C$ S. F% w' L0 t! A& G' b! M$ _

% M7 C% x) ^0 R- Y% c- y! `9 R! ~from matplotlib import pyplot as plt
. q4 b1 T- ^, T: y" I0 B; kimport time
1 I. _3 r$ m, K  _$ u) U3 zimport cyberpi" f9 ?& ?! R6 Z2 Q8 _2 c
! L# o, @! W# _
loud_list = [], u! V7 `% x! b# p# P* J
bri_list = []: b) ^' K3 X# z( |4 U7 h
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體0 F3 i; y! [" ?' ~. B6 ?& f3 y
plt.ion()( W7 G, K% P. Z( i$ F% ?2 m
plt.figure(figsize=(10,10))
2 G( ^0 [& V. P4 nplt.figure(1)
" g  D6 s2 I6 h' d6 _x_locator = plt.MultipleLocator(5)
/ {* x; a" R# j) j/ s, S: Iy_locator = plt.MultipleLocator(5)% c; a/ R! Z; E7 S
while True:
/ d# S  ?0 w+ y- y3 D1 v1 n( d   loud = cyberpi.get_loudness()
& e) J; k4 g, [) \   bri = cyberpi.get_bri()0 i, y& t  L8 i( s
   loud_list.append(loud)- `$ H8 m% q, ~6 r& z6 _
   bri_list.append(bri)
8 b! l2 ?3 F/ o* ]* c   battery = cyberpi.get_battery()
. X8 \0 Z# O2 E   size = [battery, 100-battery]$ y5 w  T+ y' [1 D
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']; g  P- N5 K" h% u9 W) L5 x
   ax1 = plt.subplot(221)
" a" K# A9 p! }1 i5 m   plt.title('光線折線圖')
3 ~' B  n9 a! h8 f# M) D3 [1 W   ax1.plot(bri_list)! z5 ]; |! J' g# T, r
   ax2 = plt.subplot(222)
- G" |& G- B/ T   plt.title('聲音柱狀圖')+ w: G0 H- z6 e& s0 w& a
   ax2.xaxis.set_major_locator(x_locator)
) K/ g; O8 R' D) r& J4 t% }   ax2.yaxis.set_major_locator(y_locator)! f; c# l5 Q3 u0 S
   plt.ylim(0,100)" l# z! P0 p$ A8 a9 S
   ax2.bar('sound', loud)6 g7 ^0 K7 x+ R5 [- B
   ax3 = plt.subplot(223)8 B& ?5 Y' g& O% N
   ax3.xaxis.set_major_locator(x_locator)
) k1 Y" [& y1 U5 Z* i2 V7 C   ax3.yaxis.set_major_locator(y_locator)& r& w; K2 t# d, L5 v
   plt.xlim(0,100)4 m, ^& c4 h. g" H! o$ `
   plt.ylim(0,100)
, E0 _& G& v3 \9 C   plt.title('聲音、音量散點圖')
5 |& U. d. F- ^: U   ax3.scatter(loud_list,bri_list)
9 P/ J5 \& g5 O) L/ y2 p9 c   ax4 = plt.subplot(224)4 l$ [/ f( \! V* v" C
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
2 C- {6 P5 n  t* _5 s9 b& ~6 b   plt.title('童芯派電量')# d( J' r; D* G6 A$ r
   plt.pause(0.2)
+ h( e: R, ^& p) e, g7 q/ _   plt.clf()
8 }) H/ \8 ?+ t; I0 j5 h   if cyberpi.controller.is_press('a'):0 E' J. c+ M/ J: T  {
       break
, X4 }- V  H9 r3 {% m9 D   if len(bri_list) > 500:
. C3 Q, A- s5 S7 i       bri_list = []& z  v7 S+ H8 M+ E: w" @" a
        loud_list = []' b9 }) f" b  f

5 a6 W  R1 X' T& B# P$ j" g

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-24 01:02 , Processed in 0.025879 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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