우선 동영상을 통해 7세그먼트 LED의 16개 문자를 순차적으로 디스플레이 하는 것을 관찰해 보자.
NodeMCU의 핀 배치를 참조해 보도록 하자. 가능하다면 아두이노 우노의 2,3,4,5,6,7,8,번 디지털 데이터 출력 핀들을 그대로 넘겨서 사용하면 좋겠으나 실제로 NodeMCU에서는 이에 대응하는 GPIO 7, GPIO 8, GPIO 9 번 핀이 아예 없으므로 나머지 핀들 중에서 선택하여 배선한다. GPIO 12, GPIO 14, GPIO 15에 연결하고 프로그램을 아래와 같이 수정하도록 하자.
byte FND[8] = {2,3,4,5,6,7,8,9}; // 아두이노 우노
byte FND[8] = {2,3,4,5,0,12,14,15};// NodeMCU
특히 주의할 점은 7세그먼트 연결 시 GPIO 16, GPIO 13 핀들 즉 D0 와 D8 은 7 세그먼트 작동 시에 아예 작동치 않는다는 점을 지적하고자 한다. 결론적으로 D0에서 D9 까지의 총 10개의 핀 중에서 D0 와 D8을 제외한 8개의 디지털 데이터 출력 핀이 제대로 작동이 되어 운좋게 간신히 7 세그먼트 LED 가 on OFF 되었다.
그밖에도 USB를 사용하여 전원을 공급한 상태에서 프로그램을 컴파일 후 업로딩한 상태에서 7세그먼트가 제대로 작동하였으나 전원 USB 전원을 제거했다가 다시 on 시켰을 경우에 이미 업로딩되어 플래시 메모리에 저장된 프로그램이 동작하지 않았다. 즉 사용할때마다 USB 커넥터를 사용하여 다시 업로딩 시켜야 한다는 점이다. 이것이 사실이라면 휴대용 리튬 배터리 사용하여 휴대가 곤란하다는 면이 있을 수 있다.
한편 이 7세그먼트 외에도 온습도 측정이라든지 LED on OFF 사물인터넷 제어라든지 동일한 문제가 있는지 체크해 본 결과 이들은 아무런 문제가 없었던 점을 밝힌다.
어쨌든 아두이노 NodeMCU의 총 10개 디지털 출력 핀 의 거의 대부분을 사용하여 다이오드를 연결한다는 점이 NodeMCU의 배선을 복잡하게 하여 업로딩된 프로그램의 실행에 지장을 초래한다는 것은 상당히 아쉬운 면이다. 이러한 특성을 잘 이해하고 사용하도록 해야 할 것이다.
NodeMCU_7segment_LED_ON_OFF_01
byte FND[8] = {2,3,4,5,0,12,14,15};//지난번 프로그램에서 잘못된 값 6을 0으로 수정
byte FND_DATA[] = {0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XD8,0X80,0X90,0X88,0X83,0XC6,0XA1,0X86,0X8E,0XF7,0X7F};
byte cnt = 0;
void setup() {
byte z;
for(z=0; z<8; z++) {
pinMode(FND[z],OUTPUT);
}
}
void FND_display( byte data) {
byte z;
for(z=0; z<8; z++) {
digitalWrite(FND[z],bitRead(data,z));
}
}
void loop() {
FND_display(FND_DATA[cnt]);
cnt++;
if( cnt>17) cnt = 0;
delay(1000);
}//끝
'아두이노프로세싱 프로그래밍' 카테고리의 다른 글
아두이노 NodeMCU와 GPS센서 VK16E로 만들어 보는 TinyGPS 네비게이션 시스템 (0) | 2017.03.05 |
---|---|
스마트폰 키보드에 의한 아두이노 NodeMCU 7세그먼트 LED 제어:III (0) | 2017.03.04 |
아두이노 우노 7세그먼트 LED 프로그램:I (0) | 2017.03.01 |
HTML SVG와 버튼 키보드로 스마트폰 웹에 7세그먼트 LED를 그려보자!:II (0) | 2017.02.28 |
구글 맵 HTML 프로그램에 의한 아두이노 NodeMCU GPS 데이터 확인 (0) | 2017.02.26 |