圓創力科技

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

查看: 8391|回復: 0

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

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

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

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


$ i& [* n. T3 O8 R1 V
  • 按兩下安裝包進行安裝,注意勾選下方的Add Python 3.6 to PATH,點擊Install Now進行安裝,也可以點擊Customize installation將Python環境安裝至指定目錄下。
    4 _8 B6 n* @- J# W8 ?
2.下載安裝並配置協力廠商Python編輯器(以Visual Studio Code為例)
提示:不同的編輯器在操作步驟上有所差異。同時建議在編輯器當中配置安裝在系統中的Python環境。
  • 下載 VSCODE,請根據自己的作業系統進行選擇。 VSCODE下載地址
  • 點擊下載下來的安裝包進行安裝。(根據提示進行安裝即可)$ S0 j; G" k6 k! `$ [! D9 [1 J
  • 點擊桌面上Visual Studio Code的圖示運行程式。
  • 在軟體介面左側找到下圖紅色方框當中的圖示並點擊。
    : G4 C# [* `  _9 V0 R$ R3 ~  F. D

6 L) i: v3 |7 e5 \. S2 P! U5 s
  • 在彈出的介面的搜索框當中,搜索Chinese (Traditional) Language Pack for Visual Studio Code,並點擊進行安裝。重啟後可以實現Visual Studio Code介面切換為中文。注意該擴展外掛程式發佈者為Microsoft。(如您習慣在英文介面進行程式設計,可以跳過此步驟)
    # u; y; W$ _6 Y  V

2 }0 R' a' s/ p) D8 @" S9 [! a/ w
  • 繼續搜索Python,安裝Visual Studio Code中的Python編輯環境。注意發佈者為Microsoft。
    9 f/ V, ^) F4 R! O+ \
) `2 j, \" q7 _2 ^6 D9 \
  • 在Visual Studio Code編輯器當中配置前面安裝的Python編輯環境。
  • 新建資料夾並新建py尾碼的檔就可以對基礎的Python程式編寫。5 e4 X! x; G, h
5 Z; s; N* b& a/ n7 @
3.童芯派第三方編輯器程式設計準備( g5 j5 H3 i' r
  • windows環境下,按下鍵盤上的win+r鍵,輸入cmd並按下Enter,然後會彈出cmd視窗。9 ?' z- {" E' n! u7 l# g* u& w
, E3 B9 F4 m  w6 s* ?# b
  • 安裝pyserial程式庫,pyserial程式庫可以確保童芯派通過USB線或藍牙Dongle與第三方編輯器建立連接。& a0 y3 r- K' S/ F+ {! ?

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


6 e( J% H8 N7 R% b5 o& k) X
  • 安裝cyberpi程式庫,cyberpi程式庫是用於對童芯派進行線上程式設計的Python程式庫。8 r5 s$ d$ U" Y, Q- l9 B. d: \1 {+ y

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


- n) Z+ S5 {7 }
查閱cyberpi API文檔見:童芯派API文檔
& l/ e; ]1 d$ E4 m! R3 S2 a
  • 完成安裝後,您就可以在配置了Python環境的編輯器當中進行程式編寫了。
    3 M3 s9 J$ k3 K& x8 t, H
& L3 c% w' ~; h" C
4.注意事項
在第三方編輯器當中目前僅支持對童芯派進行線上模式程式設計。
0 G6 D: b: u5 A) b
5.一些程式設計案例- _* w: i7 B! L1 [+ H
童芯派滑鼠
需要安裝pynput模組,參照上面的步驟pip install pynput

* f- k- m$ @$ S9 W功能介紹:! x" D# W2 I7 r9 ]: X3 C
利用童芯派的陀螺儀模組和按鍵結合pynput模組的滑鼠控制功能,實現滑鼠的功能。" [/ I* ^& ]' i0 A( k$ `
通過陀螺儀控制滑鼠移動。通過按鍵實現滑鼠按鍵功能。
, W3 k. p( F9 b結合藍牙模組可以實現無線滑鼠的功能。
6 m, X7 o, E- f! U8 \! F$ T* [! _! X  T* a  C3 K/ m  c. b. R
from pynput.mouse import Button,Controller
$ L1 G9 [3 F/ d, S0 q7 A2 `6 J3 limport cyberpi$ h# x; n7 I9 ]- p
import time6 x, L/ J( T8 T3 Y& ]9 n' a) G

! `2 z- u, C4 ]$ i) Zmouse = Controller()3 ?" z. o4 o  j" \. l1 v3 u8 v
, U; ?: F2 {4 n" E4 j- D0 x% w
while True:% S9 ]2 V' }9 \
   if cyberpi.is_tiltback():  t% Q! t0 w' F# @
       mouse.move(-3, 0)$ F  k& I1 g# T. c4 M  z/ `
       print(mouse.position)6 T; b$ L0 ~1 |. z2 |
   if cyberpi.is_tiltforward():6 L& [; B! x* U# m! s# I7 B
       mouse.move(3, 0)
: Z* T  `% E$ ?) u   if cyberpi.is_tiltleft():
5 Z  X3 ~6 H. ^/ k! |       mouse.move(0, -3)" v4 F% U5 @. n  F' h4 a
   if cyberpi.is_tiltright():
$ H8 @3 F& S+ ]       mouse.move(0, 3)
6 z& t7 v+ t. R3 t0 Z) |   if cyberpi.controller.is_press("b"):
) I# M. P0 J6 h) U( S# R2 x       mouse.press(Button.left)0 m* ?8 Q3 d8 U) C
       mouse.release(Button.left)/ G4 @# ~1 ^9 H
       mouse.press(Button.left)
2 P0 e9 f( K8 q! H  a       mouse.release(Button.left)4 _% m/ V  R) z9 u2 D
   if cyberpi.controller.is_press("a"):
1 l) t, L5 G. @& s  v4 `9 ~       mouse.press(Button.right); n" O; `# f7 U. p  f
       mouse.release(Button.right)
! O" c- z' i# P! h, b& G    time.sleep(0.01)
  h; E3 }) L$ b3 l3 U; b, z6 Y& z
