0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Arduino I/O函数详解

我快闭嘴 来源:创客少年 作者:创客少年 2022-09-13 11:03 次阅读

Arduino I/O函数

Arduino 板上的引脚可以配置为输入或输出。我们将在这些模式下解释引脚的功能。重要的是要注意,大多数 Arduino 模拟引脚可以按照与数字引脚完全相同的方式进行配置和使用。

引脚配置为INPUT

Arduino 引脚默认配置为输入,因此在使用它们作为输入时,不需要使用pinMode()显式声明为输入。以这种方式配置的引脚被称为处于高阻抗状态。输入引脚对采样电路的要求非常小,相当于引脚前面的100兆欧的串联电阻

这意味着将输入引脚从一个状态切换到另一个状态所需的电流非常小。这使得引脚可用于诸如实现电容式触摸传感器或读取LED作为光电二极管的任务。

被配置为 pinMode(pin,INPUT)的引脚(没有任何东西连接到它们,或者有连接到它们而未连接到其他电路的导线),报告引脚状态看似随机的变化,从环境中拾取电子噪音或电容耦合附近引脚的状态。

上拉电阻

如果没有输入,上拉电阻通常用于将输入引脚引导到已知状态。这可以通过在输入端添加上拉电阻(到5V)或下拉电阻(接地电阻)来实现。10K电阻对于上拉或下拉电阻来说是一个很好的值。

使用内置上拉电阻,引脚配置为输入

Atmega 芯片内置了2万个上拉电阻,可通过软件访问。通过将pinMode()设置为INPUT_PULLUP 可访问这些内置上拉电阻。这有效地反转了INPUT模式的行为,其中HIGH表示传感器关闭,LOW表示传感器开启。此上拉的值取决于所使用的微控制器。在大多数基于AVR的板上,该值保证在20kΩ和50kΩ之间。在 Arduino Due 上,它介于50kΩ和150kΩ之间。有关确切的值,请参考板上微控制器的数据表。

当将传感器连接到配置为 INPUT_PULLUP 的引脚时,另一端应接地。在简单开关的情况下,这会导致当开关打开时引脚变为高电平,当按下开关时引脚为低电平。上拉电阻提供足够的电流来点亮连接到被配置为输入的引脚的LED。如果项目中的LED似乎在工作,但很昏暗,这可能是发生了什么。

控制引脚是高电平还是低电平的相同寄存器(内部芯片存储器单元)控制上拉电阻。因此,当引脚处于INPUT模式时,配置为有上拉电阻导通的引脚将被开启;如果引脚通过pinMode()切换到OUTPUT模式,引脚将配置为高电平。这也适用于另一个方向,如果通过pinMode()切换到输入,则处于高电平状态的输出引脚将设置上拉电阻。

示例

pinMode(3 , INPUT) ; // set pin to input without using built in pull up resistor
pinMode(5 , INPUT_PULLUP) ; // set pin to input using built in pull up resistor

引脚配置为OUTPUT

通过pinMode()配置为OUTPUT的引脚被认为处于低阻抗状态。这意味着它们可以向其他电路提供大量的电流。Atmega引脚可以向其他器件/电路提供(提供正电流)或吸收(提供负电流)高达40mA(毫安)的电流。这是足以点亮LED或者运行许多传感器的电流(不要忘记串联电阻),但不足以运行继电器,螺线管或电机

试图从输出引脚运行高电流器件,可能损坏或破坏引脚中的输出晶体管,或损坏整个Atmega芯片。通常,这会导致微控制器中出现“死”引脚,但是剩余的芯片仍然可以正常工作。因此,最好通过470Ω或1k电阻将OUTPUT引脚连接到其他器件,除非特定应用需要从引脚吸取最大电流。

pinMode()函数

pinMode()函数用于将特定引脚配置为输入或输出。可以使用INPUT_PULLUP模式启用内部上拉电阻。此外,INPUT模式显式禁止内部上拉。

pinMode()函数语法

void setup () {
 pinMode (pin , mode);
}
  • pin- 你希望设置模式的引脚的编号

  • mode- INPUT,OUTPUT或INPUT_PULLUP。

示例

int button = 5 ; // button connected to pin 5
int LED = 6; // LED connected to pin 6

void setup () {
 pinMode(button , INPUT_PULLUP); 
// set the digital pin as input with pull-up resistor
 pinMode(button , OUTPUT); // set the digital pin as output
}

void setup () {
 If (digitalRead(button ) == LOW) { // if button pressed
 digitalWrite(LED,HIGH); // turn on led
 delay(500); // delay for 500 ms
 digitalWrite(LED,LOW); // turn off led
 delay(500); // delay for 500 ms
 }
}

digitalWrite()函数

digitalWrite()函数用于向数字引脚写入HIGH或LOW值。如果该引脚已通过pinMode()配置为OUTPUT,则其电压将被设置为相应的值:HIGH为5V(或3.3V在3.3V板上),LOW为0V(接地)。如果引脚配置为INPUT,则digitalWrite()将启用(HIGH)或禁止(LOW)输入引脚的内部上拉。建议将pinMode()设置为INPUT_PULLUP,以启用内部上拉电阻。

如果不将pinMode()设置为OUTPUT,而将LED连接到引脚,则在调用digitalWrite(HIGH)时,LED可能会变暗。在没有明确设置pinMode()时,digitalWrite()将启用内部上拉电阻,这就像一个大的限流电阻。

digitalWrite()函数语法

void loop() {
 digitalWrite (pin , value);
}
  • pin-你希望设置模式的引脚的编号

  • value- HIGH或LOW。

