当前位置: 首页 > news >正文

在Arduino上模拟和电子I/O工作

目录

一、Arduino 的 I/O 概述

二、数字 I/O 工作方式

1. 设置引脚模式

读写数字信号

三、模拟输入(Analog Input)

1. 原理

2. 使用方法

四、模拟输出(PWM)

1. 原理

2. 使用方法

五、注意事项


一、Arduino 的 I/O 概述

Arduino 的引脚可以分为两类:

  1. 数字 I/O (Digital Input/Output)

    • 只能识别和输出 0 或 1(低电平 0V,高电平 5V/3.3V,具体看开发板)。

    • 可用于控制 LED、读取按钮开关状态、与数字传感器通信等。

  2. 模拟 I/O (Analog Input/Output)

    • 模拟输入 (Analog Input):通过板载的 ADC(模数转换器) 把连续的电压(0V~5V 或 0~3.3V)转换成离散的数值(通常 10 位,范围 0~1023)。

    • 模拟输出 (Analog Output):Arduino 没有真正的 DAC(数模转换器),所以它的“模拟输出”其实是 PWM(脉冲宽度调制) 信号,用来“模拟”电压大小。


二、数字 I/O 工作方式

1. 设置引脚模式

setup() 里定义:

pinMode(pin, INPUT);      // 设置为输入
pinMode(pin, INPUT_PULLUP); // 输入并启用内部上拉电阻
pinMode(pin, OUTPUT);     // 设置为输出

读写数字信号

  • 输入:

int buttonState = digitalRead(2); // 读取引脚 2 的电平(0 或 1)

输出:

digitalWrite(13, HIGH); // 将引脚 13 拉高(5V)
digitalWrite(13, LOW);  // 将引脚 13 拉低(0V)

例子:按钮控制 LED

