首页 > 其他分享 >Arduino IDE框架 Arduino Uno

Arduino IDE框架 Arduino Uno

时间:2024-08-11 14:16:29浏览次数:8  
标签:引脚 Arduino 电压 Serial IDE 唤醒 Uno

一、唤醒

在Arduino IDE框架中进行Arduino Uno开发时,可以使用SLEEP_MODE_PWR_DOWN模式来实现最深层次的休眠,以降低功耗。在这种模式下,Arduino Uno会关闭大部分微控制器功能,包括定时器中断,因此通常需要一个外部中断来唤醒设备。

为了使用一个按钮来唤醒Arduino Uno,你需要将按钮连接到Arduino Uno的一个外部中断引脚,并配置该引脚以在低电平或高电平变化时产生中断。

以下是唤醒开关连接和代码配置的步骤:

连接唤醒开关

  1. 选择一个外部中断引脚。Arduino Uno上的外部中断引脚是数字引脚2(INT0)和数字引脚3(INT1)。

  2. 将唤醒开关的一个脚连接到GND(地)。

  3. 将唤醒开关的另一个脚连接到你选择的外部中断引脚(INT0或INT1)。

代码配置

下面是一个示例代码,展示如何配置外部中断并使用按钮来唤醒Arduino Uno:

#include  <avr/sleep.h>
#include  <avr/power.h>

//  假设使用INT0,即数字引脚2作为唤醒引脚
const  byte  wakePin  =  2;  //  INT0

//  唤醒中断服务程序
void  wakeUpNow()  {
    //  这里什么也不做,只是中断睡眠模式
}

void  setup()  {
    pinMode(wakePin,  INPUT_PULLUP);  //  设置为输入并启用内部上拉电阻
    attachInterrupt(0,  wakeUpNow,  LOW);  //  使用INT0,当引脚电平为低时唤醒

    //  初始化串行通信
    Serial.begin(9600);
    Serial.println("Going  to  sleep...");
}

void  loop()  {
    //  进入休眠模式
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);  //  设置休眠模式为最深睡眠
    sleep_enable();  //  启用休眠模式

    //  确保外部中断可以唤醒设备
    attachInterrupt(0,  wakeUpNow,  LOW);  //  再次确认外部中断配置

    //  现在进入休眠模式
    sleep_mode();

    //  唤醒后,会从这里继续执行

    //  禁用休眠模式
    sleep_disable();

    //  清除外部中断标志位(如果有的话)
    EIFR  =  bit(INTF0);  //  对于INT0

    //  干扰处理程序后可能需要执行的代码
    Serial.println("Woke  up!");

    //  这里可以添加你的代码,例如检查按钮状态或执行其他任务

    //  延迟一下,防止按钮去抖导致的立即再次唤醒
    delay(100);
}

 

二、过压断路保护模块

三、测量电源压降,计算电量百分比

如果您的供电是4节5号电池,最高电压大约是6V,那么您可以直接将这个电压连接到Arduino Uno的VIN引脚,因为这是在VIN引脚接受的电压范围内(7V到12V)。

由于电池组的电压低于VIN引脚可以接受的最高电压,您不需要使用电阻分压器来测量电压。您可以直接使用一个模拟引脚来测量电池电压,但是要注意,Arduino Uno的模拟引脚最大只能测量到5V。

为了测量6V以下的电池电压,您可以使用一个简单的电路,比如一个电压分压器,或者如果您知道电池组的电压不会超过5V,您可以直接连接到模拟引脚。

以下是修改后的代码,用于测量最高6V的电池电压:

//  定义模拟输入引脚,这里我们使用A0
const  int  voltagePin  =  A0;

void  setup()  {
      //  初始化串行通信
      Serial.begin(9600);
}

void  loop()  {
      //  读取VIN引脚的模拟电压值
      int  voltageValue  =  analogRead(voltagePin);

      //  对于Arduino  Uno,模拟读数范围是0到1023,对应于0V到5V
      //  使用以下公式将模拟读数转换为实际的电压值
      float  voltage  =  (voltageValue  *  5.0)  /  1023.0;

      //  打印电压值
      Serial.print("Battery  Voltage:  ");
      Serial.println(voltage);

      //  等待一段时间,避免快速连续读取导致的串行通信问题
      delay(1000);
}

但是,由于您的电池组最高电压为6V,您可能想要使用一个简单的电压分压器来确保不会超过Arduino的模拟输入电压范围。例如,如果您使用10kΩ和5kΩ的电阻来构建电压分压器,那么您可以通过以下方式计算实际电压:

//  定义模拟输入引脚,这里我们使用A0
const  int  voltagePin  =  A0;
const  float  resistorDivisor  =  5.0  /  (5.0  +  10.0);  //  5kΩ  /  (5kΩ  +  10kΩ)

