안녕하세요, 고고메이커 입니다.

이번 글에서는 아두이노 IDE는 어떻게 사용하는지, 어떤 기능이 있는지 알아보도록 하겠습니다.

글이 긴 관계로, 2편으로 나눴습니다.

1. IDE에 대한 설명 및 IDE 설치법

2. IDE기능 및 사용법(해당 글)

아두이노 IDE 소개

아두이노 IDE 를 소개하기 앞서 주로 사용되는 단어에 대해 설명 드리겠습니다.

업로드하다: 아두이노에 코드를 올리다. 즉, 아두이노에 작성한 코드를 올리는 것입니다.컴파일하다: 사람이 쓴 코드를 아두이노가 알아들을 수 있게 하는 작업을 컴파일(confile)이라고 합니다. 컴파일을 하기 위해서는 컴파일러가 필요합니다.스케치: 아두이노 IDE에서 작성한 코드(파일)을 스케치라고 부릅니다.

 

아이콘설명

IDE에서 자주 사용하는 기능에 대해 설명을 드리겠습니다.

아두이노 IDE 프로그램
verify

이 아이콘은 마우스를 가져다 대면 verify라는 설명이 나옵니다(verify: 검증하다). 코드를 컴파일하는 기능을 합니다.

단축키 Ctrl + R 로 사용할 수 있습니다.

uproad

이 아이콘은 마우스를 가져다 대면 upload라는 설명이 나옵니다. 코드를 아두이노로 보내는(아두이노에 업로딩하는) 기능을 합니다. 또한, 이 아이콘을 클릭하면 코드 업로드 전에 자동으로 컴파일을 한 번 합니다.

단축키 Ctrl + U 로 사용할 수 있습니다.

new

이 아이콘은 마우스를 가져다 대면 new라는 설명이 나옵니다. 아두이노 IDE 창을 하나 더 띄워 주는 기능을 합니다.

단축키 Ctrl + N 로 사용할 수 있습니다.

open

이 아이콘은 가져다 대면 open이라는 설명이 나옵니다. 내장된 예제 또는 컴퓨터에 저장된 스케치를 여는 기능을 합니다.

아이콘을 클릭하였을 때 이런 창이 뜹니다.

Open... 은 컴퓨터의 파일을 여는 것입니다.

Libraries 는 라이브러리의 예제파일을 여는 것입니다.

밑의 숫자로 나열되어 있는 것들은 아두이노의 기본 예제파일을 여는 것입니다.

save

이 아이콘은 가져다 대면 save라는 설명이 나옵니다. 말 그대로 스케치를 저장하는 역할을 합니다.

단축키 Ctrl + S 로 사용할 수 있습니다.

Serial Monitor

이 아이콘은 가져다 대면 Serial Monitor 라는 설명이 나옵니다. 시리얼 모니터를 실행하는 역할을 합니다.

시리얼 모니터에 대한 자세한 설명은 다른 글로 설명하겠습니다.

 

전체적인 구조

전체적인 구조

1 에 해당하는 부분은 상태창이라고 볼 수 있습니다. 컴파일 및 업로딩 할 때에 정보가 이곳에 뜹니다.

2 에 해당하는 부분은 코드를 적는 곳입니다.

3 에 해당하는 부분은 위에서 설명드린 부분이니 넘어가도록 하겠습니다.

4 에 해당하는 부분은 아두이노IDE의 탭에 대한 부분입니다.

https://eu4ng.tistory.com/20

https://luftaquila.tistory.com/9

이 두 글에서 잘 다루어 놓았으니, 기능이 궁금하신 분들은 참고하시기 바랍니다.

 

써놓고 보니 무언가 부족한 듯한 글인것 같습니다.이 글에서 다루지 않은 부분은 하나하나 나누어서 글로 적을 것 같습니다.지금까지 아두이노IDE의 기능과 사용법에 대해 알아보았습니다.다음 글에서도 알찬 지식으로 찾아뵙도록 하겠습니다.

그럼 다음 글에서 만나요~

'Arduino > 기초' 카테고리의 다른 글

아두이노 기초 - 아두이노 IDE란(설치)  (0) 2022.02.26
아두이노 기초 - 아두이노란  (0) 2021.01.12

안녕하세요, 고고메이커 입니다.

이번 글에서는 아두이노 IDE는 무엇이고, 어떻게 사용하는지에 대해 알아보도록 하겠습니다.

글이 긴 관계로, 2편으로 나눴습니다

