圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8452|回復: 0

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

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

/ X. e6 Q( C2 w3 \1.安裝Python環境
  • 進入Python官方網站下載Python環境包,請根據自己的作業系統進行選擇。建議下載3.6-3.8的版本進行使用。如果下載最新的Python版本,可能帶來無法正常使用的問題。比如Python3.9以上的版本目前是不支援Windows 7作業系統的。( O: J/ v/ w# z9 t' X

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

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


* c& H& T, p( f8 p6 W# X6 ]
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。( g" u" |" f& _' j: ~
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)
    % W/ I* m3 W4 _9 K5 o
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    # U3 i) g3 V$ d" y) {& n( s  Z8 X: O

/ A$ V/ H1 m; u5 ~  X% c1 F: G0 l
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    ) g' ?7 F' a  t; W

$ _9 P1 y6 @# }. F8 L; X+ `
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
      z/ l% C) N% B! X2 |/ ?  C" G
) p& O" ~" q/ Z8 [$ ]# f0 q8 S
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    ( r  y! }- f3 A; ~$ R

( ~* j% ^( n; X: J6 U: K% v3.童芯派第三方編輯器程式設計準備; X2 x: A3 A! g/ y2 W
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。% H# |$ Y5 ]0 U2 H: Z2 G9 P
' ~# Z7 v- P9 M2 Z7 ?1 |5 S1 ?
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。  S) X# X6 H) J! C% g

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


# p: O/ O( z! l* }& O! d
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。  l9 [7 n% H9 s( P+ }

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

, ]( W  s- F" z: L; J( O
查閱cyberpi API文檔見:童芯派API文檔

5 v7 m! P( v9 A
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。2 O: a1 s& N, L, J: _) ^+ B
2 R6 h# C! p& o/ j
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
4 m3 W$ Z3 G# O  c' l1 a; |
5.一些程式設計案例
1 m  a% F$ V( V# r0 V  y  M: |童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput
) s" B: {. I3 e4 {4 ]. F2 t5 i
功能介紹:
! t5 M6 X" h( I利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。& o6 X' {5 f. D( p
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。5 q# f) N$ B; B# [% }: X" R
結合藍牙模組可以實現無線滑鼠的功能。
# W' s3 [9 y. @  B7 ?% H2 k1 ^0 Q7 }3 x$ l6 j( Q9 j
from pynput.mouse import Button,Controller
" N8 z( R  ^: k# y  R5 {$ Qimport cyberpi8 m( w$ M1 A  J' E  l6 B
import time2 N" x) B+ g' h. |

' Y% q6 Z( O7 Z) z& Gmouse = Controller()0 q- G' C$ E* w. n2 E

* \- Q& V( n6 k! ^, K6 dwhile True:) n! L) R; ^; l) n* s
   if cyberpi.is_tiltback():
