资讯详情

初步认知Arduino-3,按钮控制LED灯以及扩展模块

初步认知Arduino-3,按钮控制LED灯和扩展模块

bf3f94f541b4f0042085d41e00214a33.png

准备器材:

·开发板(Arduino UNO)

·面包板1块

·面包板跳线

·LED灯:1个

·220Ω电阻:1个

·10KΩ电阻:1个

·四脚开关:一个

////插播:今年年初录制了一套比较系统的入门单片机教程,想让同学免费找我拿,私信我就可以了~点击我的头像黑色字体加上我也可以得到哦。最近比较闲,带做毕设////

正文开始:

色环电阻

同时在这里使用10K对于220的电阻,我们应该学会区分色环电阻的电阻值,以免在实验或清洗过程中混淆它们。这里主要讨论四环电阻和五环电阻

色环电阻表面有不同颜色的环。电阻的电阻值可以通过这些环的颜色和位置(序列)来计算,方便不同的开发人员和维护人员读取电阻值,便于检测和更换。

色环颜色

色环有不同的颜色,色环代表不同的含义,可以代表值、倍数和误差。以下是四环和五环电阻色环的位置

四环电阻和五环电阻色环的位置代表意义

假设现在有10KΩ让我们看看其色环的电阻

我们可以看到棕色-黑色-黑色-红色-棕色的序列,然后根据五环电阻色环的位置意义图计算:

棕色在第一百位是1,黑色在第二和第三位是10位和0位,所以值部分是100,然后第四位红色代表倍数是100,所以最终阻值是100×100=10000=10K,第五位棕色代表10K该值的精度误差上下浮动1%,即最终电阻值为10KΩ±1%

色环阻值读取有方向性,即从左到右计算的阻值与从右到左计算的阻值不同。让我们看看200Ω的电阻

电阻值分别从两侧计算,结果是不同的计算200Ω±一个计算1000%Ω±因此,在色环电阻中,判断序列方向更为重要(因为色环电阻没有正反标记),这里有一些判断技巧:

·如果有无色,那一端就是末端,因为无色只表示误差

·如果有金银,那么金银的末端就是末端,因为金银只能表示倍数和精度

·如果橙色、黄色、白色和黑色出现在最边缘,这一端就是开始,因为这些颜色不能表示精度

·如果白色和灰色出现在中间两个位置之一,偏向的一端是开始,因为它们不能表示乘倍数

·头尾经常出现棕色环,很难区分。这个时候其实可以看间隔。第四环和第五环的间隔比第一环和第二环的间隔要大

·如果不能判断,可以用最后计算的电阻来判断,如果计算的电阻是140Ω这种奇怪的电阻基本上是错误的

间隔大小不同

四脚按钮开关

四脚按钮开关是四个针脚按钮开关,其中两两一组是交换的,但两组之间没有交换。只有当按钮被按下(按下)时,信号才会变成交换

如下图所示,四个针脚,两个交换,但两组不连接,按钮将连接,如果只连接一组交换电路,按钮实际上相当于电线,不能发挥任何作用,所以最好确保正负极连接到不同组的接口

四脚按钮开关实物图

拉电阻

拉电阻分为上拉电阻和下拉电阻,通过下图能简单了解拉电阻:

拉电阻

为什么要拉电阻而不是直接连接电线?因为直接连接电线会短路,使用电阻可以避免元件直接连接GND。

Arduino UNO内部只有上拉电阻,没有下拉电阻

接线

看接线图,分两部分,一部分是LED是的,有些是四脚按钮开关。前者以前做过,主要取决于后者

这里的2号引脚接收到四脚按钮开关,但在按下开关之前,四脚按钮开关的引脚悬挂状态将得到不稳定值(可能是高或低电平,可能是由电磁感应等原因引起的),这将导致程序认为我们一直在随机按下按钮,因此需要添加下拉电阻(连接一个电阻(通常是10KΩ)然后接入GND),这样,当没有电源时,它总是低电平(接地)。一旦按下按钮通电,就可以立即判断高电平

实际接线图-返回第一张图

这里注意四脚按钮开关,用一点力轻轻按针脚,不能轻轻放在表面

代码 &效果

接线检查,然后打开Arduino IDE敲代码

//定义常量constintbuttonPin=2;constintledPin=13;

intbuttonState=0;

voidsetup(){

pinMode(buttonPin,INPUT);

pinMode(ledPin,OUTPUT);}

voidloop(){

//按住才会亮buttonState=digitalRead(buttonPin);

if(buttonState==HIGH){

digitalWrite(ledPin,HIGH);

}else{

digitalWrite(ledPin,LOW);

}}

这里定义了两个常量buttonPin和ledPin,这样,如果针脚只需要改变常量中的数字,就不需要在整个文件中找到替换,这是一个好习惯(就像HIGH和LOW其实也是定义的常量)。一旦读取并按下,它就会亮起LED效果如下:

扩展

这里使用的是下拉电阻,但也可以使用上拉电阻Arduino UNO在这里,我们有内置的上拉电阻(没有内置的下拉电阻)改造成内置的上拉电阻来实现按一次亮,再按一次灭的效果,接线图如下:

代码如下:

//定义常量constintbuttonPin=2;constintledPin=13;

//按键前一个状态intoldButtonState=HIGH;//按键状态intbuttonState=HIGH;// led灯状态,false->没亮,true->亮booleanledState=false;

voidsetup(){

//使用内置上拉电阻pinMode(buttonPin,INPUT_PULLUP);

pinMode(ledPin,OUTPUT);

Serial.begin(9600);}

voidloop(){

//单次按动开关LED灯oldButtonState=buttonState;

buttonState=digitalRead(buttonPin);

if(buttonState==LOW&&oldButtonState==HIGH){

Serial.print("oldButtonState: ");

Serial.println(oldButtonState);

Serial.print("buttonState: ");

Serial.println(buttonState);

Serial.print("ledState: ");

Serial.println(ledState);

if(ledState==true){

digitalWrite(ledPin,LOW);

}else{

digitalWrite(ledPin,HIGH);

}

ledState=!ledState;

}}

这边`Serial.begin(9600)`初始化串行连接传输9600b/s(每秒传输9600比特),因为如果开发板和PC用了不同的速率,那么接收和发送数据就会出现问题,而9600只是Arduino的默认值,还可以设置19200、57600等等,在Arduino IDE的串口监视器里也可以看到。`Serial.print`输出的信息可以在串口监视器里查看,可以用于简单调试

这边通过`pinMode(buttonPin, INPUT_PULLUP)`打开内置的上拉电阻,使得2号数字口一直收到高电平,直到按下按键才会收到低电平。这边记录旧的按键状态的原因在于,一次按动根据按住时间不同出现n次触发,那么如果长按则会出现LED闪烁(一直切换LED开关),或者连续快速按动按键,也会出现LED灯开关不及时问题,因此需要记录旧的按键状态,来判断是否是第一次按动按键

标签: arduino单片机电阻正负极

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台