在这个Arduino平台的下一个教程中,我们将学习如何使用一个按钮来切换LED开关与瞬间按钮。这与开关不同,它是由Arduino微控制器的逻辑控制的。Arduino读取按钮的状态,按下按钮就会做出一个逻辑决定,下一步该做什么。

如果你没有做过我们之前的Arduino领导教程,或者我们Arduino按钮教程,你应该考虑先做这些,因为它们被认为是本教程的基本技能!

观看教程视频

使用按钮切换LED

使用一个按钮来切换Arduino上的LED是一个逻辑游戏。我们的草图将监测按钮,看看它是否被按下。按下“On”键,LED将切换“On”或“Off”,这取决于它当前处于什么状态。如果LED是亮的,它将关闭。如果为“关闭”,则为“打开”。

尽管这个简单的逻辑似乎有点过头了(确实如此),但这是一种基本的学习技能,旨在教授一种可用于更大、更复杂项目的理解。例如,在按下按钮后,你可能需要Arduino完成一大堆事情。它也可能需要检查传感器和适当的行动!

想象一下车库开门器。如果你按下按钮,它不仅仅是开门或关门。而是通过一系列的逻辑。门开着吗?如果车库门是开着的,车库门的传感器是否没有人或宠物?打开车库门开启器内部的灯。开始关门吧。等。

在你可以做所有这些事情之前,你需要学习基础!让我们从简单的开始:使用一个按钮来切换LED!

按钮和LED接线图

让我们从这个项目的接线图开始。

需要注意的一件事是,许多Arduino按钮教程都没有将下拉电阻连接到按钮上。他们这样做是为了简单起见。然而,这种不可避免性会导致项目不能正常工作,并给制作教程的人带来更多的痛苦和挫折,而不是需要额外的两条线来添加一个下拉电阻。缺少下拉电阻导致你的按钮按压不稳定和不一致。有时候,如果没有下拉电阻,仅仅触摸Arduino就会让它认为按钮被按下了,

本项目零件清单

如果你想从一个简单的地方开始使用Arduino,这里有一个方便的部件清单,让你开始。其中一些链接可能是附属链接。这些成本你什么都没有,但如果你使用他们,我们得到一小笔佣金,帮助我们继续制作这些教程!

数量 部分/链接
1 x Arduino Uno
1 x USB B型线
1 x 无焊料的电路试验板
1 x 跳线设备
1 x 领导的工具包
1 x 按钮组件
1 x 电阻套件(220欧姆)
买一个极客酒吧!

按钮和LED的代码

现在你的LED和按钮都连接好了,让我们把代码放在Arduino上!将下面的代码粘贴到Arduino IDE中,并上传到您的Arduino中。

您应该注意的一件事是,这段代码并没有解决debounce的问题。如果你对开关有问题,认为它被按了多次,你应该阅读我们的消除抖动教程.有些开关比其他开关更容易弹跳。

这个代码跟踪LED的状态(是开还是关),然后跟踪按钮,看看它是否被按下。按下按钮,LED状态改变。

/* ARDUINO BUTTON TOGGLES By: TheGeekPub.com更多ARDUINO教程://www.ergcommercial.com/arduino-tutorials/ */ //常量不会改变const int BUTTON_PIN = 7;//将Button连接到引脚7或更改这里const int LED_PIN = 3;//将LED连接到引脚3或改变这里//变量将改变:int ledState = LOW;//跟踪LED的当前状态int lastButtonState;//按钮的前一个状态int currentButtonState;//按钮的当前状态void setup() {Serial.begin(9600);//初始化串行pinMode(BUTTON_PIN, INPUT);//将arduino引脚设置为输入模式pinMode(LED_PIN, OUTPUT);//将arduino引脚设置为输出模式currentButtonState = digitalRead(BUTTON_PIN);} void loop() {lastButtonState = currentButtonState; // save the last state currentButtonState = digitalRead(BUTTON_PIN); // read new state if(lastButtonState == HIGH && currentButtonState == LOW) { Serial.print("The button is pressed: "); // toggle state of LED if(ledState == LOW) { ledState = HIGH; Serial.println("Turning LED on"); } else { ledState = LOW; Serial.println("Turning LED off"); } // control LED arccoding to the toggled state digitalWrite(LED_PIN, ledState); //turns the LED on or off based on the variable } }

下一个步骤

现在您可以继续阅读下一个教程,或者回到索引!