示例

int LED = 6; // LED connected to pin 6

void setup () {
 pinMode(LED, OUTPUT); // set the digital pin as output
}

void setup() { 
 digitalWrite(LED, HIGH); // turn on led
 delay(500); // delay for 500 ms
 digitalWrite(LED, LOW); // turn off led
 delay(500); // delay for 500 ms
}

analogRead()函数

Arduino能够检测是否有一个电压施加到其引脚,并通过 digitalRead() 函数报告。开/关传感器(检测物体的存在)和模拟传感器之间存在一个差异,模拟传感器的值连续变化。为了读取这种类型的传感器,我们需要一个不同类型的引脚。

在Arduino板的右下角,你会看到6个标记为“Analog In”的引脚。这些特殊引脚不仅可以告知是否有电压施加给它们,还可以告知它们的值。通过使用analogRead()函数,我们可以读取施加到其中一个引脚的电压。

此函数返回0到1023之间的数字,表示0到5伏特之间的电压。例如,如果施加到编号0的引脚的电压为2.5V,则 analogRead(0) 返回 512。

analogRead()函数语法

analogRead(pin);
  • pin- 要读取的模拟输入引脚的编号(大多数电路板上为0至5,Mini和Nano上为0至7,Mega上为0至15)

示例

int analogPin = 3;//potentiometer wiper (middle terminal) 
// connected to analog pin 3 
int val = 0; // variable to store the value read

void setup() {
 Serial.begin(9600); // setup serial
} 

void loop() {
 val = analogRead(analogPin); // read the input pin
 Serial.println(val); // debug value
}

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    3882

    浏览量

    61310
  • Arduino
    +关注

    关注

    184

    文章

    6428

    浏览量

    184846

原文标题:Arduino I/O函数

文章出处:【微信号:创客少年,微信公众号:创客少年】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    标准I/O操作函数详解

    1、基本操作 1)打开文件 打开文件有3个标准函数,分别为fopen()、fdopen()和freopen()。它们可以不同的模式打开,但都返回一个指向FILE的指针,该指针指向对应的I/O流。此后
    发表于 08-12 13:48

    标准I/O操作函数详解

    1、基本操作 1)打开文件 打开文件有3个标准函数,分别为fopen()、fdopen()和freopen()。它们可以不同的模式打开,但都返回一个指向FILE的指针,该指针指向对应的I/O流。此后
    发表于 08-20 16:43

    【mBot试用体验】mBot编程语言之Arduino C详解及教程

    的:引脚电压常量、数字引脚常量、函数结构、管脚I/O功能、数学相关函数等。引脚电压常量:HIGH | LOW:表示数字IO口的电平,HIGH 表示高电平1,LOW表示低电平0。数字引脚
    发表于 01-01 01:46

    请问o'sstarthighrdy汇编函数是啥原理?

    o'sstarthighrdy汇编函数详解吗 是啥原理啊 每次都运行到最后死循环osstartbang处
    发表于 08-14 03:41

    i/o本质与库函数的本质分别是什么

    【1】i/o本质就是输入输出函数,也是读写函数【2】系统调用和库函数系统调用:使用函数控制lin
    发表于 12-15 09:11

    I/O端口的原理是什么

    这里写目录标题I/O端口原理单片机知识点补充实战1——闪烁LED指示灯I/O端口原理I/O英文全
    发表于 01-20 07:55

    Arduino I/O函数在模式下引脚分别有哪些功能呢

    Arduino I/O函数在模式下引脚分别有哪些功能呢?
    发表于 01-24 06:11

    带有4个光耦合器和4个继电的Arduino Nano数字I/O

    描述Arduino Nano 数字 I/O 板带有 4 个光耦合器 DI 和 4 个继电器 DO 的 Arduino Nano 数字 I/
    发表于 07-15 06:58

    PICC库函数详解

    PICC库函数详解
    发表于 04-18 20:13 132次下载

    基于Android开发手册—API函数详解

    基于Android开发手册—API函数详解
    发表于 10-24 09:06 18次下载
    基于Android开发手册—API<b class='flag-5'>函数</b><b class='flag-5'>详解</b>

    arduino学习必须掌握的函数资料下载

    arduino学习必须掌握的函数
    发表于 04-26 10:58 35次下载
    <b class='flag-5'>arduino</b>学习必须掌握的<b class='flag-5'>函数</b>资料下载

    Arduino 常用函数参考文档

    Arduino 常用函数参考文档一、程序结构二、数字输入输出三、模拟输入输出四、模拟输入输出一、程序结构1.setup():Arduino控制器通电或复位后,即会开始执行setup() 函数
    发表于 11-30 12:06 10次下载
    <b class='flag-5'>Arduino</b> 常用<b class='flag-5'>函数</b>参考文档

    Arduino语法详解含示例详解

    Arduino语法详解_含示例详解
    发表于 07-19 14:09 6次下载

    如何使用Arduino millis函数执行多任务处理

    在本教程中,我们将学习Arduino 如何使用 Arduino millis 函数执行多任务处理。通常在 Arduino 中使用delay()函数
    的头像 发表于 09-06 14:41 1.1w次阅读
    如何使用<b class='flag-5'>Arduino</b> millis<b class='flag-5'>函数</b>执行多任务处理

    STM32库函数SystemInit()详解

    STM32库函数SystemInit()详解
    的头像 发表于 09-18 15:45 1993次阅读
    STM32库<b class='flag-5'>函数</b>SystemInit()<b class='flag-5'>详解</b>