圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8520|回復: 0

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

[複製鏈接]
magiccar 發表於 2021-7-2 15:47 | 顯示全部樓層 |閱讀模式
本教學譯自Makeblock官方教學文件,原文點[]
本教學文件以windows作業系統環境為範例,Mac使用者可以參考結合實際情況進行操作。
快速教程:如果您已安裝了Python環境和第三方編輯器,請跳至第三步。或在您的編輯器配置的Python環境當中安裝pyserial和cyberpi程式庫即可實現童芯派第三方編輯器的程式設計。
pip install pyserial
pip install cyberpi
- E: G- _1 H1 |' t% G* `
1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。6 q$ ^! ~$ m4 C0 t" S+ e; v

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

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


/ r! `  i! t% f( a
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    6 e8 @$ F, |/ a4 _# c7 z$ c* f
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)+ T$ e/ e, W$ t& L7 W
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    & r& k, t4 @, G/ k- c4 u
6 H3 H/ N; s! Z& X1 ?1 w
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    # {3 x$ W/ O7 u. c; S8 }' I
1 f! t  C" g/ Z# w2 Y& \5 t5 u
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    ) T* b" q0 x' ^. C! B% P
: X0 w5 b! A( b3 Y' v5 V. v1 A
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    - Z$ i# m' n0 J  ]  N
. W8 v* |! v0 q8 F( t4 T; @
3.童芯派第三方編輯器程式設計準備
' S! |: W) G7 s; S5 F
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。4 ^3 C; @; u) }& e  d& f3 S
8 n% H" X9 t: `' K. g
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    4 B0 p+ l6 k/ X7 F$ a# O9 B5 A. O

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

2 `5 n& z0 F6 L; e) z2 U$ w0 L
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    + z0 ]7 M4 }: W

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


$ Z; F. Q, X' B5 c" w
查閱cyberpi API文檔見:童芯派API文檔

# L* F7 X! s( _4 O# k9 z
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。; O4 H  w7 Z. a0 D/ G- z

3 b/ X7 K/ G8 X) T
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

; R& V* m, K/ U& t5 ~6 m  d5.一些程式設計案例6 }8 l2 L, q5 ^) j6 n
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
1 }; K' E# R' H3 _" F: _
功能介紹:" L9 k0 I/ g/ j2 e9 S8 a8 Q
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
. B9 A: \- Y+ p0 O1 t通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
- U9 d  V  x# A$ x7 S5 \( \  M結合藍牙模組可以實現無線滑鼠的功能。
. K& h  K- e- Y( F
+ p4 f9 r2 c4 tfrom pynput.mouse import Button,Controller9 H6 i4 P' W' B+ C" V  S" R8 B# r% I) ]+ [
import cyberpi
& u% R5 |/ [! x  x# {9 Fimport time! R. Y& ?: v7 @
. n8 K: C1 q$ @: _: O
mouse = Controller()
4 q: D6 \! `/ i # h5 R& ?# z( e+ w2 _" R, @; c
while True:% F; ], R0 L" E# I
   if cyberpi.is_tiltback():2 E% f& j" ?4 q! Y, Q7 k/ c8 l% X
       mouse.move(-3, 0)
! R. f/ G/ G$ o  O       print(mouse.position)  G$ C) D, Q) y
   if cyberpi.is_tiltforward():
