专栏首页云深之无迹Arduino数字引脚作为GPIO的使用

Arduino数字引脚作为GPIO的使用

引脚与GPIO的关系

引脚(pin)是对芯片的外部物理接口的一个称呼,它是在不把这个物理接口投入到具体应用场合下的称呼。例如,我们可以说,某某芯片的P1.5引脚可以作为数字输出驱动外部数字设备,也可以作为串口接受引脚接受串口数据。那么P1.5就是一个引脚(pin),而作为数字输出,UART的RX就是这个引脚的2个功能。

所以我们可以发现: 1、大多数MCU的引脚都不止一个功能。不同引脚内部结构不一样,拥有的功能也不一样。通过不同的配置,切换引脚的实际功能。 2、不是所有的引脚都能在程序中使用,比如芯片的Vcc和GND,除了供电,就没做其他的用处。

数字引脚函数

pinMode(pin, mode) 作用:设置一个引脚(pin)作为GPIO时的I/O模式。 参数: pin:引脚编号 mode:GPIO的I/O模式,取值有3种 INPUT :作为数字输入 OUTPUT :作为数字输出 INPUT_PULLUP:作为数字输入,且使能引脚的内部上拉电阻 Arduino的引脚,在上电时默认就是输入模式,但最好使用pinMode设置,更加明确。 当配置引脚为数字输入模式时,引脚表现为高阻抗状态,引脚内部的电流非常小,就如同在引脚前接了一个100M欧姆的电阻一样。这也意味外部转换引脚的电平只需很小的电流输入即可。 当使用INPUT模式时,引脚作为数字输入,但是不连接任何的拉电阻,处于悬空转态,容易受电子噪声干扰而随机的改变其电平状态。一般来说,当引脚作为数字输入使用时,都让引脚连接一个拉电阻:上拉电阻(引脚电平拉高到+5V或者+3.3V)或者下拉电阻(引脚电平拉低到GND)。可以使用Arduino引脚内部的上拉电阻(绝大多数AVR芯片为20K~50K,而Due则是50K~150K,具体参考MCU的数据手册),或者自己外接拉电阻,外接拉电阻阻值一般使用10K的。

关于上拉和下拉电阻,可以参考-->上拉电阻和下拉电阻 当使用INPUT_PULLUP模式时,引脚作为数字输入,且使能内部上拉电阻。13号引脚不建议作为数字输入引脚使用。因为13脚默认连接了一个板载的LED灯,即便是你使能了上拉电阻,LED的电阻会拉低电压,使得引脚依然是低电平。如果你非要使用13作为输入,那就外置拉电阻。 当使用OUTPUT模式时,引脚作为数字输出,引脚表现为低阻抗,输出的电流大,高达40mA,足够驱动一些基本的设备,如LED小灯。但不足以驱动马达等对电流要求很高的元件。 注: 1、引脚作为PWM输出时,无需先前使用pinMode配置其模式,因为PWM本身就代表了输出的意思。且官方库源代码中可以发现,它已经帮我们配置为输出了。

void analogWrite(uint8_t pin, int val)
{
    pinMode(pin, OUTPUT);
    if (val == 0){
        digitalWrite(pin, LOW);
    }
     //...
}

2、模拟引脚也可以作为数字引脚使用,完全OK。这在数字引脚不够用的情况下非常有用。

下面是示例代码

//使用模拟引脚A0作为数字输出驱动LED小灯,Blink程序。
int LEDpin  = A0;

void setup() {
  pinMode(LEDpin, OUTPUT);
  digitalWrite(LEDpin, LOW);
}

void loop() {
  digitalWrite(LEDpin, HIGH);
  delay(200);
  digitalWrite(LEDpin, LOW);
  delay(200);

}

digitalWrite(pin,value) 作用:设置一个数字输出引脚的输出电平值,HIGH或者LOW。 参数: pin:引脚编号。此引脚必须在之前使用pinMode设置为OUTPUT模式。 value:2个值 LOW:输出低电平 HIGH:输出高电平 int digitalRead(pin) 作用:读取一个数字输入引脚的电平值。 返回:HIGH(高电平)或者LOW(低电平)。 参数: pin:引脚编号。

本文分享自微信公众号 - 云深之无迹(TT1827652464),作者:小怼怼

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Arduino Sensor Shield v5 传感器扩展板

    Sensor Shield V5.0适用于Uno,Mega 2560和类似外形的Arduino板,并提供了一种方便的方法来连接传感器和其他外围设备,例如伺服电机...

    云深无际
  • ESP32-30引脚与36引脚对照版

    此外,即使其他型号带有更多GPIO,也不建议使用多余的GPIO(它们已连接到ESP32集成闪存)。

    云深无际
  • ESP32芯片布线指南

    LDO即low dropout regulator,是一种低压差线性稳压器。这是相对于传统的线性稳压器来说的。传统的线性稳压器,如78XX系列的芯片都要求输入电...

    云深无际
  • ESP8266简单介绍

    是面向物联网应用的高性价比、高度集成的 Wi-Fi MCU。MCU是为控制单元的意思。

    挥刀北上
  • 巧用c语言数组来操作数字逻辑电路

    通常为了节省单片机的引脚,我我们同城会使用比较多的数字电路来扩展,比如74hc574的D触发器,74ls138的38译码器,3态八路缓冲器/线路驱动器74hc5...

    用户4645519
  • 4-51单片机WIFI学习(开发板51单片机自动冷启动下载原理)

    上一篇链接 http://www.cnblogs.com/yangfengwu/p/8743936.html 这一篇说一下自己板子的51单片机自动冷启动下载原理...

    杨奉武
  • Arduino Sensor Shield v5 传感器扩展板

    Sensor Shield V5.0适用于Uno,Mega 2560和类似外形的Arduino板,并提供了一种方便的方法来连接传感器和其他外围设备,例如伺服电机...

    云深无际
  • 1-移远GSM/GPRS M26 模块 Mini板 开发板(使用说明)

    杨奉武
  • ESP32芯片布线指南

    LDO即low dropout regulator,是一种低压差线性稳压器。这是相对于传统的线性稳压器来说的。传统的线性稳压器,如78XX系列的芯片都要求输入电...

    云深无际
  • FPGA上电后IO的默认状态

    在进行FPGA硬件设计时,引脚分配是非常重要的一个环节,特别是在硬件电路上需要与其他芯片通行的引脚。Xilinx FPGA从上电之后到正常工作整个过程中各个阶段...

    碎碎思

扫码关注云+社区

领取腾讯云代金券