使Arduino進入休眠狀態,然後喚醒


在本文中,我們將按照標題的建議,使Arduino進入休眠狀態,並使用中斷喚醒它。Arduino的微控制器ATmega328P有6種休眠模式,其中5種可透過**avr/sleep.h**庫使用。每種模式都有不同的喚醒模式和不同的功耗。

Arduino的微控制器ATmega328P有6種休眠模式,其中5種可透過**avr/sleep.h**庫使用。

  • 空閒模式

  • ADC降噪

  • 掉電

  • 省電

  • 待機

  • 擴充套件待機

每種模式都有不同的喚醒模式和不同的功耗。

空閒模式最容易喚醒,而待機和掉電模式最難喚醒(只能使用外部中斷或看門狗定時器從待機模式喚醒模組)。掉電模式也是最節能的休眠模式。

TWI地址匹配指的是I2C或線地址匹配。只有當微控制器為I2C從機並且主機發送與該微控制器相對應的地址以喚醒它時,微控制器才能透過這種方式喚醒。建議您仔細閱讀ATmega328P的資料手冊,以瞭解更多關於休眠模式的資訊。

現在,您可以直接使用avr/sleep.h庫並在Arduino中探索休眠模式。這裡給出了一個示例這裡

但是,就像往常一樣,有人已經努力建立了一個庫。該庫稱為**Low-Power**。它可以在GitHub上找到這裡

它在Arduino IDE的庫管理器中不可用。此處解釋了安裝此類庫的方法這裡

安裝完此庫後,轉到:**檔案 → 示例 → Low-Power → 示例 → idleWakePeriodic**

如您所見,程式碼非常簡單。您包含“**LowPower.h**”庫,並且迴圈中只有一行(不需要設定) -

LowPower.idle(SLEEP_8S, ADC_OFF, TIMER2_OFF, TIMER1_OFF, TIMER0_OFF,
SPI_OFF, USART0_OFF, TWI_OFF);

如您所見,我們正在將Arduino設定為低功耗空閒模式,停用ADC、定時器、SPI、UART和TWI,並使用看門狗定時器喚醒它。

以上語句適用於Arduino Uno(ATmega328P)。程式碼註釋中還提供了其他微控制器的相應語句。

您可以透過將電流感測器(安培表)與Arduino電源串聯連線,並在Arduino休眠時觀察電流下降來檢查Arduino是否確實處於休眠狀態。

更新於: 2021年7月31日

2K+瀏覽量

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.