4x4 키패드 입력장치

-가로로 4줄, 세로로 4줄의 접점 즉 8개의 전선을 이용하여 16가지 입력 구분을 할 수 있는 간이 입력장치이다.  

 

 

1이라는 문자 위치의 버튼을 누르면 8번과 4번전선의 핀,  2 버튼을 을 누르면 8번핀과 3번핀이 연결되므로
8개 핀이 어떻게 연결되는지 check하면 16개 버튼중 어느 버튼을 눌렀는지 확인할 수 있다 

 

keypad 라이브러리 설치 
 - keypad 기능 사용을 위한 전용 라이브러리를 추가로 설치해 주어야 한다.
 - IDE 스케치 메뉴 -> 라이브러리 포함하기 -> 라이브러리관리하기 화면에서  "keypad" 를 검색하여 설치

 

아두이노와 연결
 
아래 그림과 같이 D5번~D12번  S표시 핀에 차례로 연결한다.  (키패드 정면에서 맨왼쪽이 5번핀이 되도록)

 

 

테스트프로그램

 

2~8 line: 가로4줄 X 세로 4줄 키패드상의 버튼을 눌렀을 때 선택할 문자를 정의한다.
9~10 line : 가로줄과 세로줄의 연결핀들을 정의한다.
11 line :  myKeypad 라는 이름으로 4 x 4 키패드 장치를 선언하여 사용한다.
17 line : 시리얼통신을 시작한다. 여기에서 지정하는 9600이라는 통신속도와 시리얼 모니터  에서 선택하는 속도가 일치해야만 정상적으로 문자들이 표시된다.  
21 line :  mykeypad라는 장치에서 한글자를 읽어 keypressed라는 변수에 저장한다.
22~24 line: 읽어 들인 문자가 있을 경우 serial장치 즉, 시리얼모니터화면에 표시한다. 이와 같이 프로그램작동 중 변수의 내용을 확인해 볼 필요가 있을 경우 통상 이 방법을 많이 사용한다.

피에조 부저
-얇은 금속판을 주기적으로 떨리게하여서 소리를 출력하는 부품으로 수동형(Passive형)과 능동형 (Active형)이있다.

 

 

 

 


-Passive형 : 떨림판과 자석만 있어 아두이노의 tone이라는 함수를  통해 특정 주파수 신호를 보내면 그 주파수에 해당하는 소리가 나게 된다.
-Active형: 떨림판과 자석 이외에 내장된 진동 회로가 있어 외부에서 전원만 인가해 주면 자동으로 소리가 나는 방식. 사용이 간편하지만 미리 지정된 주파수 소리만  낼수 있다.
 -본 키트에서는 Passive형을 사용하므로 원하는 주파수의  소리가 나게 할 수 있다   

 

아두이노와의 연결

 

 

 

테스트 프로그램  

10 line : tone(포트,주파수,길이)함수 : 지정 포트로 지정 주파수 신호를 길이(1/1000초단위)로 출력하여 소리가 나도록 한다.
9~12 line : 배열의 순서대로 주파수 숫자를 가져와서 1초씩 소리나도록 tone함수를 호출한다  
13 line : noTone(포트)함수 : 지정하는 포트의  출력 끄기


참고자료 : 음계별 주파수

음계별 주파수는 다음과 같고, 소리의 길이를 조절할 수 있으므로 악보만 있으면 원하는 곡조의 음악을 피에조 부저로 소리나게 할 수 있다.

 

아두이노 부품 배선 주의사항
이제부터 본격적으로 부품들을 아두이노 나노에 배선 연결하고 상호작용하는 기능들을  개발하게 되는데 부품 배선과 관련된 작업들은 다음 순서로 해야 한다. 
1) 반드시 전원을 차단한 상태에서 아두이노와 연결할 부품들과의 배선 연결한다.
2) 연결 상태를 확인하고 USB를 연결하여 전원공급 및 PC 개발환경 연결 
   (특히 전원 +/-를 잘못 연결했는지 여부에 주의하고 전원이 공급되자 마자 보드에서 연기가 나거나 작동이상이 발견되면 재빨리 연결을 끊고 배선상태 확인해야 한다)  
3) 프로그램 업로드 및 테스트 수정작업 .
4) PC와의 USB연결을 끊고, DC어댑터 전원공급 만으로 정상작동여부 확인 
 ( USB를 통한 전원공급과 DC어댑터를 통한 전원공급을 동시에 연결하지 말고, 반드시 둘 중 하나의 방식으로만 전원을 공급해야 한다. )

  ***주의사항***  보드에 전원이 연결되어 있는 상태에서는 보드를 불필요하게 만지작 거리거나 금속성  물체와 접촉되지 않도록 주의해야 한다. 배선이 합선되거나 해서 과전류가 흐르면  아두이노 부품이 과열되어 순식간에 망가져 버린다.

 

