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 resistorpinmode(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 5int led = 6; // led connected to pin 6void 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 6void 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 readvoid setup() { serial.begin(9600); // setup serial} void loop() { val = analogread(analogpin); // read the input pin serial.println(val); // debug value}
应用于食堂食品消毒柜中的紫外线传感器
医疗废物管理系统让医废溯源有据可查
激光设备加工技术在5G网络设备生产中的应用
万业企业收购凯世通后,宣布将强啃“最硬的骨头”
一种超材料吸收体,能够显著增强对有害物质或生物分子的检测
Arduino I/O函数详解
超声波清洗机可用于的行业有哪些?
努比亚X海光蓝版本正式开售双屏设计视觉效果极为出色
2022年全球3D打印支出将接近227亿美元年复合增长率达19.1%
光通信技术的发展
无人驾驶汽车对比评测:日产Leaf对抗特斯拉
南京秦淮区好消息 部分物联网总部项目签约落户
西安交通大学微电子校友论坛在苏州高新区成功举办
如何正确操作电子万能试验机进行手机外屏玻璃四点弯曲测试?步骤讲解
基本放大电路的讲解-1
中科融合国产自主芯片解决“卡脖子”难题
车和家收购力帆汽车 未来规划早已明确
移动数据的LED显示屏构成原理与仿真技术
未来我国的机动车保有量将持续增加,新能源车辆的占比也将进一步提高
机器视觉究竟给工业机器人一双怎么样的“慧眼”