void  setup()  {
      //  初始化串行通信
      Serial.begin(9600);
}

void  loop()  {
      //  读取VIN引脚的模拟电压值
      int  voltageValue  =  analogRead(voltagePin);

      //  将模拟值转换为实际的电压值
      float  voltage  =  (voltageValue  *  5.0)  /  1023.0;  //  分压后的电压
      float  actualVoltage  =  voltage  /  resistorDivisor;  //  实际电池电压

      //  打印电压值
      Serial.print("Battery  Voltage:  ");
      Serial.println(actualVoltage);

      //  等待一段时间
      delay(1000);
}

 

四、输入

五、输出控制







标签:引脚,Arduino,电压,Serial,IDE,唤醒,Uno
From: https://www.cnblogs.com/pearlcity/p/18353348

相关文章

  • IDERA ER/Studio Data Architect 20.3 Crack
    ER/Studio:不仅仅是数据建模:ER/Studio可以超越基本的数据建模,提供企业数据方法并构建数据生态系统。与ER/Studio合作让我们能够进一步推动数据成为我们业务的推动力。数据发现很容易,而且从输入到跟踪的所有数据移动都足够灵活,让我们能够同时进行多个项目。高级功能前所未......
  • IDEA Sonar 扫描
    1.修改SonarQube-7.7\conf\sonar.properties数据库配置2.启动SonarQube-7.7\bin\windows-x86-64\StartSonar.bat,打开localhost:9000,账密admin/admin3.pom文件配置:<profiles><profile><id>sonar</id><properties>......
  • IDEA发生“Error:java: 错误: 不支持发行版本 5”错误的解决方案
    1、问题描述如上图所示,使用IDEA创建了一个maven项目,在运行时发生“Error:java:错误:不支持发行版本5”的报错。原因分析:该错误是由于IDEA的各个配置项存在JDK版本冲突导致的。2、解决方案一2.1、设置Maven的JDK插件如上图所示,在pom.xml文件中,设置一个编译插......
  • 处理idea中的properties中文乱码问题
    如果遇到项目使用了prioperties格式的文件,别人拉取代码乱码,可以进行如下操作    另外的idea中 需要注意的是,请在编辑之前就进行设置......
  • 性能数据采集分析(Guider开源项目集成)(第一次发帖,用于个人经验记录)
    https://github.com/iipeace/guiderpython环境下集成guider的经验分享初始化Guider环境:步骤一:PushPython-Guider环境假设python-guider环境是一个文件夹或者压缩文件,需要将其推送到Android设备上。假设该环境位于本地路径/path/to/python-guider。adbpush/path/to......
  • Arduino的扩展模块
    Arduino是一款开源的电子原型平台,它具有简单易用、功能强大和可扩展性好的特点。Arduino拥有丰富的拓模块,可以实现各种各样的功能和应用。本文将详细介绍Arduino中常用的拓模块。传感器模块传感器模块用于感知周围环境的信息。常见的传感器模块有温湿度传感器、光线传感器、......
  • IntelliJ IDEA 2024.2 发布:Spring Data JPA即时查询、自动补全cron表达式
    今早看到,IntelliJIDEA2024.2发布的邮件提示,看了一眼这个版本更新的新特性真的太适合我了!也许这些能力对关注DD的小伙伴也有帮助,所以搞篇博客介绍和推荐一下。下面就来一起看看这个版本中推出的几个强大新特性。SpringDataJPA的即时查询在2024.2Ultimate版本中,对Spring......
  • IntelliJ Idea 常用快捷键参照列表
    IntelliJIdea常用快捷键参照列表Ctrl+Shift+Enter,语句完成“!”,否定完成,输入表达式时按“!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Shift+Click,可以关闭文件Ctrl+[OR],可以跑到大括号的开头与结尾Ctrl+F12,可以显示当前文件的结构Ctrl+F7,可以查询当前元素在当......
  • Xcode 16 beta 5 (16A5221g) 发布 - Apple 平台 IDE
    Xcode16beta5(16A5221g)发布-Apple平台IDEIDEforiOS/iPadOS/macOS/watchOS/tvOS/visonOS请访问原文链接:https://sysin.org/blog/apple-xcode-16/,查看最新版。原创作品,转载请保留出处。Xcode16的新功能使用预测代码补全功能和更快的预览功能,将奇思妙想转化为代码......
  • Open3d Create_from_cloud_alpha_shape 错误:无效的 unordered_map
    我在open3d中的create_from_point_cloud_alpha_shape方面遇到问题。这是我的代码。importopen3daso3dimportnumpyasnpmesh=o3d.io.read_triangle_mesh('Bunny.stl')print(mesh)pcd=mesh.sample_points_poisson_disk(750)alpha=0.3mesh=o3d.geome......