1. IDE에 대한 설명 및 IDE 설치법(해당 글)

2. IDE기능 및 사용법

먼저 아두이노 IDE가 무엇이고, 왜 사용해야 하는지를 먼저 짚어보면 좋을 것 같습니다.

IDE란

IDE란 통합개발환경(Integrated Development Environment)을 뜻하는 약어입니다. 즉 내가 개발을 할 때에 필요한 모든 것들을 다 모아둔 환경이라는 것이죠. 아두이노를 개발할 때 필요한 각종 기능들을 한데 모아둔 소프트웨어를 아두이노 IDE라고 이야기합니다.

아두이노 IDE를 왜 사용하는가?

이유는 단순합니다. 아두이노를 사용하기 위해 아두이노IDE를 사용하는 것입니다. 물론 아두이노를 사양하는 방법은 아두이노IDE를 제외하고도 여러 방법이 있습니다. 그러나, IDE가 가장 편하기에 저 또한 IDE의 사용을 추천합니다.

 

그럼 이제 본격적으로 '아두이노 IDE'(이하 IDE로 표기)를 사용해 보러 갈까요?

IDE 설치하기

*본 블로그는 Windows 10 기준으로 설명을 드립니다. 타 OS에서는 다를 수 있으니 참고해 주시기 바랍니다.

*IDE다운로드를 Chrome에서 합니다. 이 점 참고하여 주시기 바랍니다.

IDE를 설치하기 위해서는 아두이노 공식 홈페이지에 접속해야 합니다.

https://www.arduino.cc/en/software 해당 링크로 접속하거나,

혹시라도 위 링크로 접속이 안 된다면, google에서 '아두이노 ide'라고 검색해서 빨간 박스 그려놓은 (Software | Arduino 적혀있는) 링크 클릭하여 사이트에 접속하면 됩니다.

아두이노ide 검색결과

 

사이트에 접속하고 나면 아래 사진과 같이 사이트가 나올 건데, 여기에서 빨간 박스 그려놓은 것(Windows win 7 and newer)을 클릭하면 됩니다.

아두이노 IDE 다운로드 페이지

이후 나오는 페이지에서는 'JUST DOWNLOAD'를 클릭하면 됩니다.

만약 아두이노 재단에 후원하고 싶은 분이 있다면 원하는 액수를 선택하고 'CONTRIBUTE &  DOWNLOAD' 클릭하면 됩니다.

아두이노 IDE 다운로드 페이지

이후 다운로드한 설치파일을 실행해 IDE 설치를 진행합니다.

설치파일 실행 시 뜨는 화면

'예' 누르고요.

I Agree 클릭합니다.

전부 선택한 후에 Next 클릭합니다. (광고성 프로그램 설치 옵션 없으니 안심하셔도 됩니다)

설치 경로 선택 화면입니다. 설치 경로를 바꿔야 하는 분은 이 단계에서 바꾸면 됩니다.

안 바꿔도 되는 분들은 그냥 install 클릭해 주면 됩니다.

저는 show detail을 눌러서 이렇게 표시가 되었습니다.

이런 식으로 쭉 설치를 진행하다 보면 이런 창이 뜰 수 있습니다.

3개 정도 뜰 건데, 전부 설치해 주면 됩니다.

completed가 뜨면, close 눌러서 설치프로그램을 종료하면 됩니다.

바탕화면에 아래 사진처럼 아두이노 아이콘이 있을 겁니다.

해당 아이콘을 클릭해서 아두이노 IDE를 켜보도록 하겠습니다.

와! 이제 우리는 아두이노 IDE를 켤 수 있습니다~

 

지금까지 아두이노 IDE가 무엇인지, 어떻게 설치하는지를 알아보았습니다.

다음 글에서 이어서 아두이노 IDE의 사용법에 대해서 알아보겠습니다.

그럼 다음 글에서 만나요~~

'Arduino > 기초' 카테고리의 다른 글

아두이노 기초 - 아두이노 IDE란(사용법)  (0) 2022.02.26
아두이노 기초 - 아두이노란  (0) 2021.01.12

안녕하세요, 고고메이커입니다.

 

이번 글에서는 가변저항을 사용하는 법에 대해 알아보려 합니다.

 

우선, 가변저항이란 무엇일까요?

말 그대로 변할 수 있는(가변) 저항이라는 것입니다.

가변저항은 극성이 따로 없지만, 저항 값을 출력하는 핀은 정해져 있습니다.

