圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 6816|回復: 0

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

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

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

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

' K( F5 O- w! D2 u+ |
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    # L% M; g, ]3 U( m5 y! T! _9 A' K
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)2 c  o! L0 L; M
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。" F* X+ G% g* e' U! O
8 C4 V8 h+ L, n  @/ V$ f/ }
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    3 f- P& y4 p' h% q2 \0 J
: [& M+ c8 o7 f
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    ; D7 N7 r) |  e1 z. r9 o& t9 P
4 H9 |! N/ u/ A, h  ?) o
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。
    9 K. s$ }+ s: m* `- [, p8 T
5 [" T  T3 ^7 i2 w4 v+ s9 B
3.童芯派第三方編輯器程式設計準備
" o4 T2 m1 Z. _) B
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。! D& F* Y' W  K# P5 L
0 F+ R1 G4 _, t  D, S2 @  L
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。7 a; J7 C/ G% e6 K3 ^  ]9 N  Y

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

1 S0 p( v# D! _
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。+ Y2 n' p6 U% R1 |8 h; s8 u. g

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


7 z1 ^+ ]5 w4 y' T
查閱cyberpi API文檔見:童芯派API文檔

( I5 U, G/ b3 ^# @  C
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。# O; ^2 U( V4 @: h

3 G  U& U2 C1 {; M: ]7 \6 k
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。

' ~- D, I& W" R2 I( L0 |) A1 r5.一些程式設計案例
9 r- P% x! J9 `1 f% y童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

: V. m5 z9 K+ q1 b4 D* K8 a/ L功能介紹:6 w1 p9 L( t8 E, w5 w' c
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。
9 I' S+ Q3 d( ?通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。3 ]2 o. ^. `- Y2 W
結合藍牙模組可以實現無線滑鼠的功能。
( f* }+ Y/ e4 q. d8 r' Q4 Z( z, J3 u5 l- J
from pynput.mouse import Button,Controller
  ?! U! ]% L9 D1 Bimport cyberpi
