์ด๋ ๋ ๋๋ ๊ฐ์ ธ์ฌ ๋ฏธ์น ์๊ฐ์ด ์์๋ค
๋๋ ํ๋ก์ ํธ๋ฅผ Nanonyam(๋๋
ธ์)์ด๋ผ๊ณ ๋ถ๋ ๊ณ ๋ก๊ณ ๊น์ง ์๊ฐํด๋์ต๋๋ค(5๋ถ ๋์ ๊ทธ๋ฆผ์ ๊ทธ๋ ธ์ต๋๋ค).
Arduino์ ๊ด์ ์์ ์๊ฐํ๋ ์ฌ๋๋ค์๊ฒ Nanonyam์ Windows๋ฅผ ์ ์ดํ๊ธฐ ์ํ ๊ฐ์ Arduino ๋ฐฉํจ๋ผ๊ณ ๋งํ ์ ์์ต๋๋ค.
์ฆ, Nanonyam์ AVR ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ์ฉ ํ์จ์ด(ATMEGA2560 ๊ถ์ฅ)๋ฅผ ๋ฐ์ดํธ์ฝ๋๋ก ์ฌ์ฉํ๋ ๊ฐ์ ๋จธ์ ์ ๋๋ค. ์ด ๊ฐ์ ๋จธ์ ๋ด๋ถ์๋ AVR ์ฝ์ด ์๋ฎฌ๋ ์ดํฐ๊ฐ ์์ง๋ง 0x0060์์ 0x01FF๊น์ง์ SRAM ์ฃผ์์ ์๋ ์ฃผ๋ณ ์ฅ์น ๋์ ๊ฐ์ ๊ธฐ๋ฅ(Windows API ๊ธฐ๋ฅ ํฌํจ)์ ๋ํ ํน์ ์ธํฐํ์ด์ค๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์์ ์ฆ์ ์ดํดํ๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํฉ๋๋ค. Nanonyam์ ์ฝ๋๋ ์๋ฅผ ๋ค์ด ํ์ผ ์ญ์ ๋๋ ๋์คํฌ ํฌ๋งท ๊ธฐ๋ฅ์ ์ค์๋ก ํธ์ถํ์ง ์๋๋ก ์ง์ ๋ ๋ฉ๋ชจ๋ฆฌ ๋ฒ์์ ์ก์ธ์คํ ์ ์์ด์ผ ํฉ๋๋ค. 0x0200์์ 0xFFFF๊น์ง์ ๋๋จธ์ง SRAM ๋ฉ๋ชจ๋ฆฌ ๋ฒ์(์ค์ ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ๋ณด๋ค ๋ ๋ง์)๋ ์ด๋ค ๋ชฉ์ ์ผ๋ก๋ ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ค์ ๋ง์ดํฌ๋ก ์ปจํธ๋กค๋ฌ์ ํ์จ์ด (๋๋ ๋ค๋ฅธ ์ํคํ ์ฒ์ ํ์จ์ด)๋ฅผ ์ค์๋ก ์คํํ๋ ๊ฒ์ ๋ํ ํน๋ณํ ๋ณดํธ ๊ธฐ๋ฅ์ด ์์์ ๋ฐ๋ก ์ ์ ์์ต๋๋ค. "์ํํ"๊ธฐ๋ฅ์ ํ์ฑํํ๊ธฐ ์ ์ ํน์ํ ๊น๋ค๋ก์ด ๊ฐ์ ๊ธฐ๋ฅ์ ํธ์ถํด์ผํฉ๋๋ค. ๋ค๋ฅธ ๋ณด์ ๊ธฐ๋ฅ๋ ์์ต๋๋ค.
Nanonyam์ฉ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๋ ค๋ฉด ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. Nanonyam ๊ฐ์ ๋จธ์ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ค์ด๋ก๋
Nanonyam์ ๊ฐ์ ์ฉ ๋ฐ ์์ ์ฉ์ผ๋ก ๋ฌด๋ฃ์ ๋๋ค. Nanonyam ํ๋ก๊ทธ๋จ์ "์๋ ๊ทธ๋๋ก" ์ ๊ณต๋ฉ๋๋ค. ์์ค ์ฝ๋๋ ์ ๊ณต๋์ง ์์ต๋๋ค.
์ด ํ๋ก๊ทธ๋จ์ ํ์ฌ ํ
์คํธ ๋จ๊ณ์ ์์ต๋๋ค. Windows์ฉ ๊ฐ๋จํ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ์ ์๋ ์ฝ 200๊ฐ์ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌํํ์ต๋๋ค.
๋ถ๋ช
ํ ์ฝ๋์ ๋ฉ๋ชจ๋ฆฌ๊ฐ 256kB์ ๋ถ๊ณผํ๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๊ฐ์ ๋จธ์ ์์ ๋ณต์กํ ๊ฒ์ ์์ฑํ๋ ๊ฒ์ ์๋ํ์ง ์์ต๋๋ค. ๋ฐ์ดํฐ๋ ๋ณ๋์ ํ์ผ์ ์ ์ฅํ ์ ์์ผ๋ฉฐ ๊ทธ๋ํฝ ๋ถ๋ถ์ ๋ฒํผ๋ ์ธ๋ถ์์ ๊ตฌํ๋ฉ๋๋ค. ๋ชจ๋ ๊ธฐ๋ฅ์ ๋จ์ํ๋๊ณ 8๋นํธ ์ํคํ
์ฒ์ ๋ง๊ฒ ์กฐ์ ๋ฉ๋๋ค.
Nanonyam์์ ๋ฌด์์ ํ ์ ์๋์? ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์๊ฒผ์ต๋๋ค.
ํ๋ก๊ทธ๋จ ๋ธ๋ก ๊ฐ๋ฐ
ํ๋ 128x64 ๋ํธ ๊ทธ๋ํฝ ๋์คํ๋ ์ด๋ฅผ ์ํ ๋ณต์กํ ๋ฉ๋ด๋ฅผ ๋์์ธํด์ผ ํ์ต๋๋ค. ํฝ์ ์ด ์ด๋ป๊ฒ ๋ณด์ด๋์ง ํ์ธํ๊ธฐ ์ํด ํ์จ์ด๋ฅผ ์ค์ ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ์ ์ง์์ ์ผ๋ก ๋ก๋ํ๊ณ ์ถ์ง ์์์ต๋๋ค. ๊ทธ๋์ ๋๋ ธ์์ด๋ผ๋ ์์ด๋์ด๊ฐ ํ์ํ์ต๋๋ค. ์๋ ๊ทธ๋ฆผ์ ๋์ผํ ๋ฉ๋ด์ ์๋ ํญ๋ชฉ ์ค ํ๋์ ์ค์ OLED ๋์คํ๋ ์ด ์ด๋ฏธ์ง๋ฅผ ๋ณด์ฌ์ค๋๋ค. ์ด์ ์ค์ ์ฅ์น ์์ด๋ ์์ ํ ์ ์์ต๋๋ค.
Nanonyam(์ต์ข
์์ด๋์ด์์)์ ๊ทธ๋ํฝ(๋์คํ๋ ์ด ๋ฐ ํ์๊ธฐ ์๋ฎฌ๋ ์ด์
๊ฐ๋ฅ), ํ์ผ(๋ก๊ทธ ์์ฑ, ํ
์คํธ ๋ฐ์ดํฐ ์ฝ๊ธฐ ๊ฐ๋ฅ) ์์
์ ์ํ ๊ธฐ๋ฅ์ด ์์ผ๋ฏ๋ก ๋ง์ดํฌ๋ก ์ปจํธ๋กค๋ฌ์ฉ ํ๋ก๊ทธ๋จ ๋ธ๋ก์ ์์
ํ๋ ๋ฐ ์ ์ฉํ ๋๊ตฌ์
๋๋ค. COM ํฌํธ๊ฐ ์๋ ํค๋ณด๋(๋์์ ์ต๋ 10๊ฐ์ ๋ฒํผ์ ์ฝ์ ์ ์์)(๋ณ๋ ํญ๋ชฉ ์์).
๋น ๋ฅธ ํ๋ก๊ทธ๋จ ๋ง๋ค๊ธฐ
์๋ฅผ ๋ค์ด 100500๊ฐ์ ํ ์คํธ ํ์ผ์ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ๊ฐ๊ฐ์ ์ด๊ณ ๊ฐ๋จํ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ผ ์ฝ๊ฐ ์์ ํ๊ณ ์ ์ฅํ๊ณ ๋ซ์์ผ ํฉ๋๋ค. ๋น์ ์ด ํ์ด์ฌ ๋ง์คํฐ๋ผ๋ฉด ์ถํํฉ๋๋ค. ๋น์ ์ ๋ชจ๋ ๊ฒ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋น์ ์ด ๊ฐํ๋ arduino(๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ๋ค์ด ๋ง์ด ์๋ ๊ฒฝ์ฐ)๋ผ๋ฉด Nanonyam์ด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ด Nanonyam์ ๋ ๋ฒ์งธ ๋ชฉํ์ ๋๋ค. ํ ์คํธ ์ฒ๋ฆฌ, ์คํฌ๋ฆฐ์ท ์ฐ๊ธฐ ๋๋ ์์คํ ์ ํค ์ ๋ ฅ ์๋ฎฌ๋ ์ด์ (๊ทธ๋ฐ๋ฐ ๋ชจ๋ ์ด๋ฏธ ์กด์ฌํจ)๊ณผ ๊ฐ์ ๋ง์ ์ ์ฉํ ๊ธฐ๋ฅ๊ณผ ์ผ์์ ์ธ ์์ ์ ํด๊ฒฐํ๊ธฐ ์ํ ๋ค๋ฅธ ๋ง์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๊ฒ์ ๋๋ค .
COM ํฌํธ๋ฅผ ํตํ ํ๋์จ์ด ํ ์คํธ
Nanonyam์ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ผ ์๋ํ๋ ํฐ๋ฏธ๋ ์ญํ ์ ํ ์ ์์ต๋๋ค. ์์ ๋ฉ๋ด๋ฅผ ๊ทธ๋ ค ์ฅ์น๋ฅผ ์ ์ดํ๊ณ ํฌํธ์์ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ๋ถ์์ ์ํด ํ์ผ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ฝ์ ์ ์์ต๋๋ค. ๊ฐ๋จํ ๋ฒ์ถ์ผ ์ธ์คํธ๋ฃจ๋จผํธ ์ปจํธ๋กค ํจ๋์ ์์ฑํ ๋ฟ๋ง ์๋๋ผ ํ๋์จ์ด์ ๊ฐ๋จํ ๋๋ฒ๊น ๋ฐ ๋ณด์ ์ ์ํ ํธ๋ฆฌํ ๋๊ตฌ์ ๋๋ค. ํ์๊ณผ ์ ์ ๊ณผํ์๋ค์๊ฒ ์ด ํ๋ก์ ํธ๋ ๋งค์ฐ ์ ์ฉํ ์ ์์ต๋๋ค.
ํ๋ก๊ทธ๋๋ฐ ๊ต์ก
๊ทธ๋ฌ๋ ์ ์ฒด Arduino ํ๋ก์ ํธ์ ๋ง์ฐฌ๊ฐ์ง๋ก Nanonyam์ ์ฃผ์ ์ ์ฉ์ฑ์ ๊ธฐ๋ฅ, ์ธํฐํ์ด์ค ๋ฐ ๋ถํธ๋ก๋์ ๋จ์ํ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด ํ๋ก์ ํธ๋ ์ด๋ณด์ ํ๋ก๊ทธ๋๋จธ์ arduino ์์ค์ ๋ง์กฑํ๋ ์ฌ๋๋ค์๊ฒ ํฅ๋ฏธ๋ก์ธ ๊ฒ์ ๋๋ค. ๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ๋๋ ํญ์ WinAVR ๋๋ AVR Studio๋ฅผ ์ฌ์ฉํ์ง๋ง ์ด์ ๋ธ๋ฌ๋ก ์์ํ๊ธฐ ๋๋ฌธ์ ์์ง arduino๋ฅผ ์์ธํ ์ฐ๊ตฌํ์ง ์์์ต๋๋ค. ๋ฐ๋ผ์ ์๋์ ์์ ํ๋ก๊ทธ๋จ์ ์ฝ๊ฐ ์๋ชป๋์์ง๋ง ๊ฝค ์ ์๋ํฉ๋๋ค.
์๋ ํ๋ธ๋ฅด!
์ผ๋ถ Nanonyam ๊ธฐ๋ฅ์ ์ต์ํด์ง๊ณ ๊ฐ๋จํ ํ๋ก๊ทธ๋จ์ ์์ฑํ ๋์ ๋๋ค. ์ฐ๋ฆฌ๋ Arduino๋ก ์์ฑํ์ง๋ง ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ์๋์ง๋ง ์ง๊ธ ํ ์์๋ ๋ฐฉ๋ฒ์ผ๋ก ์์ฑํฉ๋๋ค (์์ง์ด ํ๊ฒฝ์ ์ ํ์ ํ์ง ๋ชปํ๋ค๊ณ ์ด๋ฏธ ๋งํ์ต๋๋ค). ๋จผ์ ์ ์ค์ผ์น๋ฅผ ๋ง๋ค๊ณ Mega2560 ๋ณด๋๋ฅผ ์ ํํฉ๋๋ค.
์ค์ผ์น๋ฅผ ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ณต์ฌ
#include <stdio.h>
#include "NanonyamnN_System_lib.c"
#include "NanonyamnN_Keyboard_lib.c"
#include "NanonyamnN_File_lib.c"
#include "NanonyamnN_Math_lib.c"
#include "NanonyamnN_Text_lib.c"
#include "NanonyamnN_Graphics_lib.c"
#include "NanonyamnN_RS232_lib.c"
Arduino์์ ์ง์ ์ค์นํ ์ ์๋ "Arduino์ฉ Nanonyam"์ด๋ผ๋ ํน์ ๋ชจ๋์ ๋ง๋๋ ๊ฒ์ด ํจ์ฌ ๋ ์ ํํ ๊ฒ์ ๋๋ค. ์์๋ด๋ ๋๋ก ํ๊ฒ ์ง๋ง ์ง๊ธ์ ๊ฐ์ ๋จธ์ ์์ ์ ๋ณธ์ง์ ๋ณด์ฌ์ฃผ๊ณ ์์ ๋ฟ์ ๋๋ค. ๋ค์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
//ะกัะฐะทั ะฟะพัะปะต ะทะฐะฟััะบะฐ ัะธััะตะผ ัะตะบัั ะฒ ะพะบะฝะต
void setup() {
sys_Nanonyam();//ะะพะดัะฒะตัะถะดะฐะตะผ ะบะพะด ะฒะธัััะฐะปัะฝะพะน ะผะฐัะธะฝั
g_SetScreenSize(400,200);//ะะฐะดะฐัะผ ัะฐะทะผะตั ะดะธัะฟะปะตั 400ั
200 ัะพัะตะบ
sys_WindowSetText("Example");//ะะฐะณะพะปะพะฒะพะบ ะพะบะฝะฐ
g_ConfigExternalFont(0,60,1,0,0,0,"Arial");//ะะฐะดะฐัะผ ััะธัั Windows ะฒ ััะตะนะบะต ััะธััะพะฒ 0
g_SetExternalFont(0);//ะัะฑะธัะฐะตะผ ััะตะนะบั ััะธััะพะฒ 0 ะดะปั ัะธัะพะฒะฐะฝะธั ัะตะบััะฐ
g_SetBackRGB(0,0,255);//ะฆะฒะตั ัะพะฝะฐ ัะธะฝะธะน
g_SetTextRGB(255,255,0);//ะฆะฒะตั ัะตะบััะฐ ะถัะปััะน
g_ClearAll();//ะัะธัะฐะตะผ ัะบัะฐะฝ (ะทะฐะปะธะฒะบะฐ ัะฒะตัะพะผ ัะพะฝะฐ)
g_DrawTextCenterX(0,400,70,"Hello, Habr!");//ะ ะธััะตะผ ะฝะฐะดะฟะธัั
g_Update();//ะัะฒะพะดะธะผ ะณัะฐัะธัะตัะบะธะน ะฑััะตั ะฝะฐ ัะบัะฐะฝ
}
//ะัะพััะพ ะถะดัะผ ะทะฐะบัััะธั ะฟัะพะณัะฐะผะผั
void loop() {
sys_Delay(100);//ะะฐะดะตัะถะบะฐ ะธ ัะฐะทะณััะทะบะฐ ะฟัะพัะตััะพัะฐ
}
์ด ํ๋ก๊ทธ๋จ์ผ๋ก ์ค์ผ์น
"ํ์ธ" ๋ฒํผ์ ๋๋ฅด๋ฉด ์ค๋ฅ๊ฐ ์์ด์ผ ํฉ๋๋ค.
์ด์ ๋ฐ์ด๋๋ฆฌ ํ์ผ(ํ์จ์ด)์ ๊ฐ์ ธ์์ผ ํฉ๋๋ค. ๋ฉ๋ด ์ ํ"์ค์ผ์น>>๋ฐ์ด๋๋ฆฌ ํ์ผ ๋ด๋ณด๋ด๊ธฐ(CTRL+ALT+S)".
์ด๋ ๊ฒ ํ๋ฉด ๋ ๊ฐ์ HEX ํ์ผ์ด ์ค์ผ์น ํด๋์ ๋ณต์ฌ๋ฉ๋๋ค. ์ ๋์ฌ "with_bootloader.mega"๊ฐ ์๋ ํ์ผ๋ง ๊ฐ์ ธ์ต๋๋ค.
Nanonyam ๊ฐ์ ๋จธ์ ์ HEX ํ์ผ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ผ๋ฉฐ ๋ชจ๋ ์ค๋ช
๋์ด ์์ต๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก AVR Studio ๋๋ WinAVR๊ณผ ๊ฐ์ ๋ค๋ฅธ ํ๊ฒฝ์์ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ์ ์์ต๋๋ค.
์ฌ๊ธฐ์์ Nanonyam๊ณผ์ ์น๋ถ์ ๋ง๋ฌด๋ฆฌํฉ๋๋ค. ์ฃผ์ ์์ด๋์ด๋ ๋ช
ํํด์ผ ํฉ๋๋ค.
์ฌ๋ฌ๋ถ์ ๊ด์ฌ๊ณผ ์ข์ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
์ถ์ฒ : habr.com