아두이노프로세싱 프로그래밍

아두이노 디지털 핀 인터페이스 코딩

coding art 2019. 10. 1. 18:14
728x90

아두이노 CPU Serial.print  코딩이 성공적이라면 그 다음 단계인 아두이노 Interface 코딩 단계로 넘어가도 될 것이다. CPU 코딩이란 Fortran 이라든지 Basic 과 같은 컴파일러성 툴을 사용할 경우에 CPU를 사용한 컴퓨팅에 치중하게 되는 것이다. 물론 1981년 과거에도 인텔사의 8051과 같은 원칩 마이크로 콘트롤러가 없었던 것은 아니지만 지금의 아두이노처럼 초등생들까지 끌어 들일 정도로 각광을 받지는 못했다. 코드 작성도 지금처럼 C 언어가 아닌 어셈블러를 사용했다.

좀 복잡해 보일지는 모르지만 내부 구조를 보자. 특히 Brokking 의 오픈 소스 드론 코드 사례를 보면 인터럽트 로직과 타이머 로직이 100% 사용되고 있다. 클럭 주파수를 생성하는 크리스탈 구조도 지금의 아두이노 보드에 상단면이 장축형 타원모양인 형상으로 그대로 남아 있으며 16MHz 클럭 주파수를 제공한다. 아두이노에서는 DRAM 메모리는 더 이상 사용치 않으며 지금은 플레시 메모리로 바뀌었다. 전원을 꺼도 전화번호 기억하듯이 업로드된 코드를 기억한다. ROM EEPROM 으로 바뀌었으며 CPU 내부 연산 속도를 올리기 위해서 SRAM을 조금 하는 사용하는 정도이다.


무엇에 변화를 주어 아두이노가 초등생까지 쓰기에 편할 정도로 간편해졌을까? 그 답은 BUs Contol Address 버스의 혁신에 있다고 할 것이다. 8비트 CPU 라면 이진법적인 8비트로 메모리 위치를 지적해서 억세스 하게끔 되어 있으나 아두이노 우노 보드에서는 이를 10진법화하여 그냥 해당 핀 수는 D2D19번까지 합계 18개를 대상으로 핀 번호를 지정 후 “H” 또는 “L” 전압 상태를 지정 출력해 주면 된다. 반대로 디지털로 읽어 들일 경우에도 전압 범위를 맞춰주면 된다. 아두이노 인터페이스 코딩 작업은 이렇게 아주 단순한 작업이다.


아두이노에서 0번과 1번에 해당하는 RX, TX 핀을 제외하면 13번까지 핀 중에서 실제 데이터 핀은 11개이다. RX, TX 핀은 USB 핀들과 연결되어 PC와의 통신을 담당할 수도 있으며 RC카 콘트롤을 위한 블루투스 통신보드와의 연결을 위해 사용되기도 한다.

 

한편 아날로그 핀이 A0A5까지 있음을 감안하면 합계 17핀이 되는 것이다. RX즉 비트 차원에서 보면 16비트에 해당한다. 특히 초보자들이 잘 모르는 사실이 하나 있는데 아날로그 핀들 조차도 디지털 데이터 출력이 가능하다는 점이다. 이 점은 아두이노 우노보드와 Adafruit 모터 쉴드를 사용하여 RC카를 만들면 핀 수 부족에 시달리는데 이때에는 아날로그 핀들 조차도 놀고 있으면 디지탈 출력 핀으로 그냥 사용하면 된다는 점이다. 지금 아두이노를 배우는 초보자가 마이크로 콘트롤러 CPU 구조 세부까지 알아야 할 필요는 없으나 한편으로는 큰 도움이 될 수도 있다.

 

일단 아두이노 CPU Serial.print 코딩 연습이 끝났다면 인터페이스 코딩으로 넘어가자. 앞서 설명했듯이 과거의 인텔 칩에서 보다 쉽게 쓸 수 있도록 핀 번호를 십진법화 했기 때문에 쉽게 배워서 사용하면 된다. 자세히 보면 특별히 혁신이랄 것이 없는 셈인데 아마도 우리 뇌구조가 8비트를 한 묶음으로 하는 바이트(byte) 보다는 단세포처럼 간단하게 ON OFF 스타일인 비트(bit)를 처리하는 것이 더 적합하지 아닐까하는 생각이다.

 

디지털 인터페이스 핀을 전혀 사용하지 않았던 CPU 코딩에 이어 진정한 아두이노 프로젝트의 시작이라고 볼 수 있는 LED 회로 배선을 꾸며 ON OFF를 시켜 보고 더 나아가 점멸 시켜 보도록 하자.