2 L1 W1 [" i: r. c% s" ?8 Oimport time% b- V$ @- B/ _" g# a) i6 a

7 C: z8 ?$ c2 e; Fmouse = Controller()( t0 d: r( P! Q, C$ G  Y
, ~5 s3 J$ I  {
while True:
% ?" J( L3 n. j   if cyberpi.is_tiltback():9 e& p1 `% K3 Y3 g9 y
       mouse.move(-3, 0)4 e4 Z; M7 W$ l. h2 \
       print(mouse.position); X- }+ p+ f( \
   if cyberpi.is_tiltforward():
* e* ]3 k7 k" H, w/ `       mouse.move(3, 0)
6 x% D# [  u) j8 j; ?   if cyberpi.is_tiltleft():
/ |$ E( ]7 Z5 v       mouse.move(0, -3)- I1 K0 P3 x/ G' {7 R) k5 s0 s
   if cyberpi.is_tiltright():: a$ ^2 H: Q9 J2 v
       mouse.move(0, 3)
- K3 |8 w6 Q! A! r9 T, n   if cyberpi.controller.is_press("b"):
: g$ f  X) w. |' c       mouse.press(Button.left)" N- m4 B# w- b* o" p7 p) p
       mouse.release(Button.left)
, J- Z; G& |, C3 c4 J( B       mouse.press(Button.left)
: }# c; U5 G" `0 j1 u       mouse.release(Button.left)3 g: S; ]3 O. S% P. J; x8 N" ~; a
   if cyberpi.controller.is_press("a"):* e! t7 a& J8 n0 h7 U
       mouse.press(Button.right)( t' \6 \# T* d6 L+ W" g! V/ w2 L* G6 x
       mouse.release(Button.right)* A/ X3 _- w" j' I
    time.sleep(0.01)) K# m5 I+ Y) _! S- z
. x. D/ `% r* _" i2 J6 E4 U* i
! X; t8 a+ J3 Y6 z/ V
語音打字器
; b) c1 |; ]( o5 |+ p
功能介紹:
2 j9 Y+ p* F" P3 {- p利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。, p8 _# Z. y; ^
將語音辨識的結果通過pynput在文檔中打出來。
7 X3 O* K. N( }- {) [. r該程式目前只能支援英文。1 w5 `! R$ X$ F4 P2 _* s8 U

( s  E: W  A  U, [" Yimport cyberpi' M- l6 ]! S* _9 d9 v6 {
from pynput.keyboard import Key,Controller
5 k% I* A$ Q% E2 Y% d  d2 nimport time
. d- m, _/ Y$ J) P
8 ?8 p) h7 g. `6 V: ?keyboard = Controller()
; G. G7 ^, N  E: B: ?) I5 V2 T+ Tcyberpi.console.clear()
4 R8 X/ n: m  P' A& F2 Pcyberpi.led.on(0, 0, 0)
+ \% U+ M% G# @; W- R% D! X( l; lcyberpi.set_recognition_url()
' M0 O1 A- k( M, y, c/ \  qcyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得
% ]+ g; _5 t" L, g/ Xcyberpi.wifi.connect("WIFI名稱", "WIFI密碼")
! y: _5 P4 r" \: S1 s& Z2 y2 D. Uwhile not cyberpi.wifi.is_connect():
0 r/ f; H/ H$ ]' I$ [: u  f  f9 J   pass
7 q4 F8 Z1 Z1 \. ?. v0 l4 J  \cyberpi.led.on(0,0,255)$ h( k7 M2 @, W0 b- Q
cyberpi.console.println("WIFI已連接")6 G3 x) y8 X$ G6 u8 Q' g- ~# A, I
cyberpi.console.println("--------------")! C3 J! X: c7 A
cyberpi.console.println("按下A鍵開始語音辨識")1 n0 ?, Z, h6 d
while True:0 s4 O) t# _/ @/ g) z9 ]. P
   if cyberpi.controller.is_press('a'):- A* h: L5 B' `2 L* g, Z/ N7 R
       keyboard.press(Key.space)
# k) v! Z* t& d* O6 _       cyberpi.console.clear()/ t% ^* }  T* a" k1 _# C1 Q' r
       cyberpi.led.on(100, 0, 0)1 A  K. n* U% T, i% B& X/ s( {
       cyberpi.console.println("開始語音辨識")
! X! u' E! Y$ R& u# z: _       cyberpi.audio.play("switch")
- L% U4 U  l( I2 V( k) r       cyberpi.console.println("--------------")
! }  |6 @; H- T! x/ V       cyberpi.cloud.listen("english", 2)6 Z7 c+ T: _; g0 D- J: A& U
       cyberpi.led.on(0, 0, 0). b4 ]3 t+ S9 \& a" |, J
       say = cyberpi.cloud.listen_result()
* J: ?( ~6 w+ m4 V1 M! z       cyberpi.console.println(say)
. T2 f) }, d2 W       cyberpi.console.println("--------------")
; C1 ~/ y7 J: q1 u$ W! v# F4 Z       for i in say:- @3 \  V6 Y2 y/ I: _: |/ g7 ^4 A
            if i == '':
& L; z4 K6 }7 S) l  M                 keyboard.press(' ')
2 L" c% @* C8 f9 b8 U0 m            else:
3 o" G+ T  r6 v. Z                keyboard.press(str(i))( ?  e5 c; r: R4 I# Q5 R( e
                time.sleep(0.03): d/ }4 m+ o) @% |' I; A

