圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8450|回復: 0

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

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

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

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

; Y* W+ R, v9 t- i
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。3 h! ?# y1 F2 h% Y" r8 J
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)1 {) B, h6 n+ z; ~% I
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。( X3 \+ H* t+ Y/ T

5 X* E' m& x" ^+ M5 y% f) Z1 o2 C
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    9 [6 @& d. T0 `$ a/ P' M# K
( g: f4 Z8 n  p1 ^* v
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。6 J# @$ A4 X4 D/ w
' R$ @& e0 F; [( {) ~/ {9 _
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    6 s0 j: L; w' L+ `. K2 y
: M  A2 N  g; d3 V# j2 ~
3.童芯派第三方編輯器程式設計準備" X  N0 [  ?2 `/ R' e# y7 x! ]
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    ; }# y! [9 E5 q7 I( R5 h7 d
! Z' Z: g( t$ O& G. s. I9 }  }3 c
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    , t& _/ o) D$ ]9 E( E2 K; n5 V* I

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


( ~- ^/ n+ E+ u  `0 L$ k/ S1 }
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    . o: c3 x$ w, P. K) t

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

0 @- o. j. n( x6 {
查閱cyberpi API文檔見:童芯派API文檔

0 A8 C9 t4 u( g: [2 M6 W4 W7 u7 A4 ~
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。0 C# m. ^2 x# O( L7 t9 j
* I: N' V1 @$ k
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
4 C" @  ]/ i, A7 n* z
5.一些程式設計案例/ I' c6 T+ i" H# B1 r: I: J8 Y
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
! }* |; F& N4 G3 a: _7 s3 S9 ~
功能介紹:
% ?% a* u* _  G1 N( l0 b利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
% k0 c$ h, m. b通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。/ s% k1 [! Q# x; A- M; r" B
結合藍牙模組可以實現無線滑鼠的功能。
# f% h4 c3 B# C: s* `* M) A- A: }& L! ?; [
from pynput.mouse import Button,Controller$ v" `4 j2 Z4 {# O/ I
import cyberpi1 ~/ y( P/ j7 d2 X
import time
1 q8 R* l) v9 h. M# L3 d+ l 4 R  [9 O' c% j/ `' c5 e
mouse = Controller()
( {, A& l4 W6 a, P . p0 k7 @$ T2 V" U  B0 ]
while True:
& M$ K" n2 v1 \" e   if cyberpi.is_tiltback():: @3 B3 V" x% J
       mouse.move(-3, 0)% ^- D$ k0 q! e7 h$ f4 w
       print(mouse.position)) Q) V; b4 C  V' D
   if cyberpi.is_tiltforward():( E3 q4 G/ @! c1 K: E6 |
       mouse.move(3, 0)
6 Q- m) _* I8 c) I4 @2 A' E1 A   if cyberpi.is_tiltleft():
" i) |3 W0 m! h, }  R5 Q       mouse.move(0, -3)$ y" i; r! f% t& k7 {
   if cyberpi.is_tiltright():
' I- K% {: X; @# S/ G+ M( ]+ v       mouse.move(0, 3)9 [( k! F2 P/ o& k* T- h9 L* ^
   if cyberpi.controller.is_press("b"):
9 [, R: T! s5 ~# t       mouse.press(Button.left)" S" h- s1 Q4 [4 @% O
       mouse.release(Button.left)
  |$ d+ a: M  k9 A( o& O$ D3 w4 e9 J       mouse.press(Button.left)
" V: P- Q0 [+ Q; }8 G% q       mouse.release(Button.left)
+ F. G1 S7 b( e0 x   if cyberpi.controller.is_press("a"):
) Y/ v4 Z- n: p: L       mouse.press(Button.right)7 o7 F. C# a3 n) H1 E
       mouse.release(Button.right)$ J2 w" `" g- n; y, `8 }
    time.sleep(0.01)
; W0 [- y7 \( u; n+ i
4 I/ I6 L5 c* G* N" I
* D0 I+ n, I+ |% C
語音打字器
8 F9 J# c- _1 |. S; ]1 S' U
功能介紹:
8 W# G: M! |7 t  U8 t! H( \利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
# M7 L# ~6 y/ {# u8 s將語音辨識的結果通過pynput在文檔中打出來。& D+ p* D: Q; N. i, V* V
該程式目前只能支援英文。& L$ f; V; ?0 r8 H

/ R) T9 X. M% c  \$ B+ R- |import cyberpi
; J9 R$ L) T  ?# C% m! s$ S! N0 o5 wfrom pynput.keyboard import Key,Controller
9 \5 x* T6 O5 i" uimport time9 d) c/ m7 R" h- j5 b4 ]9 |3 k
7 r4 @& s3 H; S/ O
keyboard = Controller()
% {& Q( c1 O" ncyberpi.console.clear()4 N/ B/ y# t# Y4 ]) r
cyberpi.led.on(0, 0, 0)
& z+ M( _& s7 A: wcyberpi.set_recognition_url()
  x# M+ u+ S* I' w7 O- Gcyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
  j7 S3 k- I" r3 X! T# Mcyberpi.wifi.connect("WIFI名稱", "WIFI密碼")3 y+ p1 H; g- g2 [( {
while not cyberpi.wifi.is_connect():/ Y0 }0 r& Z: ^# `7 F+ x
   pass9 m. y+ }% c& w) i/ l# p* ~
cyberpi.led.on(0,0,255)
# y  x# b4 V  {cyberpi.console.println("WIFI已連接")- f# |9 ~- h* t$ Q
cyberpi.console.println("--------------")+ `8 Y8 e  g7 h' Z; w1 l
cyberpi.console.println("按下A鍵開始語音辨識")* }/ `' I' \' Y9 W- L# m
while True:
6 |; a  T+ |# Z9 E* H8 {3 E0 i   if cyberpi.controller.is_press('a'):4 ^: A1 V. X% J5 _; _$ g
       keyboard.press(Key.space); t3 k1 a) m/ E& \, j1 |
       cyberpi.console.clear()