나노 프로토타이핑 보드

아두이노 나노에 센서,모터 등 여러가지 부품들을 연결하게 되는데, 대부분의 부품들은 신호외에도 전원공급핀을 연결해야 한다. 아두이노 나노에는 5V, GND 핀의 갯수가 제한되기 떄문에  여러 부품들을 연결하기 위해서는 배선작업이 복잡해지는데 이를 간편하게 할 수 있도록 많는 수의 전원공급핀을 추가하는 등 아두이노 나노를 이용하여 손쉽게 여러가지 실습을 해볼 수 있도록 지원하는 보드

 

 

1) 아두이노 나노 도킹단자 : 아두이노 나노를 납땜 작업없이 착탈식으로 꽂아 넣으면  되므로 아두이노 나노가 고장나서 교체할 때 등에도 편리하다. 그림과 같이 아누이노 나노의 USB단자가 보드 바깥쪽을 향하게 장착해서 사용한다.
2) 전원 입력잭 : DC 5V ~ 12V 어댑터  전원을 연결한다.  프로그래밍 테스트할 때에는   아두이노나노의 USB단자를 PC에 연결하여 전원을 공급하지만, PC에 연결없이 단독으로  가동시키고자 할 때에는 이곳을 통해 전원을 공급한다.
3) 입출력핀 : 아두이노나노의 각종 입출력핀과 연결된다. 각 핀에는 전원공급용핀들도 함께  있으므로 연결하기 간편하다. ( 파란색 S 핀: 신호 연결용 핀,  붉은색 V핀에 +5V, 검정색  G핀에 - 전원이 공급되므로 +/-를 거꾸로 연결하거나 합선되지 않도록 주의해야 한다) 
4) I2C용 단자 : LCD모니터등을 연결할 때 사용하는 I2C용 4개 단자 ( 5V+, -, SCL,SDA )가  사용하기 편하게 별도로 구분되어 있다.
5) DC전원선 : DC어댑터의 전압을 그대로 사용할 수 있는 단자. 이곳을 통해 워터펌프 등 DC어댑터 12V 전압이 필요한  부품을 연결할 수 있다.           

 

LED 전구

LED 전구는 + / - 극성이 있으므로 잘 구분해서 연결해야 하는데 다리가 조금 긴 쪽이  +로서 아두이노 출력핀 단자에 연결하고 반대쪽을 -(GND)에 연결해야 한다.   

 

 

컬러별 LED 전구 사양  
   - LED 컬러별로 허용전압이 2.3~4.0V 이므로 아두이노 출력핀에서 나오는 5V를  그대로 연결해서는 안되고, 반드시 저항을 달아 전압을 낮추어 주어야 한다.

   -특히 백색/청색에 비해 적색/황색이 허용전압이 낮으므로 적색LED를 아두이노5V  출력핀에 직접 연결하면 순간적으로 망가져 버린다.

 

***본 키트에 포함된 전구는 알맞은 저항과 케이블이 미리 연결되어 가공된 것이므로  검정색 케이블에 -, 붉은색 케이블에 5V + 측에 연결하면 된다. 

 

아두이노와 LED전구 연결

 

 

테스트 프로그램

다음 소스코드를 아두이노로 업로드한 후, LED 전구들이 번걸아 가며 깜박이는지  확인한다.

1 line : 13번 핀을 사용하기 위해 이름을 pinRed라고 지정한다. 
5 line : pinRed(13번핀)을 출력용으로 사용하겠다고 선언한다
7~8 line : 처음에는 LOW값을 주어 LED전구를 끈다.
12~14 line : 붉은색 전구를 켜고 0.5초 대기한 후 끈다  
15~17 line : 파란색색 전구를 켜고 0.5초 대기한 후 끈다 
18 line : 1초 대기후 위 작업을 반복한다. 

아두이노 개발환경
 


a. 컴파일 버튼 : 소스코드 편집기에 있는 내용을 컴파일한다.  소스코드에 문법적인, 구조적인 에러가 없는지 확인하여 메시지 영역에 표시된다.

b.업로드 버튼 : 컴파일 + 업로드를 일괄작업 실행한다. 소스를 컴파일해서 아두이노에   올려주는 과정까지 이 버튼 하나로 실핸된다. 소스코드에 문제가 있거나 아두이노와의 USB 연결에 문제가 있거나 업로드 과정에 문제가 있는 경우 메세지 영역에 표시된다.