대부분의 가변저항들은 양 끝(또는 모여있는 두 핀)이 전원을 연결하는 곳이며, 나머지 한 곳이 저항값을 출력하는 핀입니다.

출력하는 값은 analoginput핀(아두이노 우노 기준 A0~A5)에서 받을 수 있으며, 값의 범위는 0~1023까지 입니다.

 

백문이 불여일견! 모르겠어도 한 번 실습을 해 봅시다.

 

실습1-기본익히기

우선, 가변저항의 값을 받아 시리얼창에 출력해 보겠습니다.

 

준비물 :

아두이노 UNO보드 · · · · · · · 1개

가변저항 · · · · · · · · · · · · 1개

MM 점퍼선 · · · · · · · · · · · 3개

 

회로는 이렇습니다.

이번 프로그램의 소스 코드입니다.

void setup() {
	Serial.begin(115200);
}

void loop() {
	Serial.println(analogRead(A0));
	delay(100);
}

이 코드를 실행시키고 아두이노 시리얼 창을 켜봅시다.

그리고 나서 가변저항을 돌리면 값이 변할 것입니다. 또한, +에 연결한 쪽으로 갈수록 값이 커질 것이고, -쪽으로 갈수록 값이 작아질 것입니다.

만약 건드리지 않는데 값이 변한다면, 문제가 있는 것입니다.

 

작동영상

실습2-응용하기

이번에는 가변저항을 가지고 LED의 밝기를 조절해 봅시다.

이 일을 하기 전에, 먼저 알아야 할 소프트웨어적인 부분이 있습니다.

바로 map함수인데요,

이 함수는 값의 범위를 줄일 수 있는 함수입니다.

구조는 이렇습니다.

map(주는 값, 기존 범위 최소값, 기존 범위 최고값, 원하는 범위 최소값, 원하는 범위 최고값)

다시 얘기하자면, 기존 범위에 있던 값을 새로운 범위에서 해당하는 값을 찾아주느 것입니다.

이 함수를 왜 쓸까요?

바로 analog input의 범위는 0~1023인데 비해, analog output의 범위는 0~255까지이기 때문입니다.

그렇다면 위와 같은 경우에 map함수를 어떻게 사용할가요?

map(analoginput, 0, 1023, 0, 255);

이렇게 사용하게 되겠죠.

 

자, 이야기는 이쯤에서 마치고 이제 실습을 한 번 해 봅시다!

 

준비물 :

아두이노 UNO보드 · · · · · · · 1개

220Ω(또는 330Ω) 저항 · · · · · 1개

LED · · · · · · · · · · · · · · · 1개

가변저항 · · · · · · · · · · · · 1개

MM 점퍼선 · · · · · · · · · · · 5개

 

회로는 이렇습니다.

이번 프로그램의 소스 코드입니다.

#define LED1 3

void setup() {
	Serial.begin(115200);
}

void loop() {
	Serial.println(analogRead(A0));
	analogWrite(LED1, map(analogRead(A0), 0, 1023, 0, 255));
}

이 코드를 실행시키면, LED의 밝기가 가변저항을 돌림에 따라 바뀔 것입니다.

 

작동영상

 

지금까지 다양한 방법으로 가변저항을 제어 해 보았습니다.

어땠나요? 아두이노와 조금 더 가까워 진 것 같나요?

저 고고메이커는 여러분들이 아두이노와 절친한 사이가 되기 바랍니다.

다음 글에서 또 만나요!

'Arduino' 카테고리의 다른 글

3. 아두이노 LED 제어  (1) 2021.02.11
2. 아두이노 기초 사용법  (0) 2021.02.11

안녕하세요, 고고메이커입니다.

LED란

오늘은 아두이노를 다루기 위한 기본적인 LED제어에 대해 공부 해 보겠습니다.

 

우선, LED란 무엇일까요?

LED또는 발광다이오드(앞으로 LED라고 얘기함)라고 불리는 이 부품은 빛이 나는 다이오드입니다.

'그럼 다이오드가 뭐냐?' 라고 물을 건데요, 다이오드는 전류가 한 쪽으로 흐르게 하는 부품입니다.

그렇다면 LED가 뭔지 감이 올 겁니다. LED는 특정 방향으로 전류가 흐를 때, 빛이 나는 부품입니다.

그렇기 때문에 LED는 항상 방향을 잘 지켜 꼽아야 합니다.

LED는 긴 다리가 +, 짧은 다리가 - 입니다.

 

