본문 바로가기
아두이노

3.3 디지털입력

by Beijing_KingGod 2019. 12. 18.

실험목표

아두이노의 디지털 핀을 이용하여 디지털 값을 입력한다.

 

필요부품

330Ω저항, 1kΩ 저항, 택트스위치, LED

 

기본적인 명령어

디지털 데이터를 입력(INPUT)하기 위해서는 2가지 명령어가 필요하다.

 

pinMode(); 디지털핀의 용도를 설정하는 함수이다. OUTPUT(출력) 또는 INPUT(입력)으로 설정이 가능하다.

 

digitalRead(); 디지털핀으로 INPUT(입력)되는 값을 읽어오도록 설정하는 함수이다.

 

/*택트스위치*/

[택트스위치 사진]

 

동작원리

[택트스위치 내부구조]

 

택트스위치의 내부구조는 위 그림처럼 왼쪽 줄과 오른쪽 줄이 연결되어있는 상태이다.

 

[스위치를 눌렀을 때]

스위치를 누른다면 4개의 단자가 모두 연결되게 된다.

 

 

[스위치로 LED 제어 배선도]
[스위치로 LED 제어 회로도]

 

[스위치로 LED 제어 회로구성]

 

*주의사항

스위치에 반드시 1kΩ짜리 풀다운(full-down)저항을 연결 해주어야 한다.

 

 

 

프로그램 작성

[스위치로 LED 제어 프로그램 예제]

pinMode(12, INPUT);  12번핀을 INPUT(입력)포트로 설정한다.

digitalRead(12);  12번핀의 입력값을 읽어온다.

if(switch_state==1)  입력된 변수의 값이 HIGH 일 때 실행하도록 하는 조건문이다. (HIGH = 1,  LOW = 0)

 

[프로그램 실행 결과]

회로구성과 프로그램을 정확하게 구성했다면 스위치를 눌렀을 때 LED가 점등될 것이다. 만약 LED가 점등되지 않는다면 아두이노 전원을 제거해 준 후 구성된 회로도와 프로그램에 이상이 없는지 확인해보록 한다.

 

 

 

*풀업, 풀다운 저항이란?

 스위치로 LED제어하기를 실험하며 풀다운 저항을 사용하였다.그렇다면 풀다운 저항이란 무엇이고 왜 굳이 스위치에 달아주어야 하는 것일까?

  스위치가 open인 상태에서는 HIGH LOW 사이의 애매한 상태에 머무르게 되는데 이를 플로팅(Floating)상태라 한다. 이 현상을 방지하고 HIGH LOW의 상태를 명확하게 하기 위하여 PULL-DOWN 혹은 PULL-UP저항을 이용한다. 스위치 회로에 1kΩ~100KΩ 정도의 저항을 추가하여 LOW 혹은 HIGH 상태를 명확하게 유지할 수 있도록 해준다.

 

[pull-up저항과 pull-down저항 예시 배선도]

 

전류는 기본적으로 저항을 피해 흐르려는 성질이 있다. 그렇다면 스위치를 눌렀을 때와 누르지 않았을 때 각각의 입력 핀에는 어떤 신호가 들어갈 지 생각해 보자.

 

 

 

 

 

부저 제어하기

 

[부저]

마그네틱 부저, 피에조 부저

 

마그네틱 부저(능동 부저)

피에조 부저(수동부저)

한음만 출력

여러 음 출력 가능

용도

신호 출력용

멜로디, 벨소리 등

실험 목표

부저의 기능을 이해하고 이를 이용하여 회로 및 프로그램을 구성할 수 있다.

 

필요 부품

Arduino Uno, 브레드보드, 점프선 , 마그네틱 부저, 피에조 부저, 1k저항, 택트 스위치

 

마그네틱 부저 사운드 출력

 

[마그네틱 부저 사운드 출력 배선도]
[마그네틱 부저 사운드 출력 회로도]
[마그네틱 부저 사운드 출력 회로구성]

프로그램 작성

[마그네틱 부저 사운드 출력 프로그램 예제]

 

 

 

피에조 부저 사운드 출력

[피에조 부저사운드 출력 배선도]

 

[피에조 부저사운드 출력 회로도]

프로그램 작성

 

[피에조 부저사운드 출력 프로그램 예제]

 

 

응용 프로그램

 

1)스위치가 눌릴 때 마그네틱 부저가 1초 동안 사운드를 출력한다.

[응용 프로그램 배선도]

 

[응용 프로그램 회로도]
[응용 프로그램 회로구성]

프로그램 작성

[응용 프로그램 예제]

 

댓글