c.시리얼 모니터 버튼 : 이버튼을 누르면 별도의 시리얼모니터 창이 표시된다.  USB로 PC 와 연결된 상태로 아두이노가 동작하면 아두이노에서 PC로 메시지를 보낼 수 있는데, 이 Serial Monitor를 통해 그 메시지를 확인할 수 있으므로 보통 디버깅 용도로 사용한다.

d.소스코드 편집기 : 아두이노 소스코드를 일력하고 편집하는 영역.

e.메시지 영역 : 아두이노 개발환경을 사용하면서 발생하는 알림 메시지나 컴파일, 업로드 결과 등등 메시지가 표시되는 영역.

 

아두이노 프로그래밍 언어

 

아두이노에서는 C 언어를 사용한다.  기본적으로 C언어 작성문법이 그대로 적용되므로 여기에서는 아두이노용으로 추가된 함수나 아두이노에서 다른 부분에 대한 설명만을 한다. 

따라서 C언어에 대해 기본지식이 없는 사람은 다른 책자나 다음 링크된 자료 등으로 C언어 기본문법에 대한 사전학습이 필요하다.  
http://playground.arduino.cc/uploads/Main/arduino_notebook_v1-1.pdf
 

1. 아두이노에서의 DATA TYPE 
 1) HIGH/LOW : 입출력핀을 통해 전류의 흐름을 제어할 때 가해지는 전압을 지정하기 위한  값으로서 HIGH는 5Volt를 의미하며 LOW는 0Volt를 의미한다.

 

2) int : 정수를 의미하는 것은 일반적인 C언어와 같으나,  아두이노에서는 -32,768 ~ 32767까지 범위의 숫자만 사용할 수 있고 더 큰 정수를 사용하고자 할 경우에는 long 타입을 사용 해야 한다는 것이 유의해야 한다. 예를 들어 int 타입 변수의 현재 값이 32,767인데 여기에 1을 더하면 -32,768이 되어버리므로 프로그램 작동이 엉망이 되어 버릴 수 있다.

 

3) TRUE/FALSE : 조건문 등에서 사용하기 위한 상수로서 TRUE는 1, FALSE는 0 값이 사용되는 것으로 되어 있으나 실제로는 0이면 FALSE, 기타 모든 값은 TRUE로 판정된다.
 

 2. 핀단자를 통해 연결되는 부속장치들을 제어하기 위한 함수. 

1) pinMode(pin,mode) :  pin에 지정하는 번호의 핀을 지정하는 mode(INPUT또는OUTPUT)로 사용하겠다고 선언한다. 예를 들어 pinMode(5,OUTPUT)하면 디지털 5번핀을 출력용으로 사용하겠다는 의미이다.

digitalRead(pin)  : pin에 지정된 디지털핀으로 입력되는 신호값을 읽어 들인다.  결과값은 HIGH (5V) 또는 LOW( 0V) 둘 중 하나의 값인데, 3V를 기준으로 이보다 크면 HIGH값으로, 낮으면 LOW값으로 판정된다.  
 
2) digitalWrite(pin,value) : pin에 지정된 번호의 핀에 value(HIGH 또는 LOW) 값을 출력하라는 함수이다. 즉 digitalWrite(3,HIGH) 를 실행시키면 디지털 3번핀에 5V 전압 전류가 흐르게  된다. 

 

3)analogRead(pin)  : pin에 지정된 아나로그핀으로 입력되는 신호값을 읽어 들인다. 디지털 신호값은 HIGH 또는 LOW 둘중 하나 이지만 아날로그핀에서는 이를 세분하여 0 ~ 1023까지의 숫자로 구분해 준다. 따라서 ON/OFF 등 단순한 구분이 아닌 스피커볼륨의 크기나  각종 센서들의 저항값을 세밀하게 구분할 때 등에 사용할 수 있다.  

 

4) analogWrite(pin,value) :  함수이름은 아날로그이지만 디지털핀에 출력하는 함수이다. 단  아날로그처럼 세분된 값을 출력하기 위해 PWM방식 (Pulse Width Modulation:  전압은  동일하되 출력되는 시간 간격을 조절하여 전체적인 출력량을 조절하는 방식)으로 출력한다. 출력량을 조절하여 출력할 수 있으므로  LED전구의 밝기를 조절하거나 모터의 동작을 제어하기 위한 용도로 활용할 수 있는데, 아두이노나노의 경우 3, 5, 6, 9, 10, 11번핀 총 6개 핀만 이런 용도로 사용할 수 있다.


