圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 7792|回復: 0

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

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

1 y& c( _9 T" k9 E( E! M% R" F1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。( L6 C8 V2 P' I: z: Q) A9 ?

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

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

( b( H) e8 a+ H( B8 e
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    , e0 T+ @  o& o
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)0 _: B! u3 e  U
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。% ^# p/ a& `! b* v' y& y

% n6 r+ k* I& O- n7 ?+ k
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    & l/ u# k7 H2 P
; @4 o6 @& D/ _. s, D
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    8 M* a4 y* R. ^& j

8 R' J: Q' U! V( Q- }& q4 P* Z
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    $ E6 |3 Z3 a# K0 |9 C
6 K- o" p0 E7 b6 d2 |- w9 {& E: {
3.童芯派第三方編輯器程式設計準備
" R# E$ i9 @% `; p- |
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。  ~% p  n/ j% X0 N: X

. R0 s) ^# W7 T' M* z% C* \# q: t
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。$ Y2 a$ q; {, @- k) g

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


2 `, ~- O1 K' R$ U8 c
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    " K! ?7 z2 Q4 e  O8 _1 ^6 X! b  `

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

, ]  A0 t. w9 H% p! Q* f9 D
查閱cyberpi API文檔見:童芯派API文檔
/ h1 y! z* ^: L- b
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。- }3 H/ B! d$ k# A* M
5 F% d4 G6 u6 q4 l
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
- K$ a3 Y; x. L
5.一些程式設計案例
6 s; @+ ~* v! m童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
" v) o8 l/ v, ?) V) X" f. }( E
功能介紹:
& v/ [$ q9 g% F$ Q: V利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
5 B- ]9 D/ H# D  G+ M+ c% x% G通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
  A( {( L6 n# h8 Z; i( F結合藍牙模組可以實現無線滑鼠的功能。+ ?( n9 B( M, n" |9 v. C4 h5 D

- h; k, R, U% H. _7 d* tfrom pynput.mouse import Button,Controller2 h+ j! B) B; [5 U
import cyberpi
3 A. R' N. {: wimport time3 L( Z9 Q1 `; w; l

/ _, j+ e3 v6 Y& Omouse = Controller()
) {2 ^& q8 o1 \2 Y( g+ s4 ~2 m 4 I. z2 ?3 `8 U. c2 h% X. M
while True:
2 a/ |5 n& R5 i# F9 G   if cyberpi.is_tiltback():
% M5 n9 n  y8 [' t& B7 T; k       mouse.move(-3, 0)2 m5 ^9 x( v' k$ @
       print(mouse.position)
9 Y9 {$ n: x' t6 k+ D4 y   if cyberpi.is_tiltforward():
4 U" Y, \# J* ^       mouse.move(3, 0)9 D4 A8 w0 G6 E1 _6 \) \+ D
   if cyberpi.is_tiltleft():1 w. T2 s" P$ o; o5 u' e
       mouse.move(0, -3)' \' m. D8 d6 W' S
   if cyberpi.is_tiltright():
4 V/ X; F$ X# c& \4 A% D1 C* L       mouse.move(0, 3)
; m, _: Q$ C1 v   if cyberpi.controller.is_press("b"):
9 S8 O+ H* k7 @& R; J8 Y       mouse.press(Button.left)2 _& k' Q3 p! [4 |( w
       mouse.release(Button.left); o4 N: `  p- D6 b. T
       mouse.press(Button.left)# m- q; Y) _* S2 m1 g% e
       mouse.release(Button.left)
+ o' q9 ?1 |# ~, t) r9 P; v   if cyberpi.controller.is_press("a"):
; i) Z; G" O0 M( X4 Q       mouse.press(Button.right)& f, V0 f) q0 ]1 d( R
       mouse.release(Button.right)1 ^, A$ t/ T: q4 u! d( E
    time.sleep(0.01)3 G7 I4 f0 J8 a( T7 o9 [

2 E8 c5 b7 s1 C' S0 n1 X
  s9 Z7 J8 F) H8 k" r6 t  y
語音打字器

' h( D' X2 p: N$ _6 w5 O功能介紹:
/ l/ p0 F  ~% [利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。9 V- N8 |8 {- t6 T% Q' T$ W+ `
將語音辨識的結果通過pynput在文檔中打出來。
1 o  \* ], _1 a- d" D) F該程式目前只能支援英文。
# H7 Y5 s9 W8 i/ o) J8 a1 f9 p- I7 @, s1 s
import cyberpi
; I+ }3 p$ ^) |" [/ [) m/ }from pynput.keyboard import Key,Controller2 q5 i0 R9 {1 N2 F
import time: u# T( n# R/ e1 h- ?6 }! U; t" `

5 [) t' o3 B& d4 a- v, `/ akeyboard = Controller(), t% G7 F3 ]7 t* i0 G8 t3 j) U+ s; f
cyberpi.console.clear()
8 {; X3 L' Q) b, s! X- Ucyberpi.led.on(0, 0, 0)3 F0 `) f# S0 m6 E' R6 e
cyberpi.set_recognition_url()
9 J! U# |& Y# S. hcyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得& C: A/ {! U2 g# x! T5 {* i5 k
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")& k+ K+ w. R( V
while not cyberpi.wifi.is_connect():
; O9 i( f0 B$ V' ~8 J: b3 }   pass: F2 |% y% ^( w4 O2 z+ k
cyberpi.led.on(0,0,255)
4 t. r% y# M7 @- O" w4 Dcyberpi.console.println("WIFI已連接")/ F* f; R' x# w6 P
cyberpi.console.println("--------------")
) O+ _5 L' u$ w6 C0 o0 Acyberpi.console.println("按下A鍵開始語音辨識")1 h  C) T& P# \7 ]# X
while True:- J% Z5 q; Z7 u; j
   if cyberpi.controller.is_press('a'):9 M% P0 y2 S; P8 C+ j: q) L+ @; g5 ?
       keyboard.press(Key.space)& f3 c2 @: s; `. ^
       cyberpi.console.clear()( ^) u: m7 [! z2 \% e
       cyberpi.led.on(100, 0, 0)3 q- n. C( R! L7 d9 [# f
       cyberpi.console.println("開始語音辨識")" O* V  ^4 m( K7 D+ f
       cyberpi.audio.play("switch")+ {* F9 e1 R# j& X# H; f
       cyberpi.console.println("--------------")
) }0 M+ ]# F/ w       cyberpi.cloud.listen("english", 2)  \9 s; }5 u/ B+ S# H% S
       cyberpi.led.on(0, 0, 0)6 |. Y/ H& l8 N, G: O1 y
       say = cyberpi.cloud.listen_result()
  h# S- R+ T) u; \       cyberpi.console.println(say)
3 \2 S: U9 W9 A) t- |       cyberpi.console.println("--------------")
8 m! U  \) i0 @2 h* O+ V       for i in say:6 ?- T  l: I1 r: h: G8 o
            if i == '':
5 F1 o7 a4 x: o" u+ \  y* B* `1 s                 keyboard.press(' ')+ p: Q' F6 g/ \. d* Z: V
            else:0 T6 A0 a6 i8 a! G% n
                keyboard.press(str(i))+ U, z, m. C( d
                time.sleep(0.03)" U# l5 s* L/ z$ N/ f+ {+ e" J
# m' u' f5 m& P3 C) w& M7 K
matplotlib音量柱狀圖
# ?/ \  |! V2 r6 f0 ?( ]
import cyberpi  g: o6 v2 f. \* h' U: }
import time( T% B( X& H, F
from matplotlib import pyplot as plt
5 ^4 R/ s: p: v. @- s + T0 r% s5 D  F) ]7 @8 F
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
3 R3 |& P9 B8 W2 s4 p" s1 Hplt.ion()
% Q. c/ {3 s$ E0 t   q6 K* @6 g% ~! Y# U2 p
while True:
7 C* F2 c' x" @   loud = cyberpi.get_loudness()* i; j. u* |0 W  U0 F! Z
   plt.clf()% X& x- P% c" |) r4 O# s! @
   plt.xlabel("數據名稱"). l/ H, f$ K, v/ h& i% e
   plt.ylabel("音量讀值"); E4 W' c- v+ e6 Y$ e! m3 f0 A
   y_locator = plt.MultipleLocator(5)& P, Q8 b8 Q! a5 K* i
   ax=plt.gca()  ]* I7 p! P  I1 @3 Y
   ax.yaxis.set_major_locator(y_locator)
+ m6 D4 r3 ?# }6 K) ]! t' H9 n2 Y   plt.ylim(0,100)7 U$ U  a/ Q& R
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
/ r) X9 k. \" T6 u( @8 n; U   plt.title('童芯派聲音感測器讀值')
, j: M: b: n  x! e$ L) `   plt.legend()
8 l, O- u3 P  W3 h4 ^% _   plt.show()6 m* N& U5 Z) I* X
    plt.pause(0.01)
3 s, X7 L% W8 U' C1 m% J+ B& f; u% f& V: E  P2 t
: Q. u. C6 E4 L, r0 R$ I
matplotlib 多圖表顯示
) R% x6 h5 z+ [/ A/ `, m

. Q; S% i. p' J- T8 a: R2 k# kfrom matplotlib import pyplot as plt. n8 u" w8 A* S5 b: \- p! V
import time9 B, |/ s/ B  k8 w( o4 V
import cyberpi
- \7 y. G% r6 e' Q1 W
! c& D2 |% ^6 ^: Z& bloud_list = []5 _! u  p# t6 H# [9 k$ J
bri_list = []
! j" G2 G; p, w2 E7 Iplt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
: v. O. e3 l: c8 Aplt.ion()4 G/ s7 u0 V) {. d1 {4 b  E7 k- G  E
plt.figure(figsize=(10,10))
5 m" E3 a  g) A  f3 L  O% l, k. F: H+ Kplt.figure(1)/ b. J. _- @5 }: Z7 v* h, y
x_locator = plt.MultipleLocator(5)
6 g5 e8 m6 N3 A' [* ry_locator = plt.MultipleLocator(5)
8 g0 B3 [6 N' K; M2 f) C5 B( Dwhile True:* e8 ~% G7 s6 P$ ~" o; H1 s9 _7 E
   loud = cyberpi.get_loudness()  i2 q" C# P( u
   bri = cyberpi.get_bri()
- a- s8 @( i/ K   loud_list.append(loud)) C8 R; ~* N+ f6 x! q# S
   bri_list.append(bri): Q/ C& D0 {9 p+ h
   battery = cyberpi.get_battery()
" Y0 A) M5 N, R' F. N   size = [battery, 100-battery]- V- }2 ]  t6 P/ K
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']* p9 R. F6 f2 b% R8 \
   ax1 = plt.subplot(221)
- O5 d, }; k, |   plt.title('光線折線圖')' F6 k( v0 l6 U' W7 ]
   ax1.plot(bri_list)
) t, ?) ]- x) Q3 D7 u   ax2 = plt.subplot(222)- A6 s: R5 l/ T
   plt.title('聲音柱狀圖')
2 V: s, u8 }9 _- t# j4 B) X9 l   ax2.xaxis.set_major_locator(x_locator)
6 l, d: h" F3 h7 @9 J- e7 z8 S5 k   ax2.yaxis.set_major_locator(y_locator)
7 ^9 i- }4 b/ f+ ~3 t   plt.ylim(0,100)% c& Y8 C6 W9 n8 W; G
   ax2.bar('sound', loud)2 [- {& Z9 x' h( j. V
   ax3 = plt.subplot(223)- f+ j! A0 C! B9 a
   ax3.xaxis.set_major_locator(x_locator)
7 }, G* @* J9 b4 S6 ?* o- r   ax3.yaxis.set_major_locator(y_locator)* M8 H# W+ q) s2 m0 u
   plt.xlim(0,100)
2 o7 b% i) q, g' z1 [8 ^, }* p% G   plt.ylim(0,100)
. ]" s, o9 u6 j   plt.title('聲音、音量散點圖')7 z0 P" }! S. X) w- r( z* v
   ax3.scatter(loud_list,bri_list)
0 `% O+ e" v" ^   ax4 = plt.subplot(224)
! M1 M; n- U  j: D- \   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})
* h/ O' ^6 W# u! d! B   plt.title('童芯派電量')9 }4 M; R5 S8 U2 N8 ]( C
   plt.pause(0.2)4 q3 _. u$ h9 h; ~$ ^
   plt.clf()
6 Q* r& A, J$ b! ^9 N0 K9 G   if cyberpi.controller.is_press('a'):8 [( L# \* \8 x0 h( c; f& ?/ p
       break
' F3 k8 G4 M+ Y   if len(bri_list) > 500:* i! N! P2 U7 n
       bri_list = []
/ V8 J  y- x$ l; {7 b  C" t        loud_list = []
4 p( R" c+ F  @, |; W9 H& l) P+ v) X3 }5 A  M6 c+ X

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-7-15 04:40 , Processed in 0.025602 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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