푸시 버튼 : Arduino에서이 간단한 요소를 사용하는 방법

단추

Un 푸시 버튼은 전자 신호를 중단하거나 전송할 수있는 버튼입니다.. 이 간단한 요소를 다른 요소와 결합하면 다양한 응용 프로그램을위한 프로젝트를 만들 수 있습니다. 이러한 유형의 푸시 버튼은 Arduino 프로젝트에서 매우 일반적입니다. 그리고이 버튼들 중 몇 개를 결합하여 좀 더 복잡한 키보드를 만들 수 있지만, 이미 이러한 용도로 프로그래밍 가능한 키보드가 있습니다.

그런데, 누름 버튼을 스위치와 혼동해서는 안됩니다.. 그들은 완전히 다른 것입니다. 차이점은 스위치 또는 스위치를 누를 때마다 활성화 또는 비활성화된다는 것입니다. 누름 버튼은 압력이 가해지는 동안에 만 한 상태로 유지됩니다. 두 가지 기본 유형의 버튼이 있기 때문에 전송 또는 인터럽트가 가능하다고 언급했습니다.

푸시 버튼 기호

거기에 NO 또는 평상시 열림 푸시 버튼 및 NC 또는 평상시 닫힘. 이것은 릴레이에서도 들릴 것입니다. 그리고 네, 정확히 같은 작업입니다. NC가 있으면 전류가 터미널을 통과하게되며 누르는 동안에 만 중단됩니다. 반면에 NA는 압력이 가해지지 않을 때 전류가 흐르지 않고 누를 때만 통과합니다.

그것을 아는 것은, 누름 버튼에 대해 알아야 할 거의 모든 것입니다. Arduino를 사용하여 연결 및 프로그래밍을 시작합니다. 진실은 이러한 유형의 푸시 버튼에 대해 더 이상 말할 것이 없을 정도로 단순한 요소라는 것입니다.

Arduino와 푸시 버튼 통합

Arduino 회로

La 푸시 버튼 연결 Arduino와 상호 작용하는 것이 더 간단 할 수 없습니다. 예를 들어 이러한 선에서 볼 수있는 다이어그램입니다. 실험을 시작하는 데 필요한 전부입니다. 그러나 물론 그 계획으로는 거의 할 수 없습니다. 버튼이 무엇을 제어할지 결정하려면 약간의 상상력이 필요합니다. 사실, hwlibre.es를 자주 읽으 셨다면 이미 누름 버튼을 사용한 기사를 보셨을 것입니다.

연결하는 방법

풀업 및 풀다운

당신이 알아야 할 한 가지는 바운스 방지 문제와 이 푸시 버튼을 연결하는 방법. 먼저 풀업 및 풀다운 저항을 사용할 수 있다는 것을 이미 알고있는 연결 방법으로 이동합니다.

  • 풀업-이 저항 구성에서 푸시 버튼을 누르면 마이크로 컨트롤러 또는 Arduino가 해당 핀에서 XNUMX을 보거나 읽을 수 있습니다. 즉, LOW 신호로 해석합니다.
  • 풀다운:이 경우 반대의 경우 연결된 핀을 통해 1 또는 HIGH 신호를 읽거나받을 수 있습니다.

NC 또는 NA와 혼동하지 마십시오. 이전에 본 것과는 다른 것입니다. 이것은 다른 것과 독립적입니다 ...

바운스 방지

누름 버튼에는 바운스 효과 눌렀을 때. 즉, 눌 리거나 놓을 때 접점을 통과하는 신호에 변동이 있으며 실제로 발생하지 않고 HIGT 상태에서 LOW로 또는 그 반대로 전환 될 수 있습니다. 그것은 Arduino에 원치 않는 효과를 생성하고 푸시 버튼으로 실제로 끄고 싶을 때 요소를 활성화하는 것과 같은 이상한 일을 할 수 있습니다. Arduino가 바운스를 두 번 이상 누른 것처럼 해석하기 때문입니다.

그 부정적인 영향 해결책이 있습니다. 이를 위해 풀업 또는 풀다운 구성이 사용되었는지 또는 NC 또는 NO인지 여부에 관계없이 바운스 방지 회로 (하드웨어 방법) 또는 소프트웨어 (소스 코드 수정)에서 소형 커패시터를 구현해야합니다. 이러한 모든 경우에 이러한 리바운드를 방지하기 위해 솔루션을 구현해야합니다.

