스위치 상태 모니터링 (디지털 읽기 직렬) – Arduino 기본 사항

문제를 제거하기 위해 도구를 사용해보십시오





이 Arduino 기본 사항은 Arduino 내에서 외부 푸시 버튼의 ON 또는 OFF 상태를 읽거나 모니터링 할 수있는 코드를 구현하는 방법에 대해 설명합니다.

디지털 읽기 직렬

여기에서는 USB를 통해 Arduino와 PC에서 직렬 통신을 수행하여 스위치 상태를 모니터링하는 방법을 예제를 통해 배웁니다.



Arduino 보드를 초과하여 다음과 같은 기본 항목이 필요합니다.

하드웨어

순간 스위치, 버튼 또는 푸시-온 스위치



10k, 1/4 와트 옴 저항

브레드 보드
연결 또는 점퍼 와이어 링크.

회로 작동

작업은 다음 단계로 수행 할 수 있습니다.

점퍼 와이어 3 개를 아두 이노 보드에 연결합니다. 빨간색과 검은 색 두 개의 와이어는 브레드 보드 측면에있는 두 개의 긴 세로줄로 이동하여 보드의 전원 코드가됩니다. 보드에 5V DC가 필요합니다.

세 번째 와이어는 디지털 핀 2를 푸시-온 스위치의 리드 중 하나에 연결하는 데 사용됩니다.

이 버튼의 특정 리드는 또한 풀다운 10k 저항과 함께 음극 공급 레일 또는 접지에 연결됩니다. 스위치의 다른 자유 리드는 5V 공급의 양극과 연결됩니다.

위의 연결이 이루어지면 스위치는 누를 때 회로에서 전환되거나 이중 동작을 수행합니다.

일반적으로 스위치가 분리 된 위치에있을 때 두 개의 리드는 절연 상태를 유지하므로 풀다운 저항을 통해 접지에 연결된 핀이 LOW 또는 로직 0 레벨을 렌더링합니다.

눌려진 상황에서 스위치는 두 리드의 일시적인 브리징을 실행하여 리드가 + 5V에 노출되어 HIGH 또는 로직 1 레벨을 렌더링합니다.

디지털 I / O 핀아웃을 나머지 사물과 분리하면 LED가 망가 져서 불규칙하게 깜박일 수 있습니다. 이것은 입력이 아무것도 렌더링되지 않거나 '매달려있는'위치에 유지된다는 사실 때문입니다. 즉, 높거나 낮지 않은 (+ 5V 또는 0V) 명확한 논리로 지정되지 않았 음을 의미합니다. 스위치가있는 풀다운 저항.

개략도

코드 이해

아래 프로그램에서는 초당 9600 비트의 데이터 속도로 설정 기능 내에서 직렬 통신을 시작합니다. 이것은 Arduino 보드와 연결된 컴퓨터 사이에서 시작됩니다 .Serial.begin (9600)

다음 단계에서는 푸시 스위치를 입력으로 사용하여 출력을 담당하는 핀인 디지털 핀 2를 트리거합니다 : pinMode (2, INPUT) 이렇게하면 '설정'이 완료되고 이제 코드의 메인 루프로 이동합니다. .

여기에서 누름 버튼을 누르면 5V가 회로를 통과 할 수 있으며 입력 핀은 누르지 않은 상태에서 10 킬로 옴 저항을 통해 접지에 연결됩니다.

위는 디지털 입력이라고 부르는 것으로, 스위치가 온 상태 (Arduino에서 '1'또는 LOGIC HIGH로 허용) 또는 오프 상태 (시각화 됨) 중 하나만 특정 상태에있을 수있는 조건을 나타냅니다. 아두 이노에 의해 '0'또는 LOGIC LOW), 그 사이에 다른 정의되지 않은 상태가 없습니다.

프로그램의 메인 루프에서 실행해야하는 기본적인 작업은 푸시 버튼을 통해 전송 된 정보를 제자리에 유지하기위한 변수를 적용하는 것입니다.

신호가 '1'또는 '0'의 형태로 위에서 논의했듯이 여기서는 int 데이터 유형을 사용합니다. 이 변수의 이름을 sensorValue로 지정하고 디지털 핀 2에서 읽고있는 모든 항목에 해당하도록 수정할 수 있습니다.이 모든 것은 한 줄의 코드를 통해 달성 할 수 있습니다.

int sensorValue = digitalRead (2) Arduino가 입력을 읽으면 10 진수 값의 형태로 컴퓨터에 다시 인쇄합니다.

이것은 코드의 마지막 줄에있는 Serial.println () 명령의 도움으로 구현 될 수 있습니다 : Serial.println (sensorValue)

그런 다음 Arduino 도메인에서 직렬 모니터가 시작될 때마다 푸시 버튼이 열린 위치에있는 동안 '0'체인이, 버튼이 닫힌 상태에있는 경우 '1'체인이 표시됩니다.

/*
DigitalReadSerial
Reads a digital input on pin 2, prints the result to the serial monitor
This example code is in the public domain.
*/
// digital pin 2 has a pushbutton attached to it. Give it a name:
int pushButton = 2

// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600)
// make the pushbutton's pin an input:
pinMode(pushButton, INPUT)
}
// the loop routine runs over and over again forever:
void loop() {
// read the input pin:
int buttonState = digitalRead(pushButton)
// print out the state of the button:
Serial.println(buttonState)
delay(1) // delay in between reads for stability
}




이전 : 타이머 회로가있는 맞춤형 유량 컨트롤러 Next : 아날로그를 디지털로 변환 (아날로그 읽기 직렬) – Arduino 기본 사항