9 [* d3 f, {% q# a       cyberpi.led.on(100, 0, 0)* {& r% D% M0 J$ E  ^
       cyberpi.console.println("開始語音辨識")
2 V' D' {4 a/ V7 b0 w9 f! N       cyberpi.audio.play("switch")
, i8 U8 k& J* q# _       cyberpi.console.println("--------------")2 Y- f- ^! [* {
       cyberpi.cloud.listen("english", 2)
* Q2 x1 p- @! W( O/ ^) P       cyberpi.led.on(0, 0, 0)- }) `  G4 G, \. u/ p" @$ t, f  m
       say = cyberpi.cloud.listen_result()
9 u, g- Y; ^( X# d# t& ~  k* ^2 }       cyberpi.console.println(say)9 F- o2 Y% R. A" m4 k3 N( i
       cyberpi.console.println("--------------")* E& {! a8 ]1 B; O8 S
       for i in say:
1 _+ `) N. W7 t  A1 M" |% e            if i == '':6 ]1 W( u% p& @" S
                 keyboard.press(' ')/ ~1 F6 Q( R8 q  q
            else:
# P" h- w9 ?' N0 J9 n6 U4 S                keyboard.press(str(i))7 Y# r2 T; X& }# _3 I( M( a6 V
                time.sleep(0.03)
/ N. ?* ?$ ^3 M! v& F

4 F3 V4 U1 V& E) Smatplotlib音量柱狀圖