3. 개발과정에서 디버깅용으로 활용가능한 함수. 

Serial.begin( rate)  : rate로 지정하는 속도로 통신을 시작하겠다는 의미이다. 기본적으로 디지털핀 0번으로 수신, 1번으로 송신하는 방식인데 아누이노가 USB를 통해 PC에 열결되어 있으면 PC와의 통신을 의미하며 앞페이지의 시리얼통신 모니터를 통해 송수신내용을 확인할 수 있다. 단 통신하는 양측은 속도가 동일해야 하므로 이 함수로 지정하는 속도와 동일한  값을 PC의 시리얼모니터의 속도로 지정해 주어야 한다.

 

Serial.print( data ) 시리얼통신으로 data값을 전송하는 명령이다. 전송된 값은 PC의 시리얼모니터 영역에 표시므로 이 함수를 이용하여 프로그램의 작동 상황을 모니터링하는 용도로 사용할 수 있다. 즉 아두이노 프로그램이 동작중 어떤 변수의 현재값을 알고 싶을때 이 함수를 이용하여 보내면 PC의 시리얼모니터에 표시되므로 보고 확인할 수 있다.  print문 대신 println문을 사용하면 화면표시 후 줄바꿈까지 실행되어 보기 편하게 표시된다

 

첫 프로그램 실행해 보기
 


1. 위 그림처럼 [파일 - 예제 - 01.Basics - Blink] 를 선택한다. 그러면 소소코드 편집기에 새로운 프로그램 소스코드가 불려져 온다.

 

 

2. USB케이블로 아두이노 나노를 연결하고 [툴 - 포트] 영역에 새로 표시되는 포트를 선택한다.

 

3. [업로드] 버튼을 클릭하면 컴파일 및 업로드 과정이 진행되고 잠시후에 메세지영역에 완료되었다는 메세지가 표시되고 작동이 시작된다.  

즉, 아두이노나노 보드에 있는 붉은색 LED가 1초간격으로 깜박이기 시작한다.

 

 

"avrdude:stk500_... "Error가 발생될 경우

 

사용하고 있는 아두이노 IDE와 아두이노 나노의 Bootloader 버전이 맞지 않아 발생되는 경우가 많다. 즉 아두이노IDE 는 최신 버전(1.8.X)을 다운 받아 사용하는데 아두이노 나노 모듈은 이전 버전용으로 출시된 것을 사용하는 경우에 프로그램 로드가 되지 않고 위와 같은 에러가 발샌된다. 이때에는 다음과 같이 프로세서 메뉴에서 ATmega329P 대신에 ATmega328P(Old Bootloader)를 선택하고 업로드 작업을 다시 해보도록 한다.

 

 

 

첫 프로그램에 대한 설명
 


아두이노 프로그램은 기본적으로 setup함수(1~4 line), loop 함수(6~12line) 두개의 함수로 구성된다.

- setup 함수 : 아두이노에 전원이 들어오거나 reset 되었을 때 처음 1회만 실행되는 함수.  따라서 아두이노가 가진 pin 들을 초기화하거나 소스코드내에서 사용되는 변수 및 각종 하드웨어를 초기화 하는 코드를 작성한다.
- loop 함수: setup이 실행된 후 무한반복해서 호출되는 함수이다. 즉, 아두이노가 작동되는 동안 계속해서 반복 수행할 일의 내용을 지정하는 동작코드를 작성한다.
- 전역변수나 라이브러리 헤더include문 등 선언사항은 setup함수 윗부분에 작성한다.

 

2 line : 디지털 13번핀을 OUTPUT모드로 선언한다. (13번핀은 보드상의 LED와 연결되어 있다. 즉 별도의 하드웨어 연결없이 즉석에서 예제를 실행해보기 위해 보드상의 LED를 출력용으로 사용하겠다는 의미이다.)

8 line : 13번핀으로 HIGH신호 즉 5V 전압을 출력하라는 명령. 실행되면 보드상의 붉은색 LED가 켜진다.

9 line :  1000밀리세컨드 즉 1초 동안 대기하라는 명령. 윗줄에서 LED가 켜진 상태로 1초간 대기하게 된다.

10~11 line : 13번 핀에 LOW신호(0V)출력, 즉 LED를 끄고 1초간 대기하라는 명령이다.

-loop()함수 안에 있는 8~11 line명령이 반복 실행되므로 LED는 1초간격으로 켜졌다가 꺼지는 동작을 계속 반복하게 된다.     

+ Recent posts