7 y& Z9 u/ ^5 q" X8 ~' a1 x; [matplotlib音量柱狀圖
3 ]6 l- V0 J- s4 X
import cyberpi
9 p* U8 w' u. w- q, ^. W5 N! ^import time; ?. ~# ^2 C/ m# S6 P* h
from matplotlib import pyplot as plt- i  K. ?: c* T: i
5 n' s. t% n1 {8 d, y) b& \. h
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']3 }% \& d: l3 h5 d0 V! F8 Z
plt.ion()
1 c% ^6 }' F! i7 S, a/ s
2 C9 Y% H  d$ |6 o6 T5 ~- N3 Fwhile True:8 [3 ~4 _5 r2 p/ z( Q
   loud = cyberpi.get_loudness()" [5 s( N' _- n! W1 u2 ]8 U7 w
   plt.clf()+ o1 m* T" \6 x4 Z* P( a
   plt.xlabel("數據名稱")
& l2 |! M6 G# ]5 I/ i/ D   plt.ylabel("音量讀值")
' r& w7 m0 f- ]6 ~   y_locator = plt.MultipleLocator(5)! v/ L' u" ?. q' U: L% D
   ax=plt.gca()
. G4 l  _& n) b# H; M( Q5 [% s   ax.yaxis.set_major_locator(y_locator)
9 T2 G2 b4 A/ O  J* I7 @7 G) ]   plt.ylim(0,100)& @. C, u/ O- [$ a6 |$ F; a  P
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
0 S+ k/ d4 |+ T   plt.title('童芯派聲音感測器讀值')
' }( j6 {, X( A( M9 q, X- o   plt.legend(); ^/ ?) g. z! Y  O/ u
   plt.show()' p' c/ U( @9 A! `$ w
    plt.pause(0.01)
8 E( S+ T+ |8 o( x1 g. W- L$ P1 _9 s; a. U9 h2 F

  E/ |" G1 u: m+ Qmatplotlib 多圖表顯示4 o; R  Z+ w( _! H% Q& o

; f9 p& v  ^: o& Z/ n+ Q* c4 r; Qfrom matplotlib import pyplot as plt' F/ a: @+ R) \# s
import time# [, b8 _0 ~$ }- Z8 H2 M
import cyberpi
% J& H# T. P% w2 @3 @' l0 h & z5 ?7 |/ E7 Z$ p. N- P5 I
loud_list = []( Z# S! a, ?& K  ?
bri_list = []- {" v5 k. V+ Y
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體% }" Q4 n1 o4 L7 k1 G3 q% b$ {
plt.ion()
% N' Q9 H7 C" k9 p$ B5 h0 Dplt.figure(figsize=(10,10))+ a8 B) d4 m6 f( U: r" D! a
plt.figure(1)
! B7 X7 R0 s% c! Zx_locator = plt.MultipleLocator(5)/ f3 ?% z- n- e2 H7 X1 H6 K, ^$ u; h: V
y_locator = plt.MultipleLocator(5)5 o/ K$ q3 ]/ ]8 t, v
while True:" b8 w4 [  S# V4 b  e+ g- E
   loud = cyberpi.get_loudness()$ H8 h3 ~' g2 g& i% J
   bri = cyberpi.get_bri()
3 Z2 }. D5 R# E! ?' H0 [( j8 k2 `   loud_list.append(loud)3 E5 N3 W9 x& v( {4 @$ x
   bri_list.append(bri)
& R$ R" \0 z5 f& V   battery = cyberpi.get_battery()# j6 @! Y2 W( `. l
   size = [battery, 100-battery]' v$ d# `9 K& Z! f
   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']- a  X. P0 X' c9 d% V6 s, {
   ax1 = plt.subplot(221)1 a/ W- f- m5 W# }1 t0 i0 x
   plt.title('光線折線圖')! N0 m4 r/ i; M5 B2 N- D
   ax1.plot(bri_list)( q4 V  ^4 J% e" R, l
   ax2 = plt.subplot(222)
7 R; _2 q+ W# Z7 Q   plt.title('聲音柱狀圖')
; Y( J$ q3 G) c# j# w7 n   ax2.xaxis.set_major_locator(x_locator)- j) c! F: h+ j1 `
   ax2.yaxis.set_major_locator(y_locator)* Z5 w3 D& _( N- [
   plt.ylim(0,100)9 _0 d/ G+ ]3 y6 `; W" ]
   ax2.bar('sound', loud)2 Q; l# V8 V* w" |  F2 ^
   ax3 = plt.subplot(223)
6 {  V8 o6 n6 |   ax3.xaxis.set_major_locator(x_locator)
7 x' c5 w9 k; f1 d- S$ f   ax3.yaxis.set_major_locator(y_locator)3 u! i: N* y1 |/ y; |0 U" Y
   plt.xlim(0,100)
4 [. I$ D  R( ^   plt.ylim(0,100)) C5 S/ F' d/ K7 t
   plt.title('聲音、音量散點圖')# N. W  t" u3 H' X+ p2 ~. I3 [
   ax3.scatter(loud_list,bri_list)- z6 p2 X3 u% ]
   ax4 = plt.subplot(224)* y" H1 P# t' t
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})3 y7 u% }; ^! K
   plt.title('童芯派電量')
! Z( ^$ D1 B+ N% V7 x   plt.pause(0.2)3 v: v4 C& K2 i: P  R: T8 O4 S, L- F
   plt.clf()( X6 E1 j- i; Z1 d5 S: _6 ]
   if cyberpi.controller.is_press('a'):
# Z8 ]. U4 R3 o- w/ _1 [5 o       break
& Y1 i2 s: X/ i   if len(bri_list) > 500:, ]/ M$ f/ \+ Y) X7 P
       bri_list = []% _: [2 w) x2 P# j6 a- i9 x7 T  }6 {
        loud_list = []. b2 y/ W- i/ ^1 I3 m6 M

9 C5 j1 V- \  m, _7 W9 }

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2024-11-23 19:14 , Processed in 0.023536 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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