使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是否确实处于休眠状态。