在MicroPython中怎么用面向?qū)ο蠓椒刂苖icrobit顯示

本文小編為大家詳細(xì)介紹“在MicroPython中怎么用面向?qū)ο蠓椒刂苖icrobit顯示”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“在MicroPython中怎么用面向?qū)ο蠓椒刂苖icrobit顯示”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。

創(chuàng)新互聯(lián)公司長(zhǎng)期為成百上千客戶(hù)提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為石鼓企業(yè)提供專(zhuān)業(yè)的成都做網(wǎng)站、網(wǎng)站制作,石鼓網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

Python(micropython)對(duì)物理計(jì)算非常有用
 

  • Python是當(dāng)之無(wú)愧的物理計(jì)算應(yīng)用中一個(gè)非常流行的語(yǔ)言。

  • Python很容易學(xué)習(xí),它很有表現(xiàn)力,可以在Linux、Mac OS和微軟Windows上免費(fèi)使用。

  • Python讓樹(shù)莓派充滿(mǎn)活力,大量代碼樹(shù)莓派的代碼都是用Python實(shí)現(xiàn)的。

  • 最近,micropython帶來(lái)了語(yǔ)言的幾個(gè)流行的單片機(jī)平臺(tái),包括BBC microbit。


但…

大多數(shù)已發(fā)表micropython腳本使用Python程序風(fēng)格。大多數(shù)程序員都是這么開(kāi)始的,它是教程中使用最廣泛的一種風(fēng)格。

當(dāng)以程序式編程時(shí),您可以逐步地完成計(jì)算機(jī)所希望的工作,而程序則是指定這些步驟的過(guò)程。

值得探索其他編程風(fēng)格,在本文中,您將看到如何開(kāi)發(fā)一個(gè)簡(jiǎn)單的Python應(yīng)用程序,它可以使用面向?qū)ο箫L(fēng)格。在面向?qū)ο蟮某绦蛑校ㄟ^(guò)創(chuàng)建對(duì)象來(lái)編程,即將數(shù)據(jù)和代碼結(jié)合起來(lái)執(zhí)行簡(jiǎn)單任務(wù)的小程序包。為了進(jìn)行更復(fù)雜的任務(wù),對(duì)象相互協(xié)作(相互交互)。通過(guò)編寫(xiě)類(lèi)的定義,指定特定對(duì)象的類(lèi)型(數(shù)據(jù))和它能做什么(方法),指定程序所需的對(duì)象類(lèi)型。

這個(gè)想法很簡(jiǎn)單。應(yīng)用程序使用microbit的LED點(diǎn)陣顯示計(jì)數(shù)器的值,并且可以通過(guò)使用按鈕來(lái)更改它。稍后,您將看到如何將這個(gè)簡(jiǎn)單的想法應(yīng)用于實(shí)際項(xiàng)目中。

您可以用簡(jiǎn)短的腳本實(shí)現(xiàn)演示,但腳本的組成部分在其他應(yīng)用程序中不易使用。

以下是一些可能需要實(shí)現(xiàn)的變化,而不必從scratch開(kāi)始:

  • 使用 LED 燈柱顯示

  • 顯示當(dāng)前光線等級(jí)或溫度

  • 一個(gè)時(shí)鐘樣式,當(dāng)參數(shù)上升到9時(shí)跳到0

  • 使用不同類(lèi)型LED的類(lèi)似顯示器

  • 一次只打開(kāi)一個(gè)LED顯示值的顯示器

  • 用不同顏色的顯示不同值的顯示器


當(dāng)然,您可以通過(guò)創(chuàng)建原始腳本的多個(gè)變體來(lái)實(shí)現(xiàn)這一點(diǎn),但如果您在原始腳本中發(fā)現(xiàn)了bug,那么會(huì)發(fā)生什么?你必須在每一份拷貝上做同樣的修改!

這就是為什么有經(jīng)驗(yàn)的程序員試圖避免代碼重復(fù)拷貝的原因之一。甚至有一個(gè)縮寫(xiě)詞可以幫助你記住它:DRY(Don’t repeat yourself),代表“不要重復(fù)你自己”。

還有一個(gè)很好的理由,可以用簡(jiǎn)單的組件來(lái)編寫(xiě)代碼。每個(gè)組件都很容易自己測(cè)試。這可以幫助您避免bug,跟蹤并刪除任何在代碼中爬蟲(chóng)。

讓我們開(kāi)始編碼

您將需要查看按鈕的代碼,并告訴應(yīng)用程序中的計(jì)數(shù)器在按下其中一個(gè)按鈕時(shí)計(jì)數(shù)或向上或向下計(jì)數(shù)。

沒(méi)有必要用一個(gè)類(lèi)來(lái)實(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ù)器開(kāi)始。

Counter類(lèi)

在這個(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ù)器類(lèi)的代碼:

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è)您希望使用類(lèi)似于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è)新的類(lèi)的代碼:neopixel和BarGraph。

neopixel類(lèi)是microbit的micropython版的一部分,所以我們只需要導(dǎo)入neopixel模塊。BarGraph是我們應(yīng)用程序新的部分,我們需要寫(xiě)它的定義并插入到上面。

這里是BarGraph類(lèi)的代碼:

# 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連接起來(lái),從而達(dá)到預(yù)期的結(jié)果。
模塊化代碼更容易更改。在這篇文章的下一部分,我們將看到改變光感應(yīng)LDR的輸入和添加更多的顏色到BarGraph顯示。
我們還將看到這種方法的另一個(gè)主要好處:易于測(cè)試。

讀到這里,這篇“在MicroPython中怎么用面向?qū)ο蠓椒刂苖icrobit顯示”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享題目:在MicroPython中怎么用面向?qū)ο蠓椒刂苖icrobit顯示
網(wǎng)頁(yè)網(wǎng)址:http://bm7419.com/article44/isgghe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、域名注冊(cè)、網(wǎng)頁(yè)設(shè)計(jì)公司、微信公眾號(hào)ChatGPT、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)