Arduino板上的引脚可以配置为输入或输出,我们将解释这些模式下引脚的函数。
默认情况下,Arduino引脚被配置为输入,因此当您将它们用作输入时,不需要使用 pinMode()将它们明确声明为输入,以此方式配置的引脚被称为处于高阻抗状态,输入引脚对要采样的电路的要求极小,相当于该引脚前面有一个100兆欧的串联电阻。
引脚配置为pinMode(pin,INPUT),未连接任何引脚,或未连接到其他电路的导线连接,报告引脚状态看似随机变化。
Atmega芯片内置了20,000个上拉电阻,可通过软件进行访问,通过将 pinMode()设置为INPUT_PULLUP,可以访问这些内置的上拉电阻,这有效地反转了INPUT模式的行为,其中HIGH表示传感器关闭,而LOW表示传感器打开。
该上拉的值取决于所使用的微控制器,在大多数基于AVR的板上,该值保证在20kΩ至50kΩ之间,在Arduino Due上,它介于50kΩ和150kΩ之间。
pinMode(3,INPUT) ; //在不使用内置上拉电阻的情况下将引脚设置为输入 pinMode(5,INPUT_PULLUP) ; //使用内置上拉电阻将引脚设置为输入
通过pinMode()配置为OUTPUT的引脚被称为处于低阻抗状态,这意味着它们可以为其他电路提供大量电流, Atmega引脚可以向其他设备/电路提供或吸收高达40 mA(毫安)的电流。
pinMode()函数用于将特定的引脚配置为充当输入或输出。
Void setup () { pinMode (pin , mode); }
pin - 您要设置其模式的引脚号
mode - INPUT,OUTPUT或INPUT_PULLUP。
int button=5 ; //按钮连接到引脚 5 int LED=6; //LED 连接到引脚 6 void setup () { pinMode(button , INPUT_PULLUP); //使用上拉电阻将数字引脚设置为输入 pinMode(button , OUTPUT); //将数字引脚设置为输出 } void setup () { If (digitalRead(button ) == LOW) //如果按下按钮 digitalWrite(LED,HIGH); //打开led delay(500); //延迟 500 毫秒 digitalWrite(LED,LOW); //关闭 LED delay(500); //延迟 500 毫秒 } }
digitalWrite()函数用于将HIGH或LOW值写入数字引脚,如果使用 pinMode()将引脚配置为OUTPUT,其电压将设置为相应的值:HIGH为5V(在3.3V板上为3.3V),LOW为0V(接地)。如果该引脚配置为INPUT,则digitalWrite()将启用(HIGH)或禁用(LOW)输入引脚上的内部上拉。建议将 pinMode()设置为INPUT_PULLUP以启用内部上拉电阻。
Void loop() { digitalWrite (pin ,value); }
pin - 您要设置其模式的引脚号
value - HIGH或LOW。
int LED=6; //LED 连接到引脚 6 void setup () { pinMode(LED, OUTPUT); //将数字引脚设置为输出 } void setup () { digitalWrite(LED,HIGH); //打开led delay(500); //延迟 500 毫秒 digitalWrite(LED,LOW); //关闭 LED delay(500); //延迟 500 毫秒 }
Arduino能够检测其引脚之一上是否施加了电压,并通过digitalRead()函数进行报告,on/off传感器与模拟传感器之间存在差异,其值会不断变化。
此函数返回0到1023之间的数字,代表0到5伏之间的电压。如果向引脚号0施加了2.5 V的电压,则AnalogRead(0)返回512。
analogRead(pin);
pin - 要读取的模拟输入引脚的编号(在大多数板上为0到5,在Mini和Nano上为0到7,在Mega上为0到15)
int analogPin=3;//电位器雨刷 (middle terminal) //连接到模拟引脚 3 int val=0; //存储读取值的变量 void setup() { Serial.begin(9600); //设置串行 } void loop() { val=analogRead(analogPin); //读取输入引脚 Serial.println(val); //调试值 }
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)