Arduino的IO口分为数字IO和模拟IO口,这一节我们先看数字IO口~
在Arduino中上面这一排带数字的都是数字IO口,而下面以A+数字开头的都是模拟IO口啦,板子上也写明了DIGITAL和ANALOG IN ,用来区别,不过需要注意的是,模拟IO口也是可以当作数字IO口使用的哦,但是反过来就不行啦。
操作数字IO口的方法如下
pinMode(pin,MODE);
设置IO口为输出还是输入模式
pin代指引脚编号,MODE为模式,有以下三种可供选择:
OUTPUT输出模式
INPUT 输入模式
INPUT_PULLUP 输入模式内部拉高
什么叫拉高呢,因为给Arduino的引脚设定了模式之后,有时并未指定引脚的状态,引脚会悬空,状态忽高忽低,拉高就是说让引脚保持高电平的状态,那么既然有拉高肯定会有对应的拉低了,一般拉低就是给引脚接一个电阻到GND接地,这样可以让引脚保持在一个低电平的状态,下面的按键控制LED实验就会用到拉低。
digitalRead(pin);
读取指定引脚的电平状态
digitalWrite(pin,MODE);
让指定引脚输出高或者低电平
MODE有两种模式
HIGH和LOW,这个说了好几遍了。。。不用再说是啥意思了吧,我们还是用Blink来解读
void setup() { pinMode(13, OUTPUT); // 设置13号引脚为输出模式(设定模式一般只需要设置一遍 //所以放在setup中)
}
void loop() { digitalWrite(13, HIGH); // 让13号引脚输出高电平 delay(1000); // 延时一秒 digitalWrite(13, LOW); //让13号引脚输出低电平 delay(1000); // 延时一秒 }
|
这个没啥解释的了吧,注释已经说的很明白咯~不过有同学肯定接着问了,那这都是控制引脚输出的,我想知道引脚的状态(是高还是低电平),来控制怎么办呢?
接下来就是IO口状态读取的实验啦。我们用到的是哪个函数的? Bingo~当然是digitalRead();了
现在我们要用一个按键来控制led的亮和灭,准备两个1-10K的电阻,还有一个按键,若干导线就可以了,接线图如下:
这个电阻的作用就是刚才说过的IO口拉低啦,为的就是让2号IO口保持在一个低电平的状态。下面我们来修改修改Blink程序。
void setup() { pinMode(13, OUTPUT); // 设置13号引脚为输出模式 pinMode(2,INPUT);//按键连接在2号引脚上 }
void loop() { if(digitalRead(2) == HIGH) //如果2号引脚的状态为高电平 { digitalWrite(13, HIGH); // 让13号引脚输出高电平 } else //否则 { digitalWrite(13, LOW); //让13号引脚输出低电平
}
}
|
这时按下按键LED就会亮,松开手LED就灭了,至于里面的if()else()什么的先混个脸熟,后面会详细的讲。
那么操作IO口的电平有什么作用呢?其实模块的控制十分的简单,大多数都是用高低电平来控制它们,IO口就充当着一个开关的角色。一般来说控制模块先要看看介绍,看它可以接收和输出的是数字信号还是模拟信号,所谓数字信号就是说它只有两个量0和1,一般led模块、人体热电感应模块等都是采用的数字信号,而模拟信号它所输出的是一个电压值,通过板子的数模转换将它转化为可读的数值,然后使用公式换算成具体的量。常见的有温度传感模块、湿度传感模块、光敏电阻等等都是采用模拟量才体现具体的数值。除了这两种模块以外还有一种模块是采用总线控制的,比如串口、IIC、SPI,这种模块一般具备独立运算的功能,它们输入和输出的都是数据,采用指令等方式来控制,比如1602LCD,12864LCD,GSM模块、各类串口控制模块都是采用总线控制的方式,所谓总线大家也不要觉得很难理解,其实就是一种数据传输方式的总称,很容易理解的。