const int buttonPin = 2;
const int ledPin = 13;
int buttonState = 0;void setup() {pinMode(buttonPin, INPUT);pinMode(ledPin, OUTPUT);
}void loop() {buttonState = digitalRead(buttonPin);if (buttonState == HIGH) {digitalWrite(ledPin, HIGH);  // 点亮 LED} else {digitalWrite(ledPin, LOW);   // 关闭 LED}
}

三、模拟输入(Analog Input)

1. 原理

  • Arduino UNO 有 6 个模拟输入引脚(A0~A5)。

  • 电压范围:0V ~ 5V

  • ADC 分辨率:10 位 → 输出数值 0~1023

    • 0 → 0V

    • 1023 → 5V

    • 例如:输入 2.5V → 大约读到 512

2. 使用方法

int sensorValue = analogRead(A0); // 读取 A0 上的电压

例子:电位器读数

int sensorValue = 0;void setup() {Serial.begin(9600); // 打开串口监视器
}void loop() {sensorValue = analogRead(A0);  Serial.println(sensorValue);   // 打印 0~1023 的数值delay(500);
}

四、模拟输出(PWM)

1. 原理

  • Arduino UNO 的某些数字引脚支持 PWM 输出(标有 ~ 的引脚,如 3, 5, 6, 9, 10, 11)。

  • PWM 用高速开关信号的 占空比 来模拟电压:

    • 0% 占空比 → 0V

    • 50% 占空比 → 2.5V(假设 5V 电源)

    • 100% 占空比 → 5V

2. 使用方法

analogWrite(pin, value); 
// value 范围 0~255
// 0 = 0V, 255 ≈ 5V

例子:呼吸灯

int led = 9;   // 支持 PWM 的引脚
int brightness = 0;
int fadeAmount = 5;void setup() {pinMode(led, OUTPUT);
}void loop() {analogWrite(led, brightness);   // 设置亮度brightness = brightness + fadeAmount;if (brightness <= 0 || brightness >= 255) {fadeAmount = -fadeAmount; // 反向变化}delay(30);
}

五、注意事项

  1. 电压范围:不要给 Arduino 模拟输入超过其供电电压(UNO 是 5V,Nano/ESP32 可能是 3.3V)。

  2. 电流限制:每个 I/O 引脚最大约 20mA,绝对不能超过 40mA。

  3. PWM ≠ 真正模拟电压,它是数字信号模拟的“平均电压”,对 LED、马达有效,但不能直接输出真正的连续电压波形。

  4. 滤波电路:如果需要真正平滑的模拟电压,可以在 PWM 输出端加一个 RC 滤波器(电阻 + 电容)。


✅ 总结一下:

  • Digital I/OpinMode() + digitalRead()/digitalWrite()

  • Analog InputanalogRead() 获取 0~1023 对应电压

  • Analog Output (PWM)analogWrite() 设置 0~255 对应占空比

下面我画了一个Arduino I/O 总结图(数字输入/输出,模拟输入/输出函数一览)


文章转载自:

http://Xbp4Xc6b.ychrn.cn
http://caMt3P7g.ychrn.cn
http://zO4L0Rv7.ychrn.cn
http://VxYotteI.ychrn.cn
http://yhFtC5JK.ychrn.cn
http://59VQAikG.ychrn.cn
http://jrD9f2Oa.ychrn.cn
http://JN5N3HlP.ychrn.cn
http://d8WNB9CD.ychrn.cn
http://jSiS9hWc.ychrn.cn
http://iQCgM9YK.ychrn.cn
http://Xxq53Wt5.ychrn.cn
http://sbOSCE9j.ychrn.cn
http://HJIESRSM.ychrn.cn
http://rqQDkY0S.ychrn.cn
http://50FxYFea.ychrn.cn
http://LdaYH5qs.ychrn.cn
http://OrWCGZPl.ychrn.cn
http://YUUvKdGA.ychrn.cn
http://E1rcUplv.ychrn.cn
http://qIx4cLtv.ychrn.cn
http://oidvNqwt.ychrn.cn
http://QF1rfQ33.ychrn.cn
http://DTncoULA.ychrn.cn
http://V1d0yEXX.ychrn.cn
http://sAS7LgW6.ychrn.cn
http://aFn5XAt8.ychrn.cn
http://HTLnFhky.ychrn.cn
http://T40tJBfr.ychrn.cn
http://qwUvynn3.ychrn.cn
http://www.dtcms.com/a/388524.html

相关文章:

  • Windows 命令行:相对路径
  • 线程、进程、协程
  • Java/注解Annotation/反射/元数据
  • C++学习:哈希表的底层思路及其实现
  • 机器学习python库-Gradio
  • 创作一个简单的编程语言,首先生成custom_arc_lexer.g4文件
  • 湖北燃气瓶装送气工证考哪些科目?
  • MySQL死锁回滚导致数据丢失,如何用备份完美恢复?
  • Zustand入门及使用教程(二--更新状态)
  • Matplotlib统计图:绘制精美的直方图、条形图与箱线图
  • 在el-table-column上过滤数据,进行格式化处理
  • 记一次golang结合前端的axios、uniapp进行预签名分片上传遇到403签名错误踩坑
  • 十一章 无界面压测
  • 多色印刷机的高精度同步控制:EtherCAT与EtherNet/IP的集成应用
  • 【随笔】【蓝屏】DMA错误
  • Coze源码分析-资源库-创建工作流-后端源码-IDL/API/应用/领域层
  • 5 分钟将网站打包成 APP:高效实现方案
  • 物联网智能网关核心功能实现:解析西门子1500 PLC的MQTT通信配置全流程
  • 新国标电动自行车实施,BMS 静电浪涌风险与对策
  • 【Python】Python文件操作
  • C#如何使用ApiPost接口,将数据显示在unity面板
  • 零基础从头教学Linux(Day 36)
  • 深度学习(2)
  • 火山 17 声音回调
  • Flash芯片的VCC上电到可操作时间过长
  • CSP-S——各算法可以实现的问题
  • 第十七章 Arm C1-Premium性能监控单元(PMU)事件详解
  • vue锚点导航
  • 软件体系结构——后端三层架构
  • Nmap 端口扫描