使用arduino测量电压的超级简单的方法

/*
 *原理就是我们都学过的串联电路的分压
 *使用俩个相同的电阻串联,并将其中一个电阻的两端分别接入arduino的A0接口与GND接口实现电压的测量
 *注意所测的电压不能超过"串联电阻数量"乘"5V",否则可能会烧掉!!!!!!!!!!!!
 *注意所测的电压不能超过"串联电阻数量"乘"5V",否则可能会烧掉!!!!!!!!!!!!
 *注意所测的电压不能超过"串联电阻数量"乘"5V",否则可能会烧掉!!!!!!!!!!!!
 *注意所测的电压不能超过"串联电阻数量"乘"5V",否则可能会烧掉!!!!!!!!!!!!
 *注意所测的电压不能超过"串联电阻数量"乘"5V",否则可能会烧掉!!!!!!!!!!!!
 */



#define BV 0.0048875855327468   //analog将5V分成了1023个单位——5/1023
#define num 2;                  //串联所接的电阻的数量
int v;                          //定义analog所测得的数字(1~1023)
long double lv;                 //定义所测电阻的电压
double zv;                      //定义整个电路的电压
void setup() {
  Serial.begin(9600);
  pinMode(A0,INPUT);

}

void loop() {
  v = analogRead(A0);
  lv = v * BV;
  zv = lv * num;                //因为两个电阻是一样的大小,所以直接相乘就可以得到所测电压的大小
  Serial.println(zv);
}

接线图如下
在这里插入图片描述

### Arduino 使用超声波模块实现测距 #### 实现原理 超声波传感器通过发射超声波并接收反射回来的信号来测量物体的距离。具体来说,当发送一个短促的高电平脉冲到 Trig 引脚时,会触发超声波模块发出一束超声波。该超声波遇到障碍物后会被反射回模块,而 Echo 引脚则用于捕获这个返回信号的时间长度。利用时间差和声音传播速度的关系可以计算出目标物体的距离。 距离公式如下: \[ \text{Distance (cm)} = \frac{\text{Time (\mu s)}}{58} \] 其中 \( Time(\mu s) \) 是从发出超声波到接收到反射波之间所花费的时间(单位为微秒),\( 58 \) 表示每厘米所需的大致时间常数[^1]。 #### 示例代码解析 以下是基于上述原理编写的典型 Arduino 测距程序: ```cpp // 定义引脚编号 const int TrigPin = 9; const int EchoPin = 10; void setup() { // 初始化串口通信 Serial.begin(9600); // 设置TrigPin为输出模式 pinMode(TrigPin, OUTPUT); // 设置EchoPin为输入模式 pinMode(EchoPin, INPUT); // 打印提示信息至串口监视器 Serial.println("Ultrasonic Sensor:"); } void loop() { // 发送低电平持续2μs以准备触发 digitalWrite(TrigPin, LOW); delayMicroseconds(2); // 发送高电平持续10μs作为触发信号 digitalWrite(TrigPin, HIGH); delayMicroseconds(10); digitalWrite(TrigPin, LOW); // 接收返回的脉冲宽度,并转换成距离值 long duration = pulseIn(EchoPin, HIGH); // 获取返回脉冲的时间 float distance = duration / 58.0; // 计算实际距离 // 将结果打印到串口监视器 Serial.print("Distance: "); Serial.print(distance); Serial.println(" cm"); // 延迟一段时间再重复操作 delay(500); } ``` 此代码实现了完整的超声波测距功能,包括初始化硬件配置、生成触发信号以及读取响应数据并将其转化为可理解的形式显示出来[^2]。 #### 关键函数说明 - **`pinMode(pin, mode)`**: 配置指定针脚的工作方式,这里分别设定了 `TrigPin` 和 `EchoPin` 的工作状态。 - **`digitalWrite(pin, value)`**: 向指定针脚写入高低电压等级,在本项目里用来制造必要的控制信号。 - **`pulseIn(pin, state)`**: 返回匹配给定逻辑级别的第一个脉冲的持续时间,这是获取往返时间的核心方法之一。 以上就是关于如何使用 Arduino 结合 HC-SR04 或类似的超声波传感设备完成基本测距任务的一个简单介绍及其配套实例编码教程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安师大崔神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值