업로드하다: 아두이노에 코드를 올리다. 즉, 아두이노에 작성한 코드를 올리는 것입니다.컴파일하다: 사람이 쓴 코드를 아두이노가 알아들을 수 있게 하는 작업을 컴파일(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 에 해당하는 부분은 상태창이라고 볼 수 있습니다. 컴파일 및 업로딩 할 때에 정보가 이곳에 뜹니다.
IDE란 통합개발환경(Integrated Development Environment)을 뜻하는 약어입니다. 즉 내가 개발을 할 때에 필요한 모든 것들을 다 모아둔 환경이라는 것이죠. 아두이노를 개발할 때 필요한 각종 기능들을 한데 모아둔 소프트웨어를 아두이노 IDE라고 이야기합니다.
아두이노 IDE를 왜 사용하는가?
이유는 단순합니다. 아두이노를 사용하기 위해 아두이노IDE를 사용하는 것입니다. 물론 아두이노를 사양하는 방법은 아두이노IDE를 제외하고도 여러 방법이 있습니다. 그러나, IDE가 가장 편하기에 저 또한 IDE의 사용을 추천합니다.
그럼 이제 본격적으로 '아두이노 IDE'(이하 IDE로 표기)를 사용해 보러 갈까요?
IDE 설치하기
*본 블로그는 Windows 10 기준으로 설명을 드립니다. 타 OS에서는 다를 수 있으니 참고해 주시기 바랍니다.
#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);
}
그러나, 한글시계 v1을 제작하면서 많이 아쉬운 부분들이 있었기에, 아쉬운 점을 개선하고 새로운 기능을 추가한 v2, v3를 계획중에 있습니다!
-본론
우선 v2는 v1의 가장 큰 단점인 아두이노가 밖에 나와있다는 점을 개선시켜 아두이노를 한글시계 내부에 배치할 것입니다. 아무래도 전자부품이 밖에 노출된다면 문제점이 많겠죠? 그러한 것을 깔끔하게 해결할 것입니다.
또한, 알람 기능을 추가, 한글시계로 알람을 설정하면, 해당 시간에 부저로 소리가 나는 등의 알람기능을 구현할 것입니다.
마지막으로 외부 밝기에 반응하여 한글시계의 밝기가 변하는 자동 밝기 조절 기능을 추가할 것입니다.
v3는 시계의 본질적인 기능에 집중하기보다, 다른 시계&제품들과 차별성을 두는 기능들을 추가하려 합니다. 현재 계획 중인 것은 한글시계 안에 온습도 센서를 탑재하여 집안의 온습도를 표시하여 주고, 와이파이 모듈을 활용, 미세먼지 데이터를 받아와서 보여주며, 가능하다면 한글시계 배열도 바꾸려 합니다.
-결론
길고도 긴 한글시계를 향한 여정이 모두 끝마쳤습니다!
잘은 못 썼지만, 제가 적은 이 글이 조금이나마 읽는 분들에게 도움이 되면 하는 바람입니다.
아두이노 나노의 경우 가격 아끼시려면 핀 납땜 안 되신 것을 구매하시면 됩니다. 사실 이걸 추천합니다마는, 난이도가 상당히 높기에, 그다지 권하지는 않습니다.(브레드보드에 직결하는 나노의 특성상 브레드보드의 가용 핀이 많이 줄어들게 됩니다. 그렇기에 회로 구성을 할 때 어려움을 겪을 수 있습니다)
RTC모듈은 DS3231을 사용하시는 것을 추천드립니다. 우선 일반적으로 구할 수 있는 RTC모듈 중에는 정확도가 가장 높기 때문입니다. 혹시라도 이 시계를 제작 후 실사용(1년 이상)을 하실 분들은 DS3231 모듈의 특성상 처리를 해야 하는 부분이 있습니다. 해당 부분에 대해 정확히 숙지하고 조치를 취하시거나, 다른 RTC부품을 이용하시는 것을 권장합니다.
(진짜 정보인지는 모르겠으나, 혹시나 때문에 적어둡니다)
네오픽셀은 RGB모듈을 구매하시기 바랍니다. RGBW모듈 구매 시 코드가 맞지 않기에 상당 부분 수정되어야 합니다.
저항은 네오픽셀의 신호 단자를 보호하기 위함입니다. 없어도 작동은 되나 위험합니다.
네오픽셀은 전원에 100~1000uF 콘덴서를 연결하는 것을 권장합니다. 혹시라도 콘덴서를 연결하실 분은 구매하시면 되겠습니다. 그러나, 네오픽셀 전원이 아두이노 내부 전원을 받아 동작하기에, 혹시라도 이렇게 회로를 구성하였을 때, 무슨 문제가 생길지 정확히 모르기에 저로서는 추천드리지 않습니다(아시는 분 있으면 댓글로 알려주시면 감사하겠습니다).
1. 회로 그림
회로그림. fritzing을 통해 그렸다.
각종 회로 사진, 회로 설명을 읽으면서 한 번씩 참고하면 도움이 될 것이다.한글시계 내부 네오픽셀 배치
하나하나 살펴봅시다.
회로는 간단합니다.
나노는 그냥 브레드보드에 꽂으면 되는데, 반드시 디지털 핀이 많은 쪽에 3칸이 남도록 해서 꽂아야 합니다.
텍트 버튼은 아두이노 나노의 2,3번 핀과 연결이 됩니다. 그리고 저항이 연결되지 않고 버튼의 한쪽은 아두이노와 한쪽은 그라운드와 연결이 되어 있는 것을 볼 수 있는데, 이는 아두이노 내부 풀업 저항을 사용하기 때문입니다.
RTC는 그림 안에서 핀 배열 때문에 실제 연결되는 것과는 반대로 돌려져 있습니다. 그러나 실제 조립 시 선을 위의 그림처럼 연결한다면 문제가 생기지 않습니다.
버튼은 여러 가지 기타 사정으로 선 연결이 이상한데, 신호선은 위의 회로도처럼 연결해야 하지만, 그라운드는 딱히 관계없습니다.
네오픽셀 신호선은 회로를 배치할 공간이 없어 어쩔 수 없이 전원선이 들어가는 부분을 사용하게 되었습니다.
콘덴서는 사용하려면 위의 그림과 같이 배치하면 됩니다.
선은 최대한 깔끔하게 작업하기 위해 24 AWG단선을 길이에 맞게 잘라 사용하였습니다.
2. 네오픽셀의 고정
네오픽셀의 경우, 한글시계가 6*6배열이기에, 네오픽셀 스트립을 LED 6개씩 총 6개를 잘라서 각각의 스트립들을 선을 연결해 배치하였습니다.