ESP32-C3开发之旅 软件篇 2 Arduino 数字引脚

本文介绍了Arduino引脚的配置,包括INPUT、INPUT_PULLUP和INPUT_PULLDOWN模式,以及OUTPUT模式。通过示例代码展示了如何设置引脚模式并进行数字读取。此外,还提到了ESP32-C3芯片的模拟输入功能,但遇到了A5引脚读取模拟量的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介

Arduino上的引脚可以配置为输入或输出。

Arduino引脚默认为输入,因此当您使用它们作为输入时,不需要将它们显式声明为pinMode()的输入。

二、模式介绍

pinMode(pin, mode)
 INPUT——输入模式
 INPUT_PULLUP——输入上拉模式:其中 HIGH 表示传感器关闭,LOW 表示传感器打开。    与GND构成回路
 INPUT_PULLDOWN--输入下拉模式:其中 HIGH 表示传感器打开,LOW 表示传感器关闭。 与3V3构成回路
 OUTPUT——输出模式
上拉电阻:上拉电阻是当某输入端口未连接设备或处于高阻抗的情况下,一种用于保证输入信号为预期逻辑电平的电阻元件。

三、实际测试

输入

void setup()
{
  pinMode(1, INPUT);//IO1  INPUT输入模式
  pinMode(2, INPUT_PULLUP);//IO2  INPUT输入上拉,没信号时为1,有信号是为0    与GND构成回路
  pinMode(3, INPUT_PULLDOWN);//IO3  INPUT输入下拉,没信号时为0,有信号是为1  与3V3构成回路
  Serial.begin(115200);//打开串口
}
void loop()
{
  Serial.print("1:");
  Serial.print(digitalRead(1)); //输出IO1 状态
  Serial.print("    2:");
  Serial.print(digitalRead(2));//输出IO2 状态
  Serial.print("    3:");
  Serial.println(digitalRead(3));//输出IO2 状态
  delay(1000);  
}

各个模式结果
输出

void setup()
{
  pinMode(3, OUTPUT); // 设置为输出模式 三色灯 红色
}
void loop()
{
  digitalWrite(3, HIGH); //开灯
  delay(1000);
  digitalWrite(3, LOW); //关灯
  delay(1000);
}

原理图

四、模拟量

ESP32-C3 系列芯片集成了两个 12 位(2 的12次方 为 4096) SAR ADC,共支持 6 个模拟通道输入。

虽然大多数Arduino用户模拟引脚的主要功能是读取模拟传感器,但模拟引脚还具有通用输入/输出(GPIO)引脚的所有功能(与数字引脚0 - 13相同)
ESP32-C3 模拟量引脚对应图
测试代码 ,A5 无法读取数据,目前未找到原因。

void setup()
{
  Serial.begin(115200); //打开串口
}
void loop()
{
  int IntA = A0;
  Serial.print("    ");
  Serial.print(IntA);
  Serial.print(":");
  Serial.println(analogRead(IntA));

  IntA = A1;
  Serial.print("    ");
  Serial.print(IntA);
  Serial.print(":");
  Serial.println(analogRead(IntA));

  IntA = A2;
  Serial.print("    ");
  Serial.print(IntA);
  Serial.print(":");
  Serial.println(analogRead(IntA));

  IntA = A3;
  Serial.print("    ");
  Serial.print(IntA);
  Serial.print(":");
  Serial.println(analogRead(IntA));

  IntA = A4;
  Serial.print("    ");
  Serial.print(IntA);
  Serial.print(":");
  Serial.println(analogRead(IntA));

  // IntA = A5; //模拟量 A5一直读取失败不知道原因
  // Serial.print("    ");
  // Serial.print(IntA);
  // Serial.print(":");
  // Serial.println(analogRead(IntA));

  delay(1000);
}

调试数据
调试数据

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值