; U2 V: k0 j3 z1 ^- h
語音打字器
2 |4 P/ S# A6 y: ^
功能介紹:9 d% O2 l/ _: ?# w% f$ |
利用童芯派的語音辨識功能結合pynput模組的鍵盤控制功能。
; s8 {- H; s8 G. o將語音辨識的結果通過pynput在文檔中打出來。5 t% C- X0 u' ~9 m0 i& c5 z
該程式目前只能支援英文。  ~  [: Y0 t1 H) L; U# ^% Z) B

; @/ F' t) K: q3 O5 i5 ?import cyberpi3 r1 f( X7 G" c7 j1 E% H) O
from pynput.keyboard import Key,Controller( d$ k: Q* r/ x' c3 E
import time
3 C7 W( i2 M1 m& L  L0 F
( o! j3 U& i3 x: L4 ^keyboard = Controller()
* O4 P+ g: X) A2 q- ^8 H% _cyberpi.console.clear()9 o  S# z8 p! \/ A+ |5 z
cyberpi.led.on(0, 0, 0)9 [% `2 G: }* p2 I: R% i: k
cyberpi.set_recognition_url()! y2 B3 B+ N  K4 N2 M+ `
cyberpi.cloud.setkey("請輸入雲服務授權碼")    # 通過慧程式設計帳號可以獲得- }2 \( |) M1 w
cyberpi.wifi.connect("WIFI名稱", "WIFI密碼")+ O0 [: a# w( Y. u8 O4 i3 J* D
while not cyberpi.wifi.is_connect():0 F& M9 `/ P" C. O) e$ m
   pass
) \0 S! q% y$ Z5 N8 L" {cyberpi.led.on(0,0,255)
7 i# M+ ~1 a$ d. `: Jcyberpi.console.println("WIFI已連接")- \. k4 K; {# D& i
cyberpi.console.println("--------------")
! {4 G0 H+ u5 ^' fcyberpi.console.println("按下A鍵開始語音辨識")4 I) b+ W! k/ p( A
while True:4 h8 }2 H5 j/ p- J3 k
   if cyberpi.controller.is_press('a'):2 N% v1 ^' f% R9 b3 e+ n/ J
       keyboard.press(Key.space)$ ]+ G8 x) h4 G& {
       cyberpi.console.clear(); [; K- T5 P/ J8 q3 M+ H0 X( g
       cyberpi.led.on(100, 0, 0)
! y$ ?9 e5 ?7 R' C0 p$ a* {       cyberpi.console.println("開始語音辨識")% s0 u4 v8 K8 ?
       cyberpi.audio.play("switch"), M9 ~! m9 H$ C
       cyberpi.console.println("--------------"). ^  p7 N' d( f4 q* Y- O/ V5 B
       cyberpi.cloud.listen("english", 2)0 \9 b9 q8 `" X. A
       cyberpi.led.on(0, 0, 0)
% `- E( U/ g- X4 P  F8 x       say = cyberpi.cloud.listen_result()9 ?, Z! d- \* `$ S
       cyberpi.console.println(say)
0 U8 r4 F) s4 B$ d       cyberpi.console.println("--------------")/ l7 _) n, x+ j) r. [* N
       for i in say:
" e& T& W( g2 f- j$ g" H2 V            if i == '':  ^+ ~9 ?+ k% M% n2 i
                 keyboard.press(' ')0 ?  e+ T2 Q; z6 j6 I# S  n
            else:
& L- ^2 F+ n9 \; O) `$ A                keyboard.press(str(i))
% n  e8 L9 r" I5 q                time.sleep(0.03)
, P. S& J0 u  f2 X4 w
' k6 S2 W2 r* n' k
matplotlib音量柱狀圖

, x; C, A( u  r8 [" Ximport cyberpi$ l0 k* Y4 g6 K8 Z4 s
import time
7 \" _1 c# q3 }3 Wfrom matplotlib import pyplot as plt
& p% x8 ^$ ?* i$ B  ]1 k% ?7 G3 r
# Y" f" |6 M2 s2 T  n, c" {. ~plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
) Y1 k1 {9 j4 W9 w+ Oplt.ion()
3 j# B  d( p- f* r- X & E0 J. [. x( V7 N1 o
while True:
# R4 F& b' b* u  j; [. w   loud = cyberpi.get_loudness()
8 P2 Z5 Z5 }' `3 U" ?! I! i9 \& a   plt.clf()
! ]! L$ h- p" j) {+ ~' V8 q: E   plt.xlabel("數據名稱")
& H: @9 g7 j4 ^   plt.ylabel("音量讀值")
. F3 o' w1 ^; G1 k   y_locator = plt.MultipleLocator(5)3 `& \6 D0 l+ c+ I
   ax=plt.gca()
0 F! X' u' S% _5 f   ax.yaxis.set_major_locator(y_locator)
" f' Q0 H  K5 E: W   plt.ylim(0,100)* o* {4 Q: C' A' S5 \2 q- \
   plt.bar('音量', loud, align='center',label=f'溫度{loud}')
+ @; F2 z: o6 A& j# N   plt.title('童芯派聲音感測器讀值')
! i$ U' R, s4 F' R; }+ v% l2 W- J   plt.legend()$ L4 d- Y, B1 _( N5 ?8 d7 J
   plt.show()
% Z. C/ d: Z8 f0 f    plt.pause(0.01)( m5 ~. o; u9 ?1 F1 |8 q+ H
9 ]7 J2 F; h- ~/ n' O2 m
# v; H( @# p; O. @: [: |. Y
matplotlib 多圖表顯示5 b5 @5 F0 [( V" P
, N" r" U) b8 W! J
from matplotlib import pyplot as plt
0 k8 y) s8 ~* r* F2 g; Q2 Aimport time6 y! c+ n3 r7 O8 S7 p$ I, C1 e. r- e
import cyberpi
% e6 [1 P3 L$ e" Q6 }9 B
3 F) K9 Q# D8 l- h% ^3 bloud_list = []
8 u; q+ L2 \! i( abri_list = []- r1 ~# j- }3 ]1 r8 J- |2 r
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']   # 載入中文字體,這裡載入的是電腦的自帶的微軟雅黑字體
/ Q% j1 y# u1 ^4 z$ tplt.ion()' r* N- ]9 }3 \! o3 w* r) ?; {; u
plt.figure(figsize=(10,10))$ \/ R% b$ `+ }  d
plt.figure(1)# i( }' I+ U, T  ~( Z9 u9 D8 M
x_locator = plt.MultipleLocator(5)+ G) }; h; K3 Z. A' T1 M) N, n
y_locator = plt.MultipleLocator(5)8 Y9 P" }* C! t( Q. ~7 {2 Q  W& n
while True:
: D; ~" ?( ], m   loud = cyberpi.get_loudness()1 J& o* L/ h9 p* `+ O  G
   bri = cyberpi.get_bri()
2 V& B& S4 z, v- w   loud_list.append(loud)+ f4 H! T2 k4 X- O! U
   bri_list.append(bri)! P# \. a# A5 p; I/ N% r# g! P
   battery = cyberpi.get_battery()3 x4 p: Y& l4 ]! V
   size = [battery, 100-battery]
) X; ?. Y! g6 d1 h1 ^% S: z   status = [f'剩餘電量:{battery}%', f'已用電量:{100-battery}%']0 M) a( |$ Q0 R
   ax1 = plt.subplot(221)
) p0 x4 j, P; C4 z0 Q* w5 S   plt.title('光線折線圖')
% F# K& F: w# x3 U: s6 N/ K- t   ax1.plot(bri_list)* q' P) A  T& \. Z/ C, J' O
   ax2 = plt.subplot(222)
- R% A1 X+ ]% w8 @   plt.title('聲音柱狀圖')
6 j& O% |6 o9 L' Q   ax2.xaxis.set_major_locator(x_locator)
- l& w8 Z  N) ~2 S$ S. P( g   ax2.yaxis.set_major_locator(y_locator)' K$ B1 A$ R0 e# N4 ^  s
   plt.ylim(0,100)+ F  C' W, r8 p
   ax2.bar('sound', loud)% k3 @# F. v- s& f1 m  T3 i1 A  R6 Z
   ax3 = plt.subplot(223)* o4 S- L3 q+ |6 T5 Q9 M
   ax3.xaxis.set_major_locator(x_locator)" B" j0 a4 J* I. i* M: t
   ax3.yaxis.set_major_locator(y_locator)7 c- w, x) I( h1 o, f4 s, s% }
   plt.xlim(0,100)
  h6 r) k; K. }; }& R+ Z4 `   plt.ylim(0,100)
+ E6 {" W- R: G   plt.title('聲音、音量散點圖'): I+ u& P& ]3 |; K2 `& T! u
   ax3.scatter(loud_list,bri_list)
7 c) J0 m9 J& Y( z  T   ax4 = plt.subplot(224)4 E  d5 w1 o4 v, I+ g  U( J
   ax4.pie(size, labels = status, radius=1,wedgeprops = {'width': 0.3,'edgecolor': 'w'})3 V5 v. I# Z$ }  O) {4 \
   plt.title('童芯派電量')# _9 Y0 q9 L5 \! H8 F8 h
   plt.pause(0.2)& A( q0 `( d0 N( a2 i3 B, |
   plt.clf()
; P6 R1 y  E, j   if cyberpi.controller.is_press('a'):
/ s! E& [! t" u+ m5 Q- ^% [& a       break0 Y. m  `0 m* f- L* n0 C+ D+ N0 S+ s
   if len(bri_list) > 500:$ d7 \6 a1 \; g  ?& K0 f
       bri_list = []
0 a4 E" Y' ~8 V8 F2 W. }5 |: q$ W        loud_list = []* e) f) n6 R. ?. X

: x9 C6 o* Y9 [

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2025-11-23 12:02 , Processed in 0.027950 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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