예를 들어, 풀업 및 풀다운 회로 바운스 방지 커패시터 그들은 다음과 같이 보일 것입니다 :

리바 운더

동안 소프트웨어 방법 이 코드 조각에서 볼 수 있습니다.

if (digitalRead (button) == LOW) // 버튼이 눌 렸는지 확인
{
눌림 = 1; // 변수는 값을 변경합니다.
}
if (digitalRead (버튼) == HIGH && 눌림 == 1)
{
// 원하는 작업 수행
눌림 = 0; // 변수가 원래 값으로 돌아갑니다.
}

간단한 프로젝트 예

푸시 버튼 및 Arduino로 안티 바운스

푸시 버튼과 반발 방지 회로를 연결하는 방법에 대한 주제를 배웠 으면 실제 예를 살펴 보겠습니다. 푸시 버튼으로 LED 제어. 이 계획은 보시다시피 똑같이 간단합니다.

올바르게 연결되면 다음은 작성하는 것입니다. Arduino IDE의 코드 패널을 프로그래밍하고 버튼으로 실험을 시작합니다. 회로를 제어하는 ​​간단한 코드 예제는 다음과 같습니다.

// 버튼을 제어하기위한 스케치의 예
int 핀 = 2;
int 상태;
맥동 int = 0;
무효 설정 ()

{
pinMode (2, INPUT); // 해당 핀을 입력하여 펄스를 읽으려면

pinMode (13, OUTPUT); // LED 용

Serial.begin (9600);
}
무효 루프 ()

{
if (digitalRead (2) == HIGH)

{

핀 = 2;

antiBounce (); // 바운스 방지 기능 호출

}
}
// 소프트웨어 안티 바운스 기능
무효 방지 바운스 ()

{
while (digitalRead (핀) == LOW);
상태 = digitalRead (13);
digitalWrite (13 ,! 상태);
while (digitalRead (핀) == HIGH);

}


5 코멘트, 당신의 것을 남겨주세요

코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   Marcelo Castillo 자리 표시 자 이미지

    멋있는!!! 대단히 감사합니다. 저는 CNC를 제작 해 왔으며 역설적이게도 버튼을 튜닝하기 가장 어려웠습니다.

  2.   Liliana

    안녕하세요! GND와 연결하여 초보자로 상담합니다. .. 검은 색 선이 그림 2에 표시된 선 위에있는 음극선에서 나오지 않아야합니까?

  3.   요한 복음

    훌륭한 설명 .. 몇 년 전에 나는 자동차 점화 프로젝트를했는데 진실은 절대로 정확한 키 입력을 할 수 없다는 것입니다.

  4.   오마르 로메로 린콘

    안녕하세요, 저는 다음과 같은 순서로 5개의 버튼과 XNUMX개의 LED로 프로젝트를 하고 있습니다.
    1개의 푸시 버튼은 2개의 LED에 신호를 보냅니다. 저는 1과 2라고 부릅니다.
    두 번째 푸시버튼은 3라고 하는 2,3개의 LED에 신호를 보냅니다.
    내 세 번째 푸시 버튼은 3, 3,4 및 5라는 다른 XNUMX개의 LED에 신호를 보냅니다.

    나는 그 순서를 할 수 있었지만 한 가지 문제가 있습니다. 2 개의 버튼을 누르면 LED에 잘못된 신호를 보내어 간헐적으로 깜박입니다. 지연 (2 초, 이것이 내가 필요로하는 것이므로 LED가 켜진 상태를 유지하고 꺼지는 것입니다.그런 다음 내 질문은 어떻게 millis 기능을 내 프로그램에 넣을 수 있는지입니다. 나는 millis가 어떻게 작동하는지 이해하지 못합니다. 각각에 millis를 사용하는 3개의 버튼에 대한 예를 만들면 arduino를 지연시키지 않고 언제든지 버튼을 누를 수 있도록 millis가 필요합니다.

    1.    이삭

      홀라 오마르,
      Arduino 자습서를 참조하는 것이 좋습니다.
      https://www.hwlibre.com/programacion-en-arduino/
      또한 millis()에 대한 기사도 볼 수 있습니다.
      https://www.hwlibre.com/millis-arduino/
      인사말.