8 f& l: O& i2 A' n5 P' b; m2 r3 pimport cyberpi
; g3 L: G1 y; ~" S0 E: C: Iimport time& k: C( c- }1 r: e) c3 T% g& l
from matplotlib import pyplot as plt1 T5 a( {- S: q& V5 _5 O; z; Z
+ K/ K/ d' i, _: y9 E3 _5 U
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']9 g2 W$ O* k; G4 t2 H$ w6 k- B/ g
plt.ion()+ y( r- G+ y% _5 g$ m% g
; E$ F8 L# [0 T; k& w: M% Q% p
while True:  r5 R8 D: J7 P7 P, I1 W
   loud = cyberpi.get_loudness()
' G" ^: }& P9 j% ?6 o+ F   plt.clf()3 v: ]9 _  i) i8 O: ^
   plt.xlabel("數據名稱")9 G% Q0 O. B  m% D# x" k& N1 o( H
   plt.ylabel("音量讀值")
/ A1 ^5 [) ]4 z+ V6 W/ W   y_locator = plt.MultipleLocator(5)1 s9 b/ y( {6 s* w: J& n
   ax=plt.gca()
8 @9 Q$ Q/ n% x1 w" V   ax.yaxis.set_major_locator(y_locator)5 B" H# {" e: T
   plt.ylim(0,100)
! x/ q9 |4 h: j8 E/ z* q  `   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
0 O9 m" n9 ~$ v6 u; E; s& y   plt.title('童芯派聲音感測器讀值')+ X* {. p3 A3 k0 a+ |" x
   plt.legend()$ D  E; p& `6 a  y
   plt.show(); D+ S9 m" Z: C; g: C6 [/ X
    plt.pause(0.01)2 {8 e+ e/ Z8 E( \& D  @# I
- Z8 G! w( J$ r# T- s

& Y: {+ }" g/ _% A+ x7 B( o( mmatplotlib 多圖表顯示$ ?0 a/ T1 a+ r: n
5 F$ N: O6 A6 \( T2 h- y2 M, T
from matplotlib import pyplot as plt
  d. E% j1 ]2 w* ?1 w9 dimport time8 O+ k1 c6 d4 l) B& T
import cyberpi
% b* |/ f) Q; D& v2 ~
( ]/ V+ G- T9 E7 Yloud_list = []" `, G' E7 w5 S: [9 j5 h
bri_list = []4 N; b( e/ z- w: _. E# X% T$ s
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體1 k6 T) q+ x/ A. E7 Z1 H5 m
plt.ion()
4 C6 R- j9 w' e5 x& U) V# Bplt.figure(figsize=(10,10))
9 C- _( W) @- M/ R% V+ y7 ]plt.figure(1)& _# |. T3 Q) Q; R  O" v/ T/ J% ~
x_locator = plt.MultipleLocator(5), j1 }% J- E3 L8 V- b
y_locator = plt.MultipleLocator(5)8 X5 p8 M: @( e. N1 ]
while True:
" _; y2 ?4 a  p8 N9 J( R4 k, T' S/ ?   loud = cyberpi.get_loudness()7 e" T+ m3 @( `0 n
   bri = cyberpi.get_bri(); f3 L$ {* ?7 h
   loud_list.append(loud)8 ~8 @  j) F9 h3 E
   bri_list.append(bri)7 I4 f5 a" h8 B1 W* `* A# v
   battery = cyberpi.get_battery()9 A* S* Z& \) i1 L5 l7 W
   size = [battery, 100-battery]
- j. W' x7 Q7 U. u   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
7 D& I! x( V7 |2 b2 S# g  B   ax1 = plt.subplot(221)
* `; H- u8 E. Y0 U/ H   plt.title('光線折線圖'). s2 ?( [) h; K% O. j
   ax1.plot(bri_list)
( f3 y3 q# h6 ?   ax2 = plt.subplot(222)
! x* D" R1 X% G+ b& z   plt.title('聲音柱狀圖')
. I! i( _$ r7 q% y" j$ a/ `8 b   ax2.xaxis.set_major_locator(x_locator)
, P, D6 T0 ]  E) i( m. F   ax2.yaxis.set_major_locator(y_locator)
1 t& F3 X; x" ?% c0 n# U) b   plt.ylim(0,100)
1 L& Z# f2 h" Q# ^, P( M   ax2.bar('sound', loud). r; e* B( |3 ~! U& T" m
   ax3 = plt.subplot(223)  ~$ d0 o( A  Q- U) C! A0 H% m' d5 P
   ax3.xaxis.set_major_locator(x_locator)/ ?& b& x. t" E+ I, S
   ax3.yaxis.set_major_locator(y_locator)( m9 V9 `* J/ O' ~# q$ x. ^
   plt.xlim(0,100)# N0 M, u( g5 z, u  d. `
   plt.ylim(0,100)2 R$ K4 p0 R% p# H
   plt.title('聲音、音量散點圖')
. ]8 K7 i6 ?% Z; Z7 O8 m   ax3.scatter(loud_list,bri_list)
7 ?9 x9 k% o! u   ax4 = plt.subplot(224)! Y: q9 Q$ G+ o/ k& |$ A# O
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})# z) A/ ~4 ^4 K  F7 n
   plt.title('童芯派電量')3 z* D6 x# S2 R& G( g; I
   plt.pause(0.2)
; t) a- _) H- ^% \7 D  W   plt.clf()
/ @# b; j8 Y6 X7 Z8 v1 A+ U   if cyberpi.controller.is_press('a'):
! K( q4 `0 M6 N) m# R0 x* C       break5 O  t; v- |8 v& K# o: j# i
   if len(bri_list) > 500:
7 J0 \5 n. D) n2 x' l6 R       bri_list = []
8 B* K& u' e* r- n        loud_list = []
$ I" [8 u3 A/ \: B9 m# W' k6 O

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-29 13:19 , Processed in 0.026072 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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