本文小編為大家詳細介紹“在MicroPython中怎么用面向對象方法控制microbit顯示”,內容詳細,步驟清晰,細節處理妥當,希望這篇“在MicroPython中怎么用面向對象方法控制microbit顯示”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
創新互聯公司長期為成百上千客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為石鼓企業提供專業的成都做網站、網站制作,石鼓網站改版等技術服務。擁有十載豐富建站經驗和眾多成功案例,為您定制開發。
Python(micropython)對物理計算非常有用
Python是當之無愧的物理計算應用中一個非常流行的語言。
Python很容易學習,它很有表現力,可以在Linux、Mac OS和微軟Windows上免費使用。
Python讓樹莓派充滿活力,大量代碼樹莓派的代碼都是用Python實現的。
最近,micropython帶來了語言的幾個流行的單片機平臺,包括BBC microbit。
但…
大多數已發表micropython腳本使用Python程序風格。大多數程序員都是這么開始的,它是教程中使用最廣泛的一種風格。
當以程序式編程時,您可以逐步地完成計算機所希望的工作,而程序則是指定這些步驟的過程。
值得探索其他編程風格,在本文中,您將看到如何開發一個簡單的Python應用程序,它可以使用面向對象風格。在面向對象的程序中,通過創建對象來編程,即將數據和代碼結合起來執行簡單任務的小程序包。為了進行更復雜的任務,對象相互協作(相互交互)。通過編寫類的定義,指定特定對象的類型(數據)和它能做什么(方法),指定程序所需的對象類型。
這個想法很簡單。應用程序使用microbit的LED點陣顯示計數器的值,并且可以通過使用按鈕來更改它。稍后,您將看到如何將這個簡單的想法應用于實際項目中。
您可以用簡短的腳本實現演示,但腳本的組成部分在其他應用程序中不易使用。
以下是一些可能需要實現的變化,而不必從scratch開始:
使用 LED 燈柱顯示
顯示當前光線等級或溫度
一個時鐘樣式,當參數上升到9時跳到0
使用不同類型LED的類似顯示器
一次只打開一個LED顯示值的顯示器
用不同顏色的顯示不同值的顯示器
當然,您可以通過創建原始腳本的多個變體來實現這一點,但如果您在原始腳本中發現了bug,那么會發生什么?你必須在每一份拷貝上做同樣的修改!
這就是為什么有經驗的程序員試圖避免代碼重復拷貝的原因之一。甚至有一個縮寫詞可以幫助你記住它:DRY(Don’t repeat yourself),代表“不要重復你自己”。
還有一個很好的理由,可以用簡單的組件來編寫代碼。每個組件都很容易自己測試。這可以幫助您避免bug,跟蹤并刪除任何在代碼中爬蟲。
讓我們開始編碼
您將需要查看按鈕的代碼,并告訴應用程序中的計數器在按下其中一個按鈕時計數或向上或向下計數。
沒有必要用一個類來實現它。
應用程序代碼中創建和SimpleDisplayer實例連在一起的計數器,以達到預期的結果。
max_count = 10 disp = SimpleDisplayer() counter = Counter(disp, max_count) while True: if button_a.is_pressed(): counter.up() if button_b.is_pressed(): counter.down() sleep(200)
最后一部分應該是不言自明的。它創建了一個SimpleDisplayer和計數器的代碼。讓我們從計數器開始。
Counter類
在這個應用程序中,計數器是一個簡單的對象,它知道它的當前計數,并且可以在它的初始值為零和某些最大值之間上下計數。在我們的例子中,最大值是10。
計數器知道另一個對象,每當計數器的值發生變化時就會被通知。最初,這將是一個SimpleDisplayer對象并在microbit上顯示。
下面是計數器類的代碼:
class Counter(): # count ranges from 0 to max. # when the count changes disp (the displayer) is notified def __init__(self, disp, max): self._disp = disp self._max = max self._count = 0 def update(self): self._disp.value(self._count) def up(self): if self._count < self._max: self._count += 1 self.update() def down(self): if self._count > 0: self._count -= 1 self.update()
計數器向顯示器發送消息,這是一個SimpleDisplayer使用內置的LED顯示數值的代碼:
# SimpleDisplayer shows the latest value on the micro:bit's LEDs class SimpleDisplayer(): def value(self, num): display.show(str(num))
面向對象編程易于更改
這種方法使我們的應用程序很容易適應一個代碼的變化。假設您希望使用類似于Proto-pic EDGE的LED陣列顯示計數器的當前狀態。
下面是驅動修訂應用程序的代碼:
from microbit import * import neopixel ... max_count = 10 leds = neopixel.NeoPixel(pin0, max_count) disp = BarGraph(leds, BarGraph.YELLOW) counter = Counter(disp, max_count) while True: if button_a.is_pressed(): counter.up() if button_b.is_pressed(): counter.down() sleep(200)
最后一部分不變。使用了兩個新的類的代碼:neopixel和BarGraph。
neopixel類是microbit的micropython版的一部分,所以我們只需要導入neopixel模塊。BarGraph是我們應用程序新的部分,我們需要寫它的定義并插入到上面。
這里是BarGraph類的代碼:
# BarGraph uses an array of Neopixels or other similar LEDs # to show the latest value class BarGraph(): # colo(u)r constants. # we use low values so the we don't strain the micro:bit's power supply WHITE = (50,50,50) RED = (50,0,0) BLUE = (0,0,50) GREEN = (0,50,0) YELLOW = (100,50,0) CLEAR = (0,0,0) def __init__(self, leds, on_colour=WHITE): self._leds = leds self._count = len(leds) self._on_colour = on_colour def value(self, num): for i in range(self._count): if i < num: self._leds[i] = self._on_colour else: self._leds[i] = self.CLEAR self._leds.show()
應用程序代碼(前面所示)創建實例并將和計數器和BarGraph連接起來,從而達到預期的結果。
模塊化代碼更容易更改。在這篇文章的下一部分,我們將看到改變光感應LDR的輸入和添加更多的顏色到BarGraph顯示。
我們還將看到這種方法的另一個主要好處:易于測試。
讀到這里,這篇“在MicroPython中怎么用面向對象方法控制microbit顯示”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注創新互聯行業資訊頻道。
分享題目:在MicroPython中怎么用面向對象方法控制microbit顯示
網頁網址:http://m.newbst.com/article44/isgghe.html
成都網站建設公司_創新互聯,為您提供外貿網站建設、域名注冊、網頁設計公司、微信公眾號、ChatGPT、網站收錄
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