! O" A# b5 m1 V% z8 b$ X. L       mouse.move(-3, 0)
* ]! G3 @5 X8 M3 A  }+ f       print(mouse.position)
4 u" Z2 Q' r- i* V0 Y   if cyberpi.is_tiltforward():
7 M# |0 r0 q& Z* E2 p       mouse.move(3, 0)/ u; i* R) I# s( q) Q; }% l0 [2 |) `
   if cyberpi.is_tiltleft():8 ^# u7 h9 _7 \  f( X. ?; ]: o. ~
       mouse.move(0, -3)
) K6 F; g! c3 P% @6 s; l1 e' ?( Z   if cyberpi.is_tiltright():
$ y. l% w7 k. R       mouse.move(0, 3)
+ }! N. G2 b: a  ?* v/ D! J6 p   if cyberpi.controller.is_press("b"):
$ V) Y" U8 n  e! f9 X/ l0 J       mouse.press(Button.left)1 I8 V! K8 y0 x4 c' b/ k! m6 f* c4 ^
       mouse.release(Button.left)* E2 [- m8 B  q! A6 P# X  B: b9 K9 y
       mouse.press(Button.left)* z5 F9 J( m" I4 j
       mouse.release(Button.left)9 z6 c- S, N% O
   if cyberpi.controller.is_press("a"):
& v* P) `( a4 f( L  r1 _1 L       mouse.press(Button.right), c8 L- ~5 ]% V. ^" u9 u. _
       mouse.release(Button.right)3 a. w0 f1 x2 B: r
    time.sleep(0.01)+ c7 y- @6 }7 ]# [
( J1 |, L6 q% U6 V0 Y1 @+ I4 f' p

" \0 W! @5 i) W; G
語音打字器

  i* Q' {7 L8 W8 p) F2 J, k9 g功能介紹:
. V" {0 k! B  Z利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
/ ]  J! J- q9 D# V- i  o) ]2 p將語音辨識的結果通過pynput在文檔中打出來。
5 q7 `7 l4 }, A9 V* @該程式目前只能支援英文。
' }. Y' ]9 H* D& }+ u
  T( _5 R; d7 G. A- H/ rimport cyberpi
6 y% h0 e3 i( x4 tfrom pynput.keyboard import Key,Controller
0 q7 Y) R8 t  M8 X6 gimport time
; C; V5 }9 |# ?! N- Q1 ?1 d1 Q   L/ I+ u/ d2 }+ `6 c( n
keyboard = Controller()( Q0 X& n% A+ p" S, k8 N0 \; s. g
cyberpi.console.clear()
5 h6 `* m, f; X9 Ycyberpi.led.on(0, 0, 0)# H6 K3 n8 s0 L" d% x! Z& N
cyberpi.set_recognition_url()
" Q8 b  M; \) N1 a% pcyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
" E9 Z8 @' \7 Scyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
0 O2 `! t' z) d: k6 ^. owhile not cyberpi.wifi.is_connect():0 `& C) J! o9 n$ x0 ?! p9 M
   pass3 }- `- z5 q4 H  t# ]& A0 M
cyberpi.led.on(0,0,255)+ V5 |+ e  }0 z# {! u2 b6 D
cyberpi.console.println("WIFI已連接")
# n" f5 N1 c& S: ?6 wcyberpi.console.println("--------------")
$ o5 T* D7 o/ k$ p3 O& pcyberpi.console.println("按下A鍵開始語音辨識")% W( X& P4 z( J: i8 `
while True:; V& ]2 i2 t6 N) \
   if cyberpi.controller.is_press('a'):, Z* J4 Q; t$ ?; X, c  q
       keyboard.press(Key.space)
, e7 N* h/ n6 B4 B; n3 q$ M: J3 x       cyberpi.console.clear()) e5 @( o/ W: t4 z6 T3 f3 a" g
       cyberpi.led.on(100, 0, 0)8 M7 d+ b/ Y6 c6 o
       cyberpi.console.println("開始語音辨識")$ o& X8 o5 L+ M9 c' {
       cyberpi.audio.play("switch")  }3 d; C3 I' [- P9 i/ E( x
       cyberpi.console.println("--------------")
4 F+ o: b9 z/ }# b! M0 i       cyberpi.cloud.listen("english", 2)% d& F) p4 U5 G; S( X& A1 ^/ \4 K  w
       cyberpi.led.on(0, 0, 0)
" E) m2 y( |1 f( k% z5 N       say = cyberpi.cloud.listen_result()
$ a% e9 m# P8 p/ \       cyberpi.console.println(say)8 D- Q1 \0 I8 Q  y& {
       cyberpi.console.println("--------------"); i  y( C# S  M  b7 c" e: F: |8 M2 H
       for i in say:  j: x, k. C  S9 z- @9 d
            if i == '':: h: M1 i) Y2 d1 s9 m
                 keyboard.press(' ')% _4 g3 ]5 Z  a% Y4 t: Q& N' [
            else:9 E, A& m' @% M7 c6 L: T- T
                keyboard.press(str(i))
: N$ c4 @2 L: }% C9 B                time.sleep(0.03)
8 x; j" B, s1 v9 Y. E

0 x0 h3 a# g# U/ W$ q: Zmatplotlib音量柱狀圖
. i' o) @1 Z! {( f2 \# ~2 \
import cyberpi: t, H  F  |6 `; p! F- V
import time. M* w8 n# m3 z9 a$ ?0 a
from matplotlib import pyplot as plt& S# h( `& y- E2 a) N- p/ N6 N
# ]+ S; H( h, o# }2 k8 D
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
& n/ P  D$ ], d+ _. [% K9 fplt.ion()
9 w% \! d3 J1 D9 }' H  ]
/ n! `5 f( g# K  X1 d+ T& S1 Ywhile True:: p; L. A& Q) d2 T
   loud = cyberpi.get_loudness()# v+ z. l2 F& Y( d5 i' e! G
   plt.clf()
2 k  |: C' S+ c- u% U3 `   plt.xlabel("數據名稱")
1 l$ b- w% `0 v/ E, y   plt.ylabel("音量讀值")
- }! {$ w" d5 L- D! a# E# V9 ?   y_locator = plt.MultipleLocator(5)
2 Q3 W4 a# X, \1 m, d   ax=plt.gca()
$ Y) r& I. p" t! l/ v9 l# y$ g/ j! `   ax.yaxis.set_major_locator(y_locator)0 P3 `/ m' p  z8 u
   plt.ylim(0,100)
$ w" q2 n/ ?* q   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
% s/ T2 @, J: n   plt.title('童芯派聲音感測器讀值')7 Z5 C  {$ _9 u, [0 F
   plt.legend()2 m$ U; N1 R4 x- S
   plt.show()) l+ t( Y" Y# N( Y& `7 O
    plt.pause(0.01)
