altair의 프로젝트 일기

3x4 키패드 입력을 아날로그 핀 하나로 받기 본문

IT/임베디드

3x4 키패드 입력을 아날로그 핀 하나로 받기

altair823 2022. 8. 8. 11:30

 1. 배경

 아두이노에 키패드를 연결하는 작업을 할 때였다. 인터넷에 있는 튜토리얼들은 4x4 키패드를 디지털 핀에 꽂아 사용하도록 나와있었다. 물론 그대로 따라 하니 잘 작동하는 것을 볼 수 있었다. 

 

 하지만 라즈베리파이 피코로 계산기 프로젝트를 진행하다 보니 의문이 생겼다. 저번 글에서 보였다시피 LCD를 연결하는데에도 전원을 포함한 여러 선들을 연결해야 하는데 키패드에만 7~8개의 디지털 입력을 사용해야 한다는 점이 걸렸다. 하나는 숫자키, 하나는 기능키로 적어도 두 개의 키패드를 사용할 예정이기 때문이다. 두 3x4 키패드 모두 7개의 디지털 입력, 총 14개의 디지털 핀을 사용하자니 제작 난이도가 비교적 높아질 것 같았다. 

 

2. 방향키 프로젝트

 그러다가 저번에 방향키 버튼 네 개를 아날로그 입력 하나로 구분할 수 있게 했던 작업이 생각났다. 아래의 튜토리얼을 응용한 것이다. 

 

How To: Multiple Buttons on 1 Analog Pin - Arduino Tutorial

How To: Multiple Buttons on 1 Analog Pin - Arduino Tutorial: The Arduino uno board has 12 availabe digital I/O pins and 6 analog input pins, sometimes, on complex or 'big' projects, we run out of digital pins. In this tutorial you will learn how to use mul

www.instructables.com

위 튜토리얼을 응용해 만든 방향키 프로토타입.
버튼들을 방향키 배열로 만능기판에 납땜한 모습.
뒷 면의 모습.

 버튼마다 저항을 달아 버튼을 누르면 특정 개수의 저항을 지나 나오는 출력 전압을 측정해 어떤 버튼이 눌렸는지 확인한다. 이를 잘 응용하면 키패드 입력 또한 아날로그 입력으로 구분할 수 있지 않을까? 그래서 찾아보았다. 

 

3. 7개 -> 3개

 

One single analog pin keypad control using Arduino

Overview In this tutorial, we will learn how to interfacing 4*4 keypad with Arduino by a single analog pin. The use of a lot of pins can ...

razibshahdat.blogspot.com

 위 튜토리얼에서는 4x4 키패드에 5v 전압을 주어, 키마다 다른 개수의 저항들을 거쳐 나오는 전압을 측정해 어떤 키가 눌렸는지 판단한다. 라즈베리파이 피코에서도 5v를 회로에 주면 잘 작동했지만, 문제는 피코가 USB 전원을 사용하지 않고 리튬 배터리 등을 직접 핀으로 입력받는다면 5v 전압을 얻을 수 없다는 것이다. 나의 경우 LCD가 5v를 사용하므로 배터리를 5v로 승압해 사용할 예정이지만 이왕이면 3.3v로 사용 가능한 회로를 만들고 싶었다. 그리고 무엇보다 내가 사용할 키패드가 3x4 모양이었다. 

 그래서 바로 위의 내용을 바탕으로 저항만 바꾸어 회로를 만들었다. 애석하게도 회로도는 갖고 있지 않다. 저항 값만 바꾸어 테스트 하다가 바로 납땜했기 때문이다. 

앞  면

 

뒷 면
3x4 키패드

 이렇게 키패드의 7개 선을 전원 포함 3개, 데이터만 따지면 1개의 선으로 줄일 수 있었다. 키패드를 하나 더 달 예정이기 때문에 데이터를 선 하나로 받을 수 있다는 것은 매우 중요한 장점이다. 

 처음으로 만능기판에 납땜을 해보았지만 별 오류 없이 잘 작동해서 정말 기분 좋았던 하루였다. 

Comments