本文小編為大家詳細(xì)介紹“在MicroPython中怎么用面向?qū)ο蠓椒刂苖icrobit顯示”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“在MicroPython中怎么用面向?qū)ο蠓椒刂苖icrobit顯示”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。
創(chuàng)新互聯(lián)公司長(zhǎng)期為成百上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為石鼓企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站制作,石鼓網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
Python(micropython)對(duì)物理計(jì)算非常有用
Python是當(dāng)之無愧的物理計(jì)算應(yīng)用中一個(gè)非常流行的語言。
Python很容易學(xué)習(xí),它很有表現(xiàn)力,可以在Linux、Mac OS和微軟Windows上免費(fèi)使用。
Python讓樹莓派充滿活力,大量代碼樹莓派的代碼都是用Python實(shí)現(xiàn)的。
最近,micropython帶來了語言的幾個(gè)流行的單片機(jī)平臺(tái),包括BBC microbit。
但…
大多數(shù)已發(fā)表micropython腳本使用Python程序風(fēng)格。大多數(shù)程序員都是這么開始的,它是教程中使用最廣泛的一種風(fēng)格。
當(dāng)以程序式編程時(shí),您可以逐步地完成計(jì)算機(jī)所希望的工作,而程序則是指定這些步驟的過程。
值得探索其他編程風(fēng)格,在本文中,您將看到如何開發(fā)一個(gè)簡(jiǎn)單的Python應(yīng)用程序,它可以使用面向?qū)ο箫L(fēng)格。在面向?qū)ο蟮某绦蛑?,通過創(chuàng)建對(duì)象來編程,即將數(shù)據(jù)和代碼結(jié)合起來執(zhí)行簡(jiǎn)單任務(wù)的小程序包。為了進(jìn)行更復(fù)雜的任務(wù),對(duì)象相互協(xié)作(相互交互)。通過編寫類的定義,指定特定對(duì)象的類型(數(shù)據(jù))和它能做什么(方法),指定程序所需的對(duì)象類型。
這個(gè)想法很簡(jiǎn)單。應(yīng)用程序使用microbit的LED點(diǎn)陣顯示計(jì)數(shù)器的值,并且可以通過使用按鈕來更改它。稍后,您將看到如何將這個(gè)簡(jiǎn)單的想法應(yīng)用于實(shí)際項(xiàng)目中。
您可以用簡(jiǎn)短的腳本實(shí)現(xiàn)演示,但腳本的組成部分在其他應(yīng)用程序中不易使用。
以下是一些可能需要實(shí)現(xiàn)的變化,而不必從scratch開始:
使用 LED 燈柱顯示
顯示當(dāng)前光線等級(jí)或溫度
一個(gè)時(shí)鐘樣式,當(dāng)參數(shù)上升到9時(shí)跳到0
使用不同類型LED的類似顯示器
一次只打開一個(gè)LED顯示值的顯示器
用不同顏色的顯示不同值的顯示器
當(dāng)然,您可以通過創(chuàng)建原始腳本的多個(gè)變體來實(shí)現(xiàn)這一點(diǎn),但如果您在原始腳本中發(fā)現(xiàn)了bug,那么會(huì)發(fā)生什么?你必須在每一份拷貝上做同樣的修改!
這就是為什么有經(jīng)驗(yàn)的程序員試圖避免代碼重復(fù)拷貝的原因之一。甚至有一個(gè)縮寫詞可以幫助你記住它:DRY(Don’t repeat yourself),代表“不要重復(fù)你自己”。
還有一個(gè)很好的理由,可以用簡(jiǎn)單的組件來編寫代碼。每個(gè)組件都很容易自己測(cè)試。這可以幫助您避免bug,跟蹤并刪除任何在代碼中爬蟲。
讓我們開始編碼
您將需要查看按鈕的代碼,并告訴應(yīng)用程序中的計(jì)數(shù)器在按下其中一個(gè)按鈕時(shí)計(jì)數(shù)或向上或向下計(jì)數(shù)。
沒有必要用一個(gè)類來實(shí)現(xiàn)它。
應(yīng)用程序代碼中創(chuàng)建和SimpleDisplayer實(shí)例連在一起的計(jì)數(shù)器,以達(dá)到預(yù)期的結(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)
最后一部分應(yīng)該是不言自明的。它創(chuàng)建了一個(gè)SimpleDisplayer和計(jì)數(shù)器的代碼。讓我們從計(jì)數(shù)器開始。
Counter類
在這個(gè)應(yīng)用程序中,計(jì)數(shù)器是一個(gè)簡(jiǎn)單的對(duì)象,它知道它的當(dāng)前計(jì)數(shù),并且可以在它的初始值為零和某些最大值之間上下計(jì)數(shù)。在我們的例子中,最大值是10。
計(jì)數(shù)器知道另一個(gè)對(duì)象,每當(dāng)計(jì)數(shù)器的值發(fā)生變化時(shí)就會(huì)被通知。最初,這將是一個(gè)SimpleDisplayer對(duì)象并在microbit上顯示。
下面是計(jì)數(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()
計(jì)數(shù)器向顯示器發(fā)送消息,這是一個(gè)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>
這種方法使我們的應(yīng)用程序很容易適應(yīng)一個(gè)代碼的變化。假設(shè)您希望使用類似于Proto-pic EDGE的LED陣列顯示計(jì)數(shù)器的當(dāng)前狀態(tài)。
下面是驅(qū)動(dòng)修訂應(yīng)用程序的代碼:
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)
最后一部分不變。使用了兩個(gè)新的類的代碼:neopixel和BarGraph。
neopixel類是microbit的micropython版的一部分,所以我們只需要導(dǎo)入neopixel模塊。BarGraph是我們應(yīng)用程序新的部分,我們需要寫它的定義并插入到上面。
這里是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()
應(yīng)用程序代碼(前面所示)創(chuàng)建實(shí)例并將和計(jì)數(shù)器和BarGraph連接起來,從而達(dá)到預(yù)期的結(jié)果。
模塊化代碼更容易更改。在這篇文章的下一部分,我們將看到改變光感應(yīng)LDR的輸入和添加更多的顏色到BarGraph顯示。
我們還將看到這種方法的另一個(gè)主要好處:易于測(cè)試。
讀到這里,這篇“在MicroPython中怎么用面向?qū)ο蠓椒刂苖icrobit顯示”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。