引脚与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。这在数字引脚不够用的情况下非常有用。

使用如下宏函数将一个模拟引脚编号映射到数字引脚编号上去,以便数字函数能识别。这个函数是Arduino内置的,无需包含头文件。

#define analogInputToDigitalPin(p)  ((p < 6) ? (p) + 14 : -1)

下面是示例代码

//使用模拟引脚A0作为数字输出驱动LED小灯,Blink程序。
int LEDpin  = analogInputToDigitalPin(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:引脚编号。

Arduino数字引脚作为GPIO的使用相关推荐

  1. arduino数字时钟元件_数字元器件基础

    arduino数字时钟元件 In this tutorial we will learn about the basics of Digital computers. We will cover In ...

  2. arduino数字端口输出电压可驱动多大继电器呢_「白皮书」数字信号与脉冲序列调理...

    数字信号与脉冲序列调理 数字IO接口 数字信号 采用数字信号进行通信是计算机和外设.仪器以及其他电子设备之间最常见的通信方式,因为这是计算机工作的基本元素.任何信号,都必须转换为数字信号之后,才能输入 ...

  3. Arduino - 输出引脚扩流

    本文转自:http://www.geek-workshop.com/thread-196-1-1.html 原文作者:Ansifa 使用Arduino时候,经常需要控制大电流或者高压负载.但是Ardu ...

  4. 引脚、GPIO、串口、端口的区别

    只需要看下面的图就可以知道引脚和GPIO之间的关系(stm32) 总的来说就是引脚PIN包括电源.晶振IO.下载IO.BOOT IO.复位IO.GPIO 串口.端口.引脚的关系: 串口:串行通讯接口 ...

  5. arduino uno电压_arduino uno数字引脚输出电压多大

    2017-04-02 回答 arduino uno是arduino usb接口系列的最新版本,作为arduino平台的参考标准模板.uno的处理器核心是atmega328,同时具有14路数字输入/输出 ...

  6. 在arduino中ESP8266的GPIO引脚及控制序号

    在arduino中使用GPIO和单片机有所不同.使用ESP12F的时候,板载一颗板载蓝色LED灯, 可以通过 pinMode(2, OUTPUT); 来设置 也可以通过pinMode(D4, OUTP ...

  7. ESP8266 板子引脚与GPIO引脚对应关系-管脚定义

    Esp8266 开发板的管脚图与 GPIO 对应关系 date: 2020-06-15 lastmod: 2020-06-22 模拟引脚 : ~D1 ~D2 ~D3 ~D4 ~D5 ~D6 ~D7 模 ...

  8. arduino nano引脚号_ARDUINO 脚号的命名规则

    ARDUINO  脚号定义: Arduino 官方脚号采用数字序号 1,2,3--:但在大多数非官方arduino 移植版本中, 都增加了更容易记忆及具有具有含义的命名规则,让我们能知道对应的端口和位 ...

  9. arduino nano引脚号_初识Arduino Nano

    Arduino是一款便捷灵活.方便上手的开源电子原型平台.包含硬件(各种型号的Arduino板)和软件(Arduino IDE,集成开发环境).Arduino是目前世界上最为流行的开源硬件平台之一,越 ...

最新文章

  1. js--webSocket入门
  2. POJ 放苹果问题(递归)
  3. 正则实现二代身份证号码验证详解
  4. [css] 举例说明:not()的使用场景有哪些
  5. python避坑指南_Linux下Python3.6的安装及避坑指南
  6. rdlc 固定前两列每页都显示_现在的大学生,都不会论文排版了
  7. Android 系统(153)--- M上默认接入点apn显示
  8. maven编译报程序包不存在_宝马730i空调不制冷,报冷却剂压缩机当前存在故障
  9. matlab迭代算法实例_【优化求解】基于NSGA2的求解多目标柔性车间调度算法
  10. Mysql 设置问题,当使用一些开源的软件动态安装MYSQL数据库后,发现里面的中文全是乱码。...
  11. 耳挂式蓝牙耳机原理_专为运动而生的DOSS T63无线蓝牙耳挂式运动耳机
  12. ASP.NET 2.0加密Web.config 配置文件
  13. 网络工程师--网络规划和设计案例分析(4)
  14. 图像处理---LoMo
  15. Simulink 环境基础知识(五)--编程建模基础知识
  16. 计算机算法实际应用,数学方法在计算机算法中的应用分析
  17. 入门数据分析,需要会什么
  18. 收藏本站和设为主页代码(HTML)
  19. 码云(gitee)的使用
  20. BFF在SoundCloud中的实践(翻译)

热门文章

  1. Linux-iptables命令
  2. Linux启动多个Oracle实例
  3. RocketMQ:消息消费队列与索引文件的实时更新以及文件恢复源码解析
  4. 学习笔记(十二)——虚拟机安装和pycharm远程连接Ubuntu
  5. python调用接口上传文件_python上传文件接口
  6. TypeScript的安装步骤、运行问题及代码的简单运行
  7. python 列表 随机采样_Python 随机抽样
  8. 实用VUE 开发插件!!前端必备
  9. git maven 一键部署_Jenkins实现一键部署maven项目
  10. 实验七多线程编程_JAVA