" u+ B% E& j' O5 `) J$ M' W+ q8 s7 |% ~, c( K6 F' V

; g* x, M) A# d3 y6 ]! v. cmatplotlib 多圖表顯示
5 f- q0 ?! `4 @" G' s# P
- P0 V8 O) H. m+ J) W0 z3 C
from matplotlib import pyplot as plt8 @7 m4 l/ u1 z4 c# n4 T8 L
import time9 `2 f8 B9 E6 f* ?) m6 O& E
import cyberpi0 x- F3 z2 C# F5 J* E6 M
( b3 w8 N, i! J
loud_list = []
( R; F+ O- o7 L. ~8 _5 ?4 kbri_list = []; f, {5 m' X- b, _* F
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體; @, g# S/ V* M5 f
plt.ion()
9 [( s, U( _) R3 Pplt.figure(figsize=(10,10))2 o: q7 R5 u. B  a/ ?0 e
plt.figure(1)
) u, M0 e+ F# P! bx_locator = plt.MultipleLocator(5)
3 q- b. |" m. r# _/ z2 l2 Yy_locator = plt.MultipleLocator(5)
! i, s; I2 F* N( L& t8 m+ w; A' ]while True:
6 M- b0 w; X5 m4 |   loud = cyberpi.get_loudness()0 R# i4 b1 j2 Z% }% Q! {; _1 A
   bri = cyberpi.get_bri(), A: W7 \9 U( R% T
   loud_list.append(loud)$ {8 o# I0 H& V: s7 {1 }) J
   bri_list.append(bri)
; d- S! X* C' k4 B/ k   battery = cyberpi.get_battery(); B0 Q1 c- z' `3 f5 d. t! p
   size = [battery, 100-battery]
, P3 l7 |* R$ v: C3 d2 c   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']' J) N) v3 {/ m
   ax1 = plt.subplot(221), _; D+ f0 C) Y# z
   plt.title('光線折線圖')
) V1 n7 u9 B- T# _0 G* m8 J- [   ax1.plot(bri_list)+ A6 c% v; P) Z# Q* e
   ax2 = plt.subplot(222)1 a! T) y  M( w, `8 }# p- `6 ]  y3 E
   plt.title('聲音柱狀圖')% j  u1 c9 m& R
   ax2.xaxis.set_major_locator(x_locator)& G9 i) }/ ]* ^
   ax2.yaxis.set_major_locator(y_locator)7 U% x. F' S' a( O% ~
   plt.ylim(0,100)8 m* a5 T! }; d9 E0 l
   ax2.bar('sound', loud)
: o" r8 N0 t& A/ T6 a: ~" E: ~* \3 A   ax3 = plt.subplot(223)
- ^9 f# }$ `0 a6 M   ax3.xaxis.set_major_locator(x_locator)
9 \/ ^' L/ s- k$ k6 E- d1 B   ax3.yaxis.set_major_locator(y_locator)! U. F3 \  v2 @/ j( `
   plt.xlim(0,100)
. R5 T+ f% U% V) p   plt.ylim(0,100)$ `5 K5 t# Q4 F; a, `
   plt.title('聲音、音量散點圖')
5 S- {/ ~  ~' L: B! c# u% A/ S! w   ax3.scatter(loud_list,bri_list): B: [9 V( b6 B4 \3 N" {1 v3 _
   ax4 = plt.subplot(224)
9 d. ]+ l+ T0 @! \  k% i   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})) u; {( B: a0 T* f2 S/ ]: D
   plt.title('童芯派電量')% B: z, m7 s: G1 n7 h
   plt.pause(0.2)
" ~2 V6 {# }" _) z: E5 E5 D' F   plt.clf()5 [: ^" n8 @# W7 C
   if cyberpi.controller.is_press('a'):
& T6 H$ w! D* S3 D; s       break  ~1 }6 z# G8 C) w- u1 d
   if len(bri_list) > 500:
6 X! c7 U, Y1 O0 s' B       bri_list = []! a; I+ f" T* n  k1 S. c# F/ X
        loud_list = []
: R/ ?+ L+ j: y9 G' v- w4 s& B4 i. G  {

本帖子中包含更多資源

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

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

本版積分規則

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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