또한, LED는 저항 값이 매우 작기 때문에 저항 없이 꼽으면 전기가 많이 통해서 보드나 LED가 탑니다.

꼭 주의하세요!!! (저도 이거 때문에 LED 많이 태우고, 보드 한 개 날릴 뻔 했어요 ㅠ.ㅠ)

 

실습1-기본익히기1

우선, LED 한 개를 깜박여 봅시다.

 

준비물 :

아두이노 UNO보드 · · · · · · · 1개

220Ω(또는 330Ω) 저항 · · · · · 1개

아무 LED · · · · · · · · · · · · 1개

MM 점퍼선 · · · · · · · · · · · 2개

회로

회로는 이렇습니다.

이번 프로그램의 소스 코드입니다.

LEDblink.ino
0.00MB

#define LED1 4 //LED의 핀번호 지정

void setup() {
	pinMode(LED1, OUTPUT); //LED핀을 출력으로 설정
}

void loop() {
	digitalWrite(LED1, HIGH); //LED를 켠다
	delay(1000); //1000ms 기다리기
	digitalWrite(LED1, LOW); //LED를 끈다
	delay(1000); //1000ms 기다리기
}

이 코드를 실행시키면, (적어도 회로만 잘 연결했으면, ) 1초 간격으로 LED가 깜박거릴 것입니다.

 

작동영상

 

실습2-응용해보기1

자, 이제 LED 깜박이는 것을 해 보았으니 이제 한 번 응용해 볼까요?

이번엔 빨강, 노랑, 초록 LED를 이용해 신호등을 만들어 봅시다.

 

준비물 :

아두이노 UNO보드 · · · · · · · 1개

220Ω(또는 330Ω) 저항 · · · · · 3개

빨강, 노랑, 초록 LED 각 · · · · · 1개

MM 점퍼선 · · · · · · · · · · · 4개

 

회로는 이렇습니다.

이번 프로그램의 소스 코드입니다.

다운로드 받을 수 있는 파일도 준비해 놓았습니다.

LEDjctsign.ino
0.00MB

#define LED_R 4 //빨강 LED핀 지정
#define LED_Y 3 //노랑 LED핀 지정
#define LED_G 2 //초록 LED핀 지정

void setup() {
	pinMode(LED_R, OUTPUT); //LED핀을 출력으로 지정
	pinMode(LED_Y, OUTPUT);
	pinMode(LED_G, OUTPUT);
}

void loop() {
	digitalWrite(LED_G, HIGH); //초록불이 켜짐
	delay(5000); //5000ms 기다림
	digitalWrite(LED_G, LOW);
	for(int i = 0; i < 5; i++) { //노랑 LED가 5번 깜박이게 만듦
		digitalWrite(LED_Y, HIGH);
		delay(500);
		digitalWrite(LED_Y, LOW);
		delay(500);
	}
	digitalWrite(LED_R, HIGH); //빨강 불이 켜짐
	delay(5000); //5000ms 기다림
	digitalWrite(LED_R, LOW);
}

 

이 코드를 실행시키면, 처음에 5초동안 초록 LED가 켜져 있다가 노랑 LED가 5번 깜박입니다. 그리고 빨강 LED가 5초동인 켜져 있게 됩니다.

 

작동영상

 

 

실습3-기본익히기2

디지털 출력으로 LED 다루기는 실컷 했으니, 한 번 아날로그 출력으로 놀아 봅시다.

 

우선, LED 한 개를 깜박여 봅시다.

 

준비물 :

아두이노 UNO보드 · · · · · · · 1개

220Ω(또는 330Ω) 저항 · · · · · 1개

아무 LED · · · · · · · · · · · · 1개

MM 점퍼선 · · · · · · · · · · · 2개

 

회로는 이렇습니다.

이번 프로그램의 소스 코드입니다.

다운로드 받을 수 있는 파일도 준비해 놓았습니다.

LED-analogWave.ino
0.00MB

#define LED1 3

void setup() {
	//아날로그 출력은 OUTPUT 설정 안 하셔도 됩니다.
}

void loop() {
	for(int i = 0; i < 255; i++) { //i가 255가 될 때 까지 반복
		analogWrite(LED1, i); //LED1의 출력값을 i로 설정
		delay(10);
	}
	for(int i = 255; i > -1; i--) { //i가 -1이 될 때 까지 반복
		analogWrite(LED1, i); //LED1의 출력값을 i로 설정
		delay(10);
	}
}

