4.2 아두이노 입출력 핀 구성
Last updated
Last updated
아두이노 보드의 하드웨어적 입출력 핀 구성을 쉽게 이해하려면 두 가지만 기억하면 됩니다. 디지털/아날로그의 두 종류로 구분되고, 각각은 다시 입력/출력으로 구분된다는 것입니다. 아두이노 보드의 사용방법을 익힌다는 것은 결국 디지털 입/출력, 아날로그 입/출력 사용법을 배운다는 것입니다. 각 핀의 상세 위치는 아래의 그림에서 확인할 수 있는데, 눈여겨 보실 것은 총 14개의 디지털 핀들은 입/출력을 공용으로 사용할 수 있고, 아날로그 입/출력은 별도로 각각 입력용 6개와 출력용 6개로 구분된다는 것입니다.
한 가지 의아하게 생각되실 것은 그림 상 디지털 입출력 핀과 아날로그 출력핀이 함께 핀을 공유하는 것이 보이실 것입니다. 맞습니다. 그 이유는 3.3장에서 이미 언급했듯이 아날로그는 실제 아날로그 그 자체라기 보다 디지털화된 아날로그 방식으로 표현되는 것이라 아두이노 상에서 아날로그 출력도 결국은 디지털이기 때문에 0~13까지 총 14개 핀 중 일부(6개, 핀에 아날로그를 의미하는 ~무늬로 표기)를 아날로그 출력용으로 공용할 수 있습니다.
이전 3.6장의 C++ 코드에서 pinMode라는 함수를 기억나시나요? 그 함수가 필요했던 이유가 이제 이해되실덴테 이렇게 공용되는 핀들이 존재하기 때문에 해당 핀을 사용하기 전 사전에 내가 이 핀은 어떤 용도로 사용하겠다고 미리 알려주어야만 하는 필요가 생겼던 것입니다. 그런데 블록코딩에서는 어떨까요? 이런 핀의 용도를 설정하는 블록은 따로 없습니다. 사용자들이 코딩을 어렵게 느끼지 않도록 내부적으로 숨겨놓은 것입니다.
지금까지 우리는 3.3장에서 디지털 출력/아날로그 출력 2가지를 익혔습니다. 자 그럼, 남은 2가지 디지털 입력과 아날로그 입력에 대해 알아볼까요?
디지털 출력이 디지털 값을 보드 외부로 출력했다면, 디지털 입력은 말 그대로 디지털 값을 외부로부터 보드 안쪽으로 입력을 받아드린다(다른 말로 값을 read한)는 것입니다. 외부로부터 입력되는 값은 어떤 값일까요? 예상하실 수 있을텐데 디지털 값인 0(LOW, 0v) 또는 1(HIGH, 5v 또는 3.3v)이 입력됩니다.
마지막으로 C++코드에서도 위에서 우리가 배운 디지털 입/출력, 아날로그 입/출력을 위한 4종류의 함수가 있다는 것으로 이 장을 마무리 하고자 합니다. 함수이름은 의미를 직관적으로 이해하실 수 있는데 digitalWrite / digitalRead, analogWrite / analogRead 입니다.
아날로그 입력도 쉽게 이해되실텐데 외부로부터 보드 안쪽으로 아날로그 값 입력을 받아드린다(다른 말로 값을 read한다)는 것입니다. 외부로부터 입력되는 값은 어떤 값의 범위는 어떻게 될까요? 먼저, 3.3장에서 아날로그 출력값의 범위는 0~5v의 변화를 0~255의 256개 값(1bytes=8bits=으로 표현할 수 있는 최대값)으로 표현했던 것이 기억나세요? 그럼, 아날로그 입력값도 동일할까요? 만약 그랬다면, 저희가 외우기 쉬웠을텐데 그렇지 않고 아래 그럼처 0~5v의 변화가 0~1023까지의 1024개 값로 표현됩니다. 이러한 아날로그를 디지털화하는 전자회로를 ADC(Analog to Digital Converter)라고 하고, 이두이노에 내장된 이 회로의 표현력이 최대 10비트(bits)라 2진수의 10비트(bits)인 =1024 값까지 표현되는 것입니다.