您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“在MicroPython中怎么用面向?qū)ο蠓椒刂苖icrobit顯示”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“在MicroPython中怎么用面向?qū)ο蠓椒刂苖icrobit顯示”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
Python(micropython)對物理計算非常有用
Python是當之無愧的物理計算應用中一個非常流行的語言。
Python很容易學習,它很有表現(xiàn)力,可以在Linux、Mac OS和微軟Windows上免費使用。
Python讓樹莓派充滿活力,大量代碼樹莓派的代碼都是用Python實現(xiàn)的。
最近,micropython帶來了語言的幾個流行的單片機平臺,包括BBC microbit。
但…
大多數(shù)已發(fā)表micropython腳本使用Python程序風格。大多數(shù)程序員都是這么開始的,它是教程中使用最廣泛的一種風格。
當以程序式編程時,您可以逐步地完成計算機所希望的工作,而程序則是指定這些步驟的過程。
值得探索其他編程風格,在本文中,您將看到如何開發(fā)一個簡單的Python應用程序,它可以使用面向?qū)ο箫L格。在面向?qū)ο蟮某绦蛑?,通過創(chuàng)建對象來編程,即將數(shù)據(jù)和代碼結(jié)合起來執(zhí)行簡單任務的小程序包。為了進行更復雜的任務,對象相互協(xié)作(相互交互)。通過編寫類的定義,指定特定對象的類型(數(shù)據(jù))和它能做什么(方法),指定程序所需的對象類型。
這個想法很簡單。應用程序使用microbit的LED點陣顯示計數(shù)器的值,并且可以通過使用按鈕來更改它。稍后,您將看到如何將這個簡單的想法應用于實際項目中。
您可以用簡短的腳本實現(xiàn)演示,但腳本的組成部分在其他應用程序中不易使用。
以下是一些可能需要實現(xiàn)的變化,而不必從scratch開始:
使用 LED 燈柱顯示
顯示當前光線等級或溫度
一個時鐘樣式,當參數(shù)上升到9時跳到0
使用不同類型LED的類似顯示器
一次只打開一個LED顯示值的顯示器
用不同顏色的顯示不同值的顯示器
當然,您可以通過創(chuàng)建原始腳本的多個變體來實現(xiàn)這一點,但如果您在原始腳本中發(fā)現(xiàn)了bug,那么會發(fā)生什么?你必須在每一份拷貝上做同樣的修改!
這就是為什么有經(jīng)驗的程序員試圖避免代碼重復拷貝的原因之一。甚至有一個縮寫詞可以幫助你記住它:DRY(Don’t repeat yourself),代表“不要重復你自己”。
還有一個很好的理由,可以用簡單的組件來編寫代碼。每個組件都很容易自己測試。這可以幫助您避免bug,跟蹤并刪除任何在代碼中爬蟲。
讓我們開始編碼
您將需要查看按鈕的代碼,并告訴應用程序中的計數(shù)器在按下其中一個按鈕時計數(shù)或向上或向下計數(shù)。
沒有必要用一個類來實現(xiàn)它。
應用程序代碼中創(chuàng)建和SimpleDisplayer實例連在一起的計數(shù)器,以達到預期的結(jié)果。
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)
最后一部分應該是不言自明的。它創(chuàng)建了一個SimpleDisplayer和計數(shù)器的代碼。讓我們從計數(shù)器開始。
Counter類
在這個應用程序中,計數(shù)器是一個簡單的對象,它知道它的當前計數(shù),并且可以在它的初始值為零和某些最大值之間上下計數(shù)。在我們的例子中,最大值是10。
計數(shù)器知道另一個對象,每當計數(shù)器的值發(fā)生變化時就會被通知。最初,這將是一個SimpleDisplayer對象并在microbit上顯示。
下面是計數(shù)器類的代碼:
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()
計數(shù)器向顯示器發(fā)送消息,這是一個SimpleDisplayer使用內(nèi)置的LED顯示數(shù)值的代碼:
# SimpleDisplayer shows the latest value on the micro:bit's LEDs class SimpleDisplayer(): def value(self, num): display.show(str(num))
面向?qū)ο缶幊桃子诟?/strong>
這種方法使我們的應用程序很容易適應一個代碼的變化。假設您希望使用類似于Proto-pic EDGE的LED陣列顯示計數(shù)器的當前狀態(tài)。
下面是驅(qū)動修訂應用程序的代碼:
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()
應用程序代碼(前面所示)創(chuàng)建實例并將和計數(shù)器和BarGraph連接起來,從而達到預期的結(jié)果。
模塊化代碼更容易更改。在這篇文章的下一部分,我們將看到改變光感應LDR的輸入和添加更多的顏色到BarGraph顯示。
我們還將看到這種方法的另一個主要好處:易于測試。
讀到這里,這篇“在MicroPython中怎么用面向?qū)ο蠓椒刂苖icrobit顯示”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內(nèi)容的文章,歡迎關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。