위에 코드에서, i > -1 이렇게 한 이유는 확실하게 LED를 끄기 위해서 입니다.

이 코드를 실행시키면, LED가 천천히 밝아졌다 꺼질 겁니다.

 

작동영상... 은 없습니다 ㅜ 

 

실습4-응용해보기2

어때요~ 여러분, 작동이 잘 되셨나요?

마지막으로 우리가 저번에 배웠던 아날로그 출력(PWM)을 이용한 작은 LED파도타기를 만들어 볼까 해요.

 

준비물 :

아두이노 UNO보드 · · · · · · · 1개

220Ω(또는 330Ω) 저항 · · · · · 3개

아무 LED · · · · · · · · · · · · 3개

MM 점퍼선 · · · · · · · · · · · 4개

 

아날로그 출력을 사용할 것이기 때문에 PWM핀에 LED를 꽂아야 하는 점, 잊지 마세요!

회로는 이렇습니다.

 

 

이번 프로그램의 소스 코드입니다.

#define LED1 3
#define LED2 5
#define LED3 6
#define WAIT 5 //LED가 밝아지는 속도

void setup() { //처음에 켜지는 효과는 1번만 필요하니까
	for(int i = 0; i < 255; i++) {
		analogWrite(LED1, i);
		delay(WAIT);
	}
}
void loop() {
	for(int i = 0; i < 255; i++) {
		analogWrite(LED1, 255-i); //LED가 점차 꺼지는 효과
		analogWrite(LED2, i);
        delay(WAIT);
	}
	analogWrite(LED1, 0);
	for(int i = 0; i < 255; i++) {
		analogWrite(LED2, 255-i); //LED가 점차 꺼지는 효과
		analogWrite(LED3, i);
        delay(WAIT);
	}
	analogWrite(LED2, 0);
	for(int i = 0; i < 255; i++) {
		analogWrite(LED1, i);
		analogWrite(LED3, 255-i);
		delay(WAIT);
	}
	analogWrite(LED3, 0);
}

 

이 코드를 실행시키면, 밑에 있는 LED 부터 순차적으로 켜졌다가 꺼집니다

 

지금까지

다앙한 방법으로 LED를 제어 해 보았습니다.

어땠나요?

이상 고고메이커였습니다.

다음 글에서 또 만나요!

'Arduino' 카테고리의 다른 글

4. 아두이노 가변저항 사용  (0) 2021.02.12
2. 아두이노 기초 사용법  (0) 2021.02.11

안녕하세요, 고고메이커입니다.

출처: https://brandslogos.com/a/arduino-logo-1/

 

이번 시간에는 아두이노의 기초적인 사용법에 대해 이야기 해 볼까 합니다.

아두이노를 컴퓨터에 연결시켜서 아두이노에 있는 LED를 깜박이게 하는 것 까지 해 봅시다.

 

 

글을 읽으시는 여러분들은 지금 당장 아두이노를 컴퓨터에 연결하고 작동을 하게 하고 싶으시겠지만, 아쉽게도 바로 작동이 되지는 않습니다.

 

우선, 컴퓨터에 *아두이노IDE를 깔아야 합니다

*IDE: Integrated Development Environment의 약자로 통합 개발 환경을 지칭하는 단어이다. (위키백과)

어려워 하지 마시고 천천히 같이 해 봅시다.

 

1. 아두이노 홈페이지에 접속한다.

2. 아래의 사진처럼 software -> downloads를 클릭한다.

아두이노 홈페이지.

3. 아래의 사진과 같은 페이지가 나왔다면, 빨간색 동그라미 쳐져 있는 부분을 클릭하여 아두이노IDE 설치하는 파일을 다운로드 받는다.

아두이노IDE를 다운로드 받을 수 있는 페이지

4. 더 나은 아두이노를 사용할 수 있게 아두이노에 후원을 해 주고 싶다면, 원하는 금액만큼 후원하고 다운로드 하시면 되고, 그냥 다운받고 싶으신 분은 just download 하시면 됩니다.

5. 설치파일이 다 다운로드 되었으면, 설치파일을 실행하여 아두이노 IDE를 설치합니다.

(사진은 제 상황상 찍지는 못하였습니다)

중간에 흰색 창이 뜨면서 뭘 설치하시겠습니까라고 묻는데, OK 하시고 모든 것 설치하셔야 합니다