7 A6 U7 K8 m  X+ t$ g( x' d$ Z" d       mouse.move(3, 0)0 `/ y# B8 H& ?1 n) g
   if cyberpi.is_tiltleft():( b' `  c: {( i5 \2 R6 j7 g
       mouse.move(0, -3)8 o- j( A. ?- I
   if cyberpi.is_tiltright():
4 J0 N3 Y& _8 x6 l  |; L       mouse.move(0, 3)
! d* _7 t6 @8 z   if cyberpi.controller.is_press("b"):$ G0 R% B  e  I; g
       mouse.press(Button.left)
" j5 d) e4 B2 w8 ~$ }' C, ^       mouse.release(Button.left)
& L8 R; Z$ k& [/ D+ [. Z/ r       mouse.press(Button.left)" N, }- R: e  ~, y, K& Y
       mouse.release(Button.left)
' A5 K* F! z+ D* [: j$ q% b* {   if cyberpi.controller.is_press("a"):, T; l8 Z( I! T. i, a4 Q& p7 H
       mouse.press(Button.right)
; ?/ e& C8 u/ B' D. @5 R* }, g  y       mouse.release(Button.right). o9 }( C# z6 O+ v, ]
    time.sleep(0.01)
5 }. ^. C4 Q$ a' b: h$ ]8 G( q: P% r% C

/ C, g% \/ h: P3 v* z0 `
語音打字器
7 L$ s1 k( X" _
功能介紹:
! Q! h* X$ M% C0 \: g* d0 }利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。4 q- D: u" a1 L: Y  ^, G
將語音辨識的結果通過pynput在文檔中打出來。. G, l4 ^6 K: h  ^
該程式目前只能支援英文。- W& q7 G( V* ?3 z4 z2 k" W

6 ~; u; S% A( B5 |3 E* Cimport cyberpi
& A* t7 ~6 u; d( \from pynput.keyboard import Key,Controller# O" N' k2 M0 p+ q' W$ l( C$ Q
import time
+ Q. e0 }0 y5 P1 S & Y" n! t$ k6 b% ]5 W
keyboard = Controller(): q. j4 l: ]% _. b5 U
cyberpi.console.clear()
0 b  a9 B+ \+ V8 L1 A) F$ [3 Icyberpi.led.on(0, 0, 0)+ U( Y# W& o: n
cyberpi.set_recognition_url()
% |5 X& I. E" w0 lcyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得9 ]( S5 H7 Z' ?! M
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")/ K8 t1 L' G8 U0 }+ t. D
while not cyberpi.wifi.is_connect():: `# \4 Y% A, l4 n; e. E
   pass
5 F/ U( f+ p) b- h' S, rcyberpi.led.on(0,0,255)
' ]1 W2 \9 a6 v0 {! J/ N* v" ucyberpi.console.println("WIFI已連接")
$ ]! ?+ N4 a& c) y8 M2 a& a( mcyberpi.console.println("--------------")
  W) B5 Q3 v% e* w3 tcyberpi.console.println("按下A鍵開始語音辨識")1 x! |6 n, S0 O% [: ^
while True:
3 A$ d+ C9 Y$ O8 c/ X   if cyberpi.controller.is_press('a'):
; A: G) x# N& o' e/ ^       keyboard.press(Key.space)
! |: O/ E" h/ o3 O1 g, G& a, {( K       cyberpi.console.clear()5 R/ v4 Q/ a3 A# F) |; E
       cyberpi.led.on(100, 0, 0)
: s' Q4 l4 f" _1 j       cyberpi.console.println("開始語音辨識")$ _% N; Q7 J' |8 }9 x$ j
       cyberpi.audio.play("switch")! A- y+ E0 R% B: p- i: k7 Y* l
       cyberpi.console.println("--------------")
) I- @; E' p$ B5 w( @       cyberpi.cloud.listen("english", 2)
6 \9 l4 Z/ o1 D5 [9 O) f       cyberpi.led.on(0, 0, 0)
3 _+ e5 Z/ M$ H       say = cyberpi.cloud.listen_result()
. N; f1 ~$ |5 n       cyberpi.console.println(say)
0 Y9 D0 w2 J9 ]) Q       cyberpi.console.println("--------------"). N, O$ ~6 U& n- j
       for i in say:
4 X) o5 n: N5 n            if i == '':
. f& Y% |9 e0 \; d                 keyboard.press(' '): n6 @6 a& F4 C; w5 q7 k8 P% E
            else:
* b/ R! P8 }) |+ ?                keyboard.press(str(i)); E6 D0 _2 s9 I. R+ D! m8 G, b% w6 H
                time.sleep(0.03)
3 b' A9 U  R- F- g9 h
' E( U% m5 N4 u" h, x) ^* z1 h7 g. i
matplotlib音量柱狀圖

