圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8555|回復: 0

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

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

0 ?" j6 k* @6 I3 j1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。
    4 Z' E$ o4 V# F) h9 E' R+ ]3 m6 g

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

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


9 n6 D$ A' A+ i* }
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。' U. ~$ d3 p" p
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可), @+ L/ S# n8 A
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    5 d! O! E* F' o, U: f' E

" y5 T" ?/ P- y7 Y, V
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)6 z6 o$ j! P( ?, Z9 g4 i
, m% l0 B/ i. K# ^' [1 g
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。) A! h" c  w* j

- f; ?# U  v; p8 ^0 g" Q, ]) i4 q
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    # P7 u) d+ \# W" v# J; _/ y

! {9 [6 a& E% o: H/ r" ?3.童芯派第三方編輯器程式設計準備0 c: x- @5 i4 L/ d
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。
    1 y' y! C4 E4 P* t' i6 s
3 I" @: x% `4 Q; s
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。
    4 j# x- _  v. X! J: z' F+ f

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


0 Y* ], {5 q1 |0 g: D, P9 q( m( \
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。
    6 W" ?+ Q: z& O5 _

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

- H' a* O  O7 ~+ t9 `: [) i
查閱cyberpi API文檔見:童芯派API文檔
% `  a) _6 ]% d  _0 e% p, A0 l
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。+ q4 e, {  R7 T0 C

3 ]( d- H( }3 O& j
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

7 V% y1 r, Z/ y5 g5.一些程式設計案例+ P5 [8 r/ n  h) e& W' E* F
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
) L( |+ T5 b3 A% [( n, k( @
功能介紹:9 x" _2 E; o' R  d5 j
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
7 }5 r: y! l9 r% R4 m$ _7 g通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。' i1 B. A' Y" o$ _
結合藍牙模組可以實現無線滑鼠的功能。
5 J' _8 ~  ]& M) ]" w- Q% M- J5 s
* t/ T* _9 C4 A; e: X% V) p0 ?from pynput.mouse import Button,Controller5 \6 B; j- h* Q
import cyberpi
, m% Y- ]) `4 @, H  vimport time
; y4 r1 Y. I# e- w! ?! y5 t" Y
+ ^2 O9 z/ c9 q  q3 H( r8 ~3 omouse = Controller()0 F8 d; U) T3 W: j* f( ^0 f
0 P( \# x  `$ ]1 U6 Z# X
while True:9 N/ o$ ^3 M9 R- G$ N) I
   if cyberpi.is_tiltback():! n+ Z8 Q1 C- f/ I! ^- u
       mouse.move(-3, 0): {* c6 }" U5 x# b4 [
       print(mouse.position)
3 M, |  F/ m+ @- y0 a   if cyberpi.is_tiltforward():
- v* b2 `3 T" q& }7 r6 \4 T       mouse.move(3, 0)
- U" {/ y: t* C7 r. c+ }- d, h   if cyberpi.is_tiltleft():
% l- \8 n9 \0 d. m8 c       mouse.move(0, -3)
' I) P/ {1 |" v" l   if cyberpi.is_tiltright():/ r/ {: d; L; I% S# L) w
       mouse.move(0, 3)
% i; d/ ~8 K5 h3 _, C% ?% m6 J   if cyberpi.controller.is_press("b"):
% y( Q1 u: E& p! n       mouse.press(Button.left)0 d6 `9 M: |* w! J8 }  k, f# q
       mouse.release(Button.left)
% a5 J; K3 I0 L' _5 _       mouse.press(Button.left)
# S% L6 k6 I" [/ _       mouse.release(Button.left)
5 n# ?9 g, F# H, r9 ^, _0 O! N" @/ I   if cyberpi.controller.is_press("a"):$ w) [$ n% a" b7 {  q- ~% e& s, P
       mouse.press(Button.right)" c# V! B5 C# n$ M
       mouse.release(Button.right); d, H6 ?1 [7 Y  b
    time.sleep(0.01)" n6 U& s: O* [

1 h) S1 c+ y2 B. e6 }; V
2 b- G# `8 A; E, w. a: _) H
語音打字器

7 y: \) K7 [, Z1 ~功能介紹:& O) I5 I  [, k- Y
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。7 P9 J! X! S" K4 F
將語音辨識的結果通過pynput在文檔中打出來。) ~" c( U& l/ W+ [
該程式目前只能支援英文。
$ q7 c& o" U9 D/ z& N3 v. H
3 c6 X3 ]# B* k" limport cyberpi
- M- N- Y. H$ {; E' ofrom pynput.keyboard import Key,Controller
( ]. z( f% R. l* m& ^$ Zimport time
0 v- Y0 O) P6 e4 m/ C! n! K8 H ( q# `: \  Y9 U1 E7 g( \
keyboard = Controller()6 I+ R+ o' [8 o6 |9 {
cyberpi.console.clear(), f$ X0 M. @( `& W4 r- H
cyberpi.led.on(0, 0, 0)
/ D' v7 k' _. \* M- xcyberpi.set_recognition_url()
% T4 n% G# T/ M0 w: q) N% t# a% J6 Qcyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
" U1 ^# z, E  Z) C6 S% f. w( B  s& ycyberpi.wifi.connect("WIFI名稱", "WIFI密碼")# s+ X: C: h& ?
while not cyberpi.wifi.is_connect():
, c$ g1 _1 o' ~! H) ?1 w   pass7 h- N8 O$ g! k/ m
cyberpi.led.on(0,0,255)
) ^! L; U% I$ u+ dcyberpi.console.println("WIFI已連接")
! f" ?) Y% ^5 G& V2 \cyberpi.console.println("--------------")7 \% W( W1 T% ^7 ^( w- k- c5 z
cyberpi.console.println("按下A鍵開始語音辨識")
! H, \; s* d* d4 j) \while True:1 t0 L8 g, b/ d1 s
   if cyberpi.controller.is_press('a'):. Q$ d2 @; ?9 ~7 m, @3 q/ b
       keyboard.press(Key.space)# f9 D) \# V5 Z5 h) g
       cyberpi.console.clear()
7 U7 f" `2 q: R' N       cyberpi.led.on(100, 0, 0)
# e# j* s0 K) \2 E       cyberpi.console.println("開始語音辨識")* f6 D# k, P( ?, S' e
       cyberpi.audio.play("switch")
$ n$ |$ t' g- t+ ]) [  i       cyberpi.console.println("--------------"); w) f7 q' e- o8 U% z  a$ e$ M
       cyberpi.cloud.listen("english", 2)
3 c1 y9 g: p9 X; @; x       cyberpi.led.on(0, 0, 0)
2 Z2 \3 H" r- ^! j( ?# }       say = cyberpi.cloud.listen_result()/ s7 K7 {7 ~. [. p: Y' w" A- t4 j
       cyberpi.console.println(say)* H% l4 T" l/ U/ z+ N9 T3 ~3 F
       cyberpi.console.println("--------------")
& ~0 @% s" w# v, }0 {( w  E       for i in say:2 q5 j' M5 |; q3 |. d# P, B8 o
            if i == '':
9 |" s9 D* G. m( ^' h                 keyboard.press(' '), j. x: c+ A. O
            else:) |! k+ B2 m# E8 `) C
                keyboard.press(str(i))) h* T4 |$ x7 A' V+ W, U' g  T- {
                time.sleep(0.03)
0 P1 F1 ?+ ?  z& v& u* v( W
7 n  g# j* p8 ?( \6 h( p
matplotlib音量柱狀圖
8 H. @4 J% R8 \$ G
import cyberpi  T1 o; L* {# O6 r' `# b( m
import time0 o1 B6 x) m; C% `
from matplotlib import pyplot as plt; D. Y+ j; C) o+ o1 s

: W7 |- [: M+ N0 Rplt.rcParams['font.sans-serif'] =['Microsoft YaHei']
/ b9 {1 L6 T0 \. k# E+ X( bplt.ion(); Y9 f" R& u/ U5 j

7 u, j. \5 A' a" y6 i2 N( {while True:3 [: f2 A7 ~  p1 c
   loud = cyberpi.get_loudness(). M7 h" }) A& K$ h4 I
   plt.clf()
) t/ P; Z  P6 s" D; q   plt.xlabel("數據名稱")6 y3 f% T" ?, y( W* J7 T
   plt.ylabel("音量讀值")7 Q3 \* z, R8 {& H6 b* P- b6 N
   y_locator = plt.MultipleLocator(5)3 F# Y5 M% X2 e  b2 Z* M. s/ a% L: A
   ax=plt.gca()/ i3 `/ Y( y* ?3 z# o/ ^
   ax.yaxis.set_major_locator(y_locator)
4 U6 Q# F2 y( e4 t* w# j   plt.ylim(0,100)
( H# e+ `! e2 J4 ?+ T1 j* S: h   plt.bar('音量', loud, align='center',label=f'溫度{loud}')3 K: O( C/ i% a) k
   plt.title('童芯派聲音感測器讀值')8 K8 V4 U* R; O- }  w
   plt.legend()
" m: ]" W$ G8 C   plt.show()
6 c- b1 l) T4 z- Y, p" B: j; D6 y    plt.pause(0.01)
& K6 p/ w+ m3 H. o7 Y2 M
( I# u- C: C  Y# V8 L6 O, p7 s3 p6 s( Y8 d1 C  O6 b
matplotlib 多圖表顯示; N5 G" v' U: ~: t

, j. |& G$ x: n/ S9 z. ]from matplotlib import pyplot as plt
8 v& ]" w/ X. A  _# L3 |import time
4 A+ ]3 [) ~+ b) qimport cyberpi
1 B* Z, W5 H- L5 v4 G+ Y. T$ [
! p" L+ M2 E0 I: q5 ploud_list = []
, M# M' m( p. Y. ?' Ibri_list = []: A" F, p8 Y; [0 z4 J* A" K' U
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
! M5 p, P) t- @plt.ion()
- P8 l7 l( x7 Y1 w* ^+ zplt.figure(figsize=(10,10))
# V+ i/ b1 G- f. p) Y$ `plt.figure(1); M8 k- M# d. X
x_locator = plt.MultipleLocator(5)
: F- ^" M, e. A& Y. F2 A( i( m! R% ~y_locator = plt.MultipleLocator(5)! R& D( |# p( m6 `& J
while True:) Z, f; [' T# u0 |. y
   loud = cyberpi.get_loudness()
. G5 [1 Z, e; p# \   bri = cyberpi.get_bri()
. a0 D/ y" {' U* Z. X1 J   loud_list.append(loud)
. }5 }5 B+ i9 T+ l' l   bri_list.append(bri)
  C& X6 [' s% K4 N   battery = cyberpi.get_battery()
7 l/ i, ~+ Y4 s4 i% `' R   size = [battery, 100-battery]. G8 n: I# x/ k' `. l* V: F' [
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']
* H2 i3 I$ Q/ N: a% |   ax1 = plt.subplot(221)
3 {4 m7 k$ @. ^6 B2 A! [  j6 E   plt.title('光線折線圖')# y7 n: p5 d8 Z7 V  m
   ax1.plot(bri_list)
9 l$ k: F, u+ Z3 v# p. U   ax2 = plt.subplot(222)
8 Y  U3 v0 \# l   plt.title('聲音柱狀圖')$ F# l& H" m, x5 K, I' N
   ax2.xaxis.set_major_locator(x_locator)
7 y, Z$ `  }4 Y! O0 Q+ ~# [$ S3 L   ax2.yaxis.set_major_locator(y_locator)/ e8 U- p; m  l; J
   plt.ylim(0,100)6 Q' ?: W2 _5 \1 U3 z- A
   ax2.bar('sound', loud)
9 Z/ B4 M+ q  o7 ?. @! g   ax3 = plt.subplot(223)
5 ^$ I  J( \' S+ g+ i   ax3.xaxis.set_major_locator(x_locator)
- {; b9 x, s: w' Q$ f   ax3.yaxis.set_major_locator(y_locator)
- G, u7 r+ Y# R" s6 t: ?9 y4 U   plt.xlim(0,100)
- D* I. T7 Z2 N! B4 w- |7 X   plt.ylim(0,100)
) E) d6 }1 m4 P; I  u   plt.title('聲音、音量散點圖')+ d0 n0 R- }# K' h! U
   ax3.scatter(loud_list,bri_list)# u1 @* Z( A, Z3 E! g
   ax4 = plt.subplot(224)$ ]: q7 N# a. E6 v. J
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'}), @7 ^6 n' s  ^; _. i. }" q. \
   plt.title('童芯派電量')
+ l0 V5 j: b6 ~) ]6 r- c$ W   plt.pause(0.2)
! ^" G1 }9 b) I   plt.clf()
( o* B* h* @2 B% ?# n; F/ v   if cyberpi.controller.is_press('a'):/ W) d  S6 y: ~2 t. t2 E
       break
( X; `/ a: u! l- [8 C* b5 M   if len(bri_list) > 500:
* O( R1 N. E  B7 f' i       bri_list = []8 Q+ f8 K! c* J1 \+ w3 Y
        loud_list = []  F; o; T% w6 w# N9 v9 h

/ K4 h% e9 \$ Y8 @

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-12-6 08:49 , Processed in 0.028036 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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