(이게 컴퓨터가 아두이노를 인식할 수 있게 하는 드라이버입니다. 혹시라도 제대로 설치되지 않는다면 컴퓨터에서 아두이노를 제대로 인식하지 못할 수 있습니다.

 

6. 아두이노IDE를 실행시킵니다.

아두이노IDE 스플레시 화면

그리고 나서 켜지면 아래와 같은 창이 나옵니다.

아두이노 IDE다크테마 적용 모습...

그렇다면 위와 같은 모양이 나올 것입니다(전 다크테마를 적용시켜 놓아서 화사하게 빛나는 여러분들의 IDE와는 다르게 생겼습니다.)

 

이제 절반이 끝났습니다!!!

 

지금부터 본격적으로 아두이노를 작동시켜보자구요~

혹시라도 아두이노를 사실 때, 호환보드 종류 중 CH340&CH341 계열을 구매하셨다면 드라이버를 따로 설치하셔야 합니다. 

 

다음 글에서 계속~~

1. 파일 - 예제 - 01.Basics - Blink를 클릭해 줍니다

2. 이제 아두이노의 포트를 잡아준다.

(아두이노는 시리얼 통신을 이용하여 컴퓨터와 데이터를 주고받는데, 그 통신을 위한 포트를 설정하는 것이다.)

2-1. 윈도우 검색창에 장치 관리자라고 검색한다.

 

'Arduino' 카테고리의 다른 글

4. 아두이노 가변저항 사용  (0) 2021.02.12
3. 아두이노 LED 제어  (1) 2021.02.11

안녕하세요, 고고메이커 입니다.

 

*시작에 앞서, 한글시계의 원작자님은 이호민 님입니다.

*제가 공유하는 모든 파일과 자료들을 개인 블로그에 올리시거나 무단 복제&도용하지 않으시길 바랍니다.

 

글의 내용이 많아 총 5편으로 나누었습니다

1. 프로젝트 소개

2. 외부, 내부 설계

3. 하드웨어 구현

4. 소프트웨어 구현

5. 향후 개선점(Ver.2, Ver.3)

 

-서론

한글시계 v1제작기 글은 이 글을 마지막으로 끝이 났습니다~!! (아주 즐겁군요)

그러나, 한글시계 v1을 제작하면서 많이 아쉬운 부분들이 있었기에, 아쉬운 점을 개선하고 새로운 기능을 추가한 v2, v3를 계획중에 있습니다!

-본론

우선 v2는 v1의 가장 큰 단점인 아두이노가 밖에 나와있다는 점을 개선시켜 아두이노를 한글시계 내부에 배치할 것입니다. 아무래도 전자부품이 밖에 노출된다면 문제점이 많겠죠? 그러한 것을 깔끔하게 해결할 것입니다.

또한, 알람 기능을 추가, 한글시계로 알람을 설정하면, 해당 시간에 부저로 소리가 나는 등의 알람기능을 구현할 것입니다.

마지막으로 외부 밝기에 반응하여 한글시계의 밝기가 변하는 자동 밝기 조절 기능을 추가할 것입니다.

v3는 시계의 본질적인 기능에 집중하기보다, 다른 시계&제품들과 차별성을 두는 기능들을 추가하려 합니다. 현재 계획 중인 것은 한글시계 안에 온습도 센서를 탑재하여 집안의 온습도를 표시하여 주고, 와이파이 모듈을 활용, 미세먼지 데이터를 받아와서 보여주며, 가능하다면 한글시계 배열도 바꾸려 합니다.

-결론

길고도 긴 한글시계를 향한 여정이 모두 끝마쳤습니다!

잘은 못 썼지만, 제가 적은 이 글이 조금이나마 읽는 분들에게 도움이 되면 하는 바람입니다.

 

이상 고고메이커였습니다.

다음 글에서 만나요~!

안녕하세요, 고고메이커 입니다.

 

*시작에 앞서, 한글시계의 원작자님은 이호민 님입니다.

*제가 공유하는 모든 파일과 자료들을 개인 블로그에 올리시거나 무단 복제&도용하지 않으시길 바랍니다.

 

글의 내용이 많아 총 5편으로 나누었습니다

1. 프로젝트 소개

2. 외부, 내부 설계

3. 하드웨어 구현

4. 소프트웨어 구현

5. 향후 개선점(Ver.2, Ver.3)

 

한글시계 코드, Visual Studio로 2달정도 작업하였다.

-서론

이번 글에서는 한글시계 소프트웨어 구현에 대해 이야기해 보려 합니다.

두 달 걸릴 일이 아니었음에도, 온전히 한글시계에만 집중하고 살 순 없었기에, 하루하루 조금씩 조금씩 코딩하다 보니 이렇게 시간이 오래 걸렸네요...

저번 글에서 핵심적인 하드웨어를 조립하였다면, 그 하드웨어를 제어하는 소프트웨어에 대해 알아봅시다.

*코드는 개인의 상황에 따라 정상적으로 작동되지 않을 수도 있습니다.

저는 visual studio community 2019에서 코딩하였고, 윈도 10 home 64bit, Arduino ver.1.8.13입니다.

아두이노 ide에서 업로딩 하였을 때, 정상작동하는 것은 확인하였습니다.

 

-본론

65535. 제작자는 코딩을 어떻게 하였는가

저는 차근차근 하나하나 코딩해 나갔습니다.

1. 우선, 다 조립이 되고 난 후, 네오픽셀이 잘 작동되는지 보기 위해, 네오픽셀 테스트 코드를 사용해 보면서 문제없는지 테스트해 보고,

2. 네오픽셀에 시간을 표시할 수 있는 코드들을 먼저 작성한 후

3. 그 당시 DS1302를 가지고 있었어서 그걸 이용해 코딩을 진행, 성공했다.

- 그러나, 이렇게 짠 코드에는 치명적 오류가 있었기에 오류를 고침과 동시에 시계에 몇 가지 기능을 추가하게 된다.

4. 우선 표시되는 오류를 1차적으로 해결하고

5. 버튼을 추가한 후, 버튼 2개를 가지고 하나는 LED, 하나는 시간을 제어할 수 있도록 코딩했다.

- 그러나 버튼 1개에서 2가지 동작을 하도록 구현해야 했고, 이것은 굉장히 힘들었다.

- 구글링을 해보고 별짓을 다 해봐도 해결이 안 되었다...

- 엎친데 덮친 격으로 RTC모듈마저 오차값이 너무 커 실사용이 불가능할 정도가 되어 내부 millis함수를 사용하여 시계를 만들기로 하였다.

6. 내부 millis함수로 시계를 사용할 수 있게 하였고

7. 버튼 문제에 거의 한 달을 쏟은 결과 성공할 수 있었다.

8. 시간을 millis로 재는 것이 아닌, DS3231 모듈을 이용하기 위하여 또다시 코드를 변경하고

9. 이로 인해 발생한, 그리고 최종 테스트하며 발생한 문제들을 모두 잡아내는 데 성공한다.

 

특히, 가장 뿌듯했던 순간은 버튼이 제대로 동작할 때였는데, 묵은 체증이 싹 가시는 것 같았다.

0. 전반적으로

아두이노 코드 파일이 2개로 나뉘어 있는 것을 볼 수 있습니다. 위에서 보는 것과 같이, 코드를 메인 파트와 함수 파트로 나눠 두었는데, 이렇게 함으로써 코드를 전반적으로 동시에 보기 쉽고 관리하기 좋게 만들었습니다.

코드는 3 부분으로 나눠 설명할 수 있을 것 같습니다.

1. 해더 파일, 변수 선언

2. void setup(), void loop()

3. 사용자 지정 함수

 

그런데, 코드는 설명할 게 너무 많기도 하고, 자료를 올려놓으면 직접 분석을 해 보는 것이 훨씬 빠를 것 같아 코드만 올려놓습니다.

혹시라도 코드에 대해 추가로 알고 싶은 점이 있으시다면 댓글로 문의 바랍니다.

 

-결론

어찌 된 건지 더 싱겁게 끝나버렸네요...

이상 고고메이커였습니다!

다음 글에서 만나요~

 

@코드@

두 파일은 연결된 파일들입니다.

han_clock.ino
0.00MB
main_functions.ino
0.01MB

안녕하세요, 고고메이커 입니다.

 

*시작에 앞서, 한글시계의 원작자님은 이호민 님입니다.

*제가 공유하는 모든 파일과 자료들을 개인 블로그에 올리시거나 무단 복제&도용하지 않으시길 바랍니다.

 

글의 내용이 많아 총 5편으로 나누었습니다

1. 프로젝트 소개

2. 외부, 내부 설계

3. 하드웨어 구현

4. 소프트웨어 구현

5. 향후 개선점(Ver.2, Ver.3)

한글시계 회로

-서론

이번 글에서는 한글시계 하드웨어 구현에 대해 얘기해 보고자 합니다.

저번 글에서 외관에 대해 이야기를 했다면, 이번 시간에는 핵심 장치인 전자회로에 대해 알아봅시다.

*제가 올린 자료와 다른 부품을 사용하거나 제 자료와 다르게 회로를 연결하셨다면 정상적인 작동을 보장할 수 없습니다.

-본론

0. 부품

우선, 전자회로를 만들기 위해서는 재료가 필요하겠지요?

리스트에 걸린 링크들은 제가 구매한 곳들의 링크입니다.

※홍보나 후원, 광고는 일체 없습니다

재료:

아두이노 나노의 경우 가격 아끼시려면 핀 납땜 안 되신 것을 구매하시면 됩니다. 사실 이걸 추천합니다마는, 난이도가 상당히 높기에, 그다지 권하지는 않습니다.(브레드보드에 직결하는 나노의 특성상 브레드보드의 가용 핀이 많이 줄어들게 됩니다. 그렇기에 회로 구성을 할 때 어려움을 겪을 수 있습니다)

RTC모듈은 DS3231을 사용하시는 것을 추천드립니다. 우선 일반적으로 구할 수 있는 RTC모듈 중에는 정확도가 가장 높기 때문입니다. 혹시라도 이 시계를 제작 후 실사용(1년 이상)을 하실 분들은 DS3231 모듈의 특성상 처리를 해야 하는 부분이 있습니다. 해당 부분에 대해 정확히 숙지하고 조치를 취하시거나, 다른 RTC부품을 이용하시는 것을 권장합니다.

(진짜 정보인지는 모르겠으나, 혹시나 때문에 적어둡니다)

네오픽셀은 RGB모듈을 구매하시기 바랍니다. RGBW모듈 구매 시 코드가 맞지 않기에 상당 부분 수정되어야 합니다.

저항은 네오픽셀의 신호 단자를 보호하기 위함입니다. 없어도 작동은 되나 위험합니다.

네오픽셀은 전원에 100~1000uF 콘덴서를 연결하는 것을 권장합니다. 혹시라도 콘덴서를 연결하실 분은 구매하시면 되겠습니다. 그러나, 네오픽셀 전원이 아두이노 내부 전원을 받아 동작하기에, 혹시라도 이렇게 회로를 구성하였을 때, 무슨 문제가 생길지 정확히 모르기에 저로서는 추천드리지 않습니다(아시는 분 있으면 댓글로 알려주시면 감사하겠습니다).

 

1. 회로 그림

회로그림. fritzing을 통해 그렸다.

 

각종 회로 사진, 회로 설명을 읽으면서 한 번씩 참고하면 도움이 될 것이다.
한글시계 내부 네오픽셀 배치

하나하나 살펴봅시다.

회로는 간단합니다.

나노는 그냥 브레드보드에 꽂으면 되는데, 반드시 디지털 핀이 많은 쪽에 3칸이 남도록 해서 꽂아야 합니다.

텍트 버튼은 아두이노 나노의 2,3번 핀과 연결이 됩니다. 그리고 저항이 연결되지 않고 버튼의 한쪽은 아두이노와 한쪽은 그라운드와 연결이 되어 있는 것을 볼 수 있는데, 이는 아두이노 내부 풀업 저항을 사용하기 때문입니다.

RTC는 그림 안에서 핀 배열 때문에 실제 연결되는 것과는 반대로 돌려져 있습니다. 그러나 실제 조립 시 선을 위의 그림처럼 연결한다면 문제가 생기지 않습니다.

버튼은 여러 가지 기타 사정으로 선 연결이 이상한데, 신호선은 위의 회로도처럼 연결해야 하지만, 그라운드는 딱히 관계없습니다.

네오픽셀 신호선은 회로를 배치할 공간이 없어 어쩔 수 없이 전원선이 들어가는 부분을 사용하게 되었습니다.

콘덴서는 사용하려면 위의 그림과 같이 배치하면 됩니다.

선은 최대한 깔끔하게 작업하기 위해 24 AWG단선을 길이에 맞게 잘라 사용하였습니다.

2. 네오픽셀의 고정

네오픽셀의 경우, 한글시계가 6*6배열이기에, 네오픽셀 스트립을 LED 6개씩 총 6개를 잘라서 각각의 스트립들을 선을 연결해 배치하였습니다.

-결론

글을 쓰다 보니 내용이 참... 별로 없네요 ㅎ.ㅎ

이상 고고메이커였습니다!
다음 글에서 만나요~

+ Recent posts