( I* H( e  R/ D# a, O# j- ?import cyberpi0 p: ^' a9 V4 T* Z2 Q
import time% t2 K2 W; Q( T- i
from matplotlib import pyplot as plt9 \; s, o2 b" c' l- H0 R3 I" T
9 H% L' _7 b+ B* ^( K0 p) C# R# h
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']0 S1 T6 v8 z+ w% J6 I
plt.ion()
: D4 W! y- }/ p" i 4 D% F, I& |' c) V2 w5 t- [7 S
while True:
( s3 ~. i" a6 j   loud = cyberpi.get_loudness()
' N) U$ ^1 q  r$ `  N/ Y   plt.clf()
$ L3 \, h& p- ?, }% @0 {. w2 d   plt.xlabel("數據名稱"), S: i, c6 W; Z- r
   plt.ylabel("音量讀值")
( x/ Y5 c4 ^' z   y_locator = plt.MultipleLocator(5)( S) e: C  m  l) \" X: e0 S' X
   ax=plt.gca()
+ P+ g- _# H+ Y' s" J. v- V9 }   ax.yaxis.set_major_locator(y_locator)- J5 s: y* P; T" J$ F
   plt.ylim(0,100)
% u+ y* Z, B; ?) X: C% C% Q   plt.bar('音量', loud, align='center',label=f'溫度{loud}')9 o8 t+ a5 l( K: R% H, h( g
   plt.title('童芯派聲音感測器讀值')
$ H! L' W; S- K2 n3 y% Q   plt.legend()) O. F* K) v+ P# r4 s# Q$ j
   plt.show()
" t- t& |) W2 a( u    plt.pause(0.01)
& A7 y% a  Z5 L) B  v0 j7 I, u4 O/ v- T1 M) F$ B1 s. S7 V% e3 ~
+ a$ H! x4 l- n' M) M
matplotlib 多圖表顯示
; c8 W7 f6 C, v5 M/ V$ m# G, t

9 P5 T8 k5 v  ~; A, ^& }" ]from matplotlib import pyplot as plt" _( b6 K- N$ x
import time
, R( k3 E' m3 y2 Q5 p! a4 Yimport cyberpi
1 Y+ [5 Y& X8 o! K
- z& H* w4 T7 M- nloud_list = []
2 t' `5 I! d7 Hbri_list = []
! g4 Y# B9 `& r+ P& L, _plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體) x0 e; U2 C4 ^9 r8 J. N: q- y
plt.ion()
+ Z) h& T" Y; ~: Pplt.figure(figsize=(10,10)), K5 t* \+ j- n/ x6 S
plt.figure(1)
$ f) i. t1 o/ V7 a9 B: c$ h) Ix_locator = plt.MultipleLocator(5)
: ~6 A! |' n9 _y_locator = plt.MultipleLocator(5). o4 F4 J3 Q2 d" ~. C* b
while True:; o0 V+ @8 M+ E3 W7 H! @
   loud = cyberpi.get_loudness()
3 h) r$ U4 ~" s0 v+ p   bri = cyberpi.get_bri()* ?# B; e; ~8 U4 {
   loud_list.append(loud)' q8 ^) [1 j0 T2 {; o3 @8 H( Y
   bri_list.append(bri)3 s  n7 C* f9 L3 Y' |7 C# [4 j% T
   battery = cyberpi.get_battery()
( I2 t! B1 Q5 R4 x   size = [battery, 100-battery]6 W: F$ {% L: T5 T6 M1 {+ f7 W
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']$ Y1 ]4 U: o3 s1 G
   ax1 = plt.subplot(221)
% h' X( {( ^- A5 ~5 b   plt.title('光線折線圖')
1 V+ X0 Q& ?2 D9 t: J) K+ c7 J   ax1.plot(bri_list)2 M) E5 d, k' D3 h
   ax2 = plt.subplot(222)3 A! v0 b$ m! S
   plt.title('聲音柱狀圖')
% C1 `7 {5 l( y   ax2.xaxis.set_major_locator(x_locator)7 r* Y7 }( L# m% ^* x
   ax2.yaxis.set_major_locator(y_locator)8 f! R+ h7 M. f8 Z4 k; x  y
   plt.ylim(0,100)
& _: \3 v5 O# m/ g( d6 N   ax2.bar('sound', loud)9 j, Y! \# j' C) P5 M0 `; {1 k
   ax3 = plt.subplot(223)4 y. u0 q3 S9 X" p+ }# \
   ax3.xaxis.set_major_locator(x_locator)) y0 w2 P3 e2 l6 b# ?4 ~9 P) {
   ax3.yaxis.set_major_locator(y_locator); _! n% {+ Z; U
   plt.xlim(0,100)
7 c8 k1 m6 K& T  U/ x   plt.ylim(0,100)/ U$ h) f. g2 k4 \  A
   plt.title('聲音、音量散點圖'), \" J' ^! f* w4 ~4 e0 J
   ax3.scatter(loud_list,bri_list)5 C2 J0 T; @, K9 _' r+ _; K9 A
   ax4 = plt.subplot(224)! u) D  h: @# y# `/ h( \
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
( w1 x' J8 j0 f  ~3 r$ b   plt.title('童芯派電量')
' P, U8 q  n2 ^  o   plt.pause(0.2)3 b- m8 F1 k* F9 O- T* {  s  d. j8 P6 K
   plt.clf()
7 Y* p3 p- n9 {" _$ y$ o* l   if cyberpi.controller.is_press('a'):0 G5 @5 _  |2 K3 q6 \6 g3 ?
       break
4 {6 x  ~6 R8 m" u, G; D   if len(bri_list) > 500:
* T& L2 f8 U  J& ~; ]6 _: V( H       bri_list = []
" F- m4 x  H" }! ^        loud_list = []
* m" C  F& ]) A! K
8 D5 v: e- {) G' S0 s" A

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-4 04:49 , Processed in 0.021879 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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