์ ๋ ดํ ์ค๊ตญ ์ฅ์น์์ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ฅํ ๋
ผ๋ฆฌ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ธฐ์ฌ์
๋๋ค. ์ด๋ฌํ ์ฅ์น๋ ํ ์๋ํ์ ํ๊ต ์ปดํจํฐ ๊ณผํ์ ์ค์ต ์์
๋ชจ๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฐธ๊ณ ๋ก Sonoff Basic ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๊ตญ ํด๋ผ์ฐ๋ ์๋น์ค๋ฅผ ํตํด ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ํจ๊ป ์๋ํ๋ฉฐ ์ ์๋ ์์ ํ์๋ ์ด ์ฅ์น์์ ๋ชจ๋ ์ถ๊ฐ ์ํธ ์์ฉ์ด ๋ธ๋ผ์ฐ์ ์์ ๊ฐ๋ฅํด์ง๋๋ค.
์น์ I. Sonoff๋ฅผ MGT24 ์๋น์ค์ ์ฐ๊ฒฐ
1๋จ๊ณ: ์ ์ดํ ๋ง๋ค๊ธฐ
์ฌ์ดํธ์ ๋ฑ๋ก
๋ก๊ทธ์ธ
์ ์ฅ์น์ ๋ํ ์ ์ดํ์ ๋ง๋ค๋ ค๋ฉด โ+โ ๋ฒํผ์ ํด๋ฆญํ์ธ์.
ํจ๋ ์์ฑ ์
ํจ๋์ด ์์ฑ๋๋ฉด ํจ๋ ๋ชฉ๋ก์ ํ์๋ฉ๋๋ค.
์์ฑ๋ ํจ๋์ "์ค์ " ํญ์์ "์ฅ์น ID" ๋ฐ "์ธ์ฆ ํค" ํ๋๋ฅผ ์ฐพ์ผ์ญ์์ค. ํฅํ Sonoff ์ฅ์น๋ฅผ ์ค์ ํ ๋ ์ด ์ ๋ณด๊ฐ ํ์ํฉ๋๋ค.
ํญ ์
2๋จ๊ณ. ์ฅ์น๋ฅผ ๋ค์ ํ๋์ํ์ธ์.
์ ํธ๋ฆฌํฐ ์ฌ์ฉ
3๋จ๊ณ. ์ฅ์น ์ค์
์ฅ์น์ ์ ์์ ๊ณต๊ธํ๊ณ LED๊ฐ ์ผ์ง ํ LED๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ณ ๋ฅด๊ฒ ๊น๋ฐ์ด๊ธฐ ์์ํ ๋๊น์ง ๋ฒํผ์ ๊ธธ๊ฒ ๋๋ฆ
๋๋ค.
์ด ์๊ฐ "PLC Sonoff Basic"์ด๋ผ๋ ์๋ก์ด Wi-Fi ๋คํธ์ํฌ๊ฐ ๋ํ๋๊ณ ์ปดํจํฐ๋ฅผ ์ด ๋คํธ์ํฌ์ ์ฐ๊ฒฐํฉ๋๋ค.
LED ํ์ ์ค๋ช
LED ํ์
์ฅ์น ์ํ
์ฃผ๊ธฐ์ ์ผ๋ก ์ด์ค ๊น๋ฐ์
๋ผ์ฐํฐ์ ์ฐ๊ฒฐ๋์ด ์์ง ์์ต๋๋ค
๋์์์ด ๋น๋๋ค
๋ผ์ฐํฐ์ ์ฐ๊ฒฐ์ด ์ค์ ๋์์ต๋๋ค.
์ฃผ๊ธฐ์ ์ธ ๊ท ์ผ ๊น๋ฐ์
Wi-Fi ์ก์ธ์ค ํฌ์ธํธ ๋ชจ๋
๊บผ์ง
์ ์ ๊ณต๊ธ ์ฅ์น ์์
์ธํฐ๋ท ๋ธ๋ผ์ฐ์ ๋ฅผ ์ด๊ณ ์ฃผ์ ํ์์ค์ "192.168.4.1"์ด๋ผ๋ ํ ์คํธ๋ฅผ ์ ๋ ฅํ ํ ์ฅ์น์ ๋คํธ์ํฌ ์ค์ ํ์ด์ง๋ก ์ด๋ํ์ธ์.
๋ค์๊ณผ ๊ฐ์ด ํ๋๋ฅผ ์ฑ์ฐ์ญ์์ค.
- "๋คํธ์ํฌ ์ด๋ฆ" ๋ฐ "๋น๋ฐ๋ฒํธ"(๊ธฐ๊ธฐ๋ฅผ ๊ฐ์ ์ฉ Wi-Fi ๋ผ์ฐํฐ์ ์ฐ๊ฒฐํ๊ธฐ ์ํด).
- "์ฅ์น ID" ๋ฐ "์ธ์ฆ ํค"(MGT24 ์๋น์ค์์ ์ฅ์น๋ฅผ ์ธ์ฆํ๊ธฐ ์ํด).
์ฅ์น ๋คํธ์ํฌ ๋งค๊ฐ๋ณ์ ์ค์ ์
์ค์ ์ ์ ์ฅํ๊ณ ์ฅ์น๋ฅผ ์ฌ๋ถํ
ํ์ญ์์ค.
์ฌ๊ธฐ์
4๋จ๊ณ. ์ผ์ ์ฐ๊ฒฐ(์ต์ )
ํ์ฌ ํ์จ์ด๋ ์ต๋ 18๊ฐ์ ds20bXNUMX ์จ๋ ์ผ์๋ฅผ ์ง์ํฉ๋๋ค. ์ฌ๊ธฐ
์น์ II. ์๊ฐ์ ํ๋ก๊ทธ๋๋ฐ
1๋จ๊ณ: ์คํฌ๋ฆฝํธ ์์ฑ
ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์ผ๋ก ์ฌ์ฉ๋จ
์ฅ์น ๋งค๊ฐ๋ณ์๋ฅผ ์ฐ๊ณ ์ฝ๊ธฐ ์ํ ํน์ ๋ธ๋ก์ ์ถ๊ฐํ์ต๋๋ค. ๋ชจ๋ ๋งค๊ฐ๋ณ์๋ ์ด๋ฆ์ผ๋ก ์ก์ธ์ค๋ฉ๋๋ค. ์๊ฒฉ ์ฅ์น์ ๋งค๊ฐ๋ณ์์๋ "parameter@device"๋ผ๋ ๋ณตํฉ ์ด๋ฆ์ด ์ฌ์ฉ๋ฉ๋๋ค.
์ต์
๋๋กญ๋ค์ด ๋ชฉ๋ก
๋ถํ๋ฅผ ์ผ๊ณ ๋๋ ์ฃผ๊ธฐ(1Hz)์ ๋ํ ์์ ์๋๋ฆฌ์ค:
๋ ๊ฐ์ ๊ฐ๋ณ ์ฅ์น์ ์๋์ ๋๊ธฐํํ๋ ์คํฌ๋ฆฝํธ์ ์์
๋๋ค. ์ฆ, ํ๊ฒ ์ฅ์น์ ๋ฆด๋ ์ด๋ ์๊ฒฉ ์ฅ์น์ ๋ฆด๋ ์ด ๋์์ ๋ฐ๋ณตํ๋ค.
์จ๋ ์กฐ์ ๊ธฐ ์๋๋ฆฌ์ค(ํ์คํ
๋ฆฌ์์ค ์์):
๋ ๋ณต์กํ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ ค๋ฉด ๋ณ์, ๋ฃจํ, ํจ์(์ธ์ ํฌํจ) ๋ฐ ๊ธฐํ ๊ตฌ์ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ์ด ๋ชจ๋ ๊ฒ์ ์์ธํ ์ค๋ช
ํ์ง ์๊ฒ ์ต๋๋ค. ์ด๋ฏธ ์ธํฐ๋ท์ ๊ฝค ๋ง์ ๋ด์ฉ์ด ์์ต๋๋ค.
2๋จ๊ณ: ์คํฌ๋ฆฝํธ ์์
์คํฌ๋ฆฝํธ๋ ์ง์์ ์ผ๋ก ์คํ๋๋ฉฐ ๋์ ๋๋ฌํ์๋ง์ ๋ค์ ์์๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ ์คํฌ๋ฆฝํธ๋ฅผ ์ผ์์ ์ผ๋ก ์ผ์์ค์งํ ์ ์๋ ๋ธ๋ก์ โdelayโ์ โpauseโ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
"์ง์ฐ" ๋ธ๋ก์ ๋ฐ๋ฆฌ์ด ๋๋ ๋ง์ดํฌ๋ก์ด ์ง์ฐ์ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๋ธ๋ก์ ์๊ฐ ๊ฐ๊ฒฉ์ ์๊ฒฉํ๊ฒ ์ ์งํ์ฌ ์ ์ฒด ์ฅ์น์ ์๋์ ์ฐจ๋จํฉ๋๋ค.
"pause" ๋ธ๋ก์ ๋ ๋ฒ์งธ(๋๋ ๊ทธ ์ดํ) ์ง์ฐ์ ์ฌ์ฉ๋๋ฉฐ ์ฅ์น์ ๋ค๋ฅธ ํ๋ก์ธ์ค ์คํ์ ์ฐจ๋จํ์ง ์์ต๋๋ค.
์คํฌ๋ฆฝํธ ์์ฒด์ ๋ฌดํ ๋ฃจํ๊ฐ ํฌํจ๋์ด ์๊ณ ๋ณธ๋ฌธ์ "์ผ์ ์ค์ง"๊ฐ ํฌํจ๋์ด ์์ง ์์ ๊ฒฝ์ฐ ์ธํฐํ๋ฆฌํฐ๋ ๋
๋ฆฝ์ ์ผ๋ก ์งง์ ์ผ์ ์ค์ง๋ฅผ ์์ํฉ๋๋ค.
ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ์คํ์ด ๊ณ ๊ฐ๋๋ฉด ์ธํฐํ๋ฆฌํฐ๋ ์ ๋ ฅ์ ๋ง์ด ์๋ชจํ๋ ์คํฌ๋ฆฝํธ ์คํ์ ์ค์งํฉ๋๋ค(์ฌ๊ท ํจ์์ ์ฃผ์ํ์ธ์).
3๋จ๊ณ: ์คํฌ๋ฆฝํธ ๋๋ฒ๊น
์ด๋ฏธ ์ฅ์น์ ๋ก๋๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋๋ฒ๊น ํ๋ ค๋ฉด ํ๋ก๊ทธ๋จ ์ถ์ ์ ๋จ๊ณ๋ณ๋ก ์คํํ ์ ์์ต๋๋ค. ์ด๋ ์คํฌ๋ฆฝํธ์ ๋์์ด ์์ฑ์์ ์๋์ ๋ค๋ฅธ ๊ฒ์ผ๋ก ํ๋ช ๋ ๋ ๋งค์ฐ ์ ์ฉํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์ถ์ ์ ํตํด ์์ฑ์๋ ๋ฌธ์ ์ ์์ธ์ ๋น ๋ฅด๊ฒ ์ฐพ๊ณ ์คํฌ๋ฆฝํธ์ ์ค๋ฅ๋ฅผ ์์ ํ ์ ์์ต๋๋ค.
๋๋ฒ๊ทธ ๋ชจ๋์์ ๊ณ์น ๊ณ์ฐ ์๋๋ฆฌ์ค:
๋๋ฒ๊ทธ ๋๊ตฌ๋ ๋งค์ฐ ๊ฐ๋จํ๋ฉฐ "์์", "ํ ๋จ๊ณ ์์ผ๋ก" ๋ฐ "์ค์ง"๋ผ๋ ์ธ ๊ฐ์ง ์ฃผ์ ๋ฒํผ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค(๋๋ฒ๊ทธ ๋ชจ๋ "์
๋ ฅ" ๋ฐ "์ข
๋ฃ"๋ ์์ง ๋ง์ธ์). ๋จ๊ณ๋ณ ์ถ์ ์ธ์๋ ๋ธ๋ก์ ํด๋ฆญํ์ฌ ๋ชจ๋ ๋ธ๋ก์ ์ค๋จ์ ์ ์ค์ ํ ์ ์์ต๋๋ค.
๋ชจ๋ํฐ์ ๋งค๊ฐ๋ณ์(์ผ์, ๋ฆด๋ ์ด)์ ํ์ฌ ๊ฐ์ ํ์ํ๋ ค๋ฉด "์ธ์" ๋ธ๋ก์ ์ฌ์ฉํ์ญ์์ค.
์ฌ๊ธฐ์
ํธ๊ธฐ์ฌ์ ์ํ ์น์ . ํ๋ ์๋์๋ ๋ฌด์์ด ์๋์?
์คํฌ๋ฆฝํธ๊ฐ ๋์ ์ฅ์น์์ ์๋ํ๊ธฐ ์ํด ๋ฐ์ดํธ์ฝ๋ ์ธํฐํ๋ฆฌํฐ์ 38๊ฐ์ ๋ช
๋ น์ด๊ฐ ์๋ ์ด์
๋ธ๋ฌ๊ฐ ๊ฐ๋ฐ๋์์ต๋๋ค. Blockly์ ์์ค ์ฝ๋์๋ ์๊ฐ์ ๋ธ๋ก์ ์ด์
๋ธ๋ฆฌ ์ง์นจ์ผ๋ก ๋ณํํ๋ ํน์ ์ฝ๋ ์์ฑ๊ธฐ๊ฐ ๋ด์ฅ๋์ด ์์ต๋๋ค. ์ด์ด์ ์ด ์ด์
๋ธ๋ฌ ํ๋ก๊ทธ๋จ์ ๋ฐ์ดํธ์ฝ๋๋ก ๋ณํ๋์ด ์คํ์ ์ํด ์ฅ์น๋ก ์ ์ก๋ฉ๋๋ค.
์ด ๊ฐ์ ๋จธ์ ์ ์ํคํ
์ฒ๋ ๋งค์ฐ ๊ฐ๋จํ๋ฉฐ ์ค๋ช
ํ ํน๋ณํ ์์ ์ด ์์ต๋๋ค. ์ธํฐ๋ท์์ ๊ฐ์ฅ ๊ฐ๋จํ ๊ฐ์ ๋จธ์ ์ค๊ณ์ ๋ํ ๋ง์ ๊ธฐ์ฌ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
๋๋ ๋ณดํต ๊ฐ์ ๋จธ์ ์ ์คํ์ 1000๋ฐ์ดํธ๋ฅผ ํ ๋นํ๋๋ฐ, ์ด๋ ์ฌ์ ์๊ฒ ์ฌ์ฉํ๊ธฐ์ ์ถฉ๋ถํฉ๋๋ค. ๋ฌผ๋ก , ๊น์ โโ์ฌ๊ท๋ ๋ชจ๋ ์คํ์ ์์ง์ํฌ ์ ์์ง๋ง ์ค์ ๋ก ์ฌ์ฉํ ๊ฐ๋ฅ์ฑ์ ๊ฑฐ์ ์์ต๋๋ค.
๊ฒฐ๊ณผ ๋ฐ์ดํธ์ฝ๋๋ ๋งค์ฐ ๊ฐ๊ฒฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋์ผํ ๊ณ์น์ ๊ณ์ฐํ๋ ๋ฐ์ดํธ์ฝ๋๋ 49๋ฐ์ดํธ์ ๋ถ๊ณผํฉ๋๋ค. ์๊ฐ์ ํํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ๊ทธ์ ์ด์
๋ธ๋ฌ ํ๋ก๊ทธ๋จ์
๋๋ค:
shift -1
ldi 10
call factorial, 1
print
exit
:factorial
ld_arg 0
ldi 1
gt
je 8
ld_arg 0
ld_arg 0
ldi 1
sub
call factorial, 1
mul
ret
ldi 1
ret
ํํ์ ์ด์ ๋ธ๋ฆฌ ํ์์ ์ค์ง์ ์ธ ๊ฐ์น๊ฐ ์์ผ๋ฉด ๋ฐ๋๋ก "javascrit" ํญ์ด ์๊ฐ์ ๋ธ๋ก๋ณด๋ค ๋ ์น์ํ ๋ชจ์์ ์ ๊ณตํฉ๋๋ค.
function factorial(num) {
if (num > 1) {
return num + factorial(num - 1);
}
return 1;
}
window.alert(factorial(10));
์ฑ๋ฅ์ ๊ดํด์. ๊ฐ์ฅ ๊ฐ๋จํ ํ๋์
์คํฌ๋ฆฝํธ๋ฅผ ์คํํ์ ๋ ์ค์ค๋ก์ค์ฝํ ํ๋ฉด์ 47kHz ๊ตฌํํ๊ฐ ๋ํ๋ฌ์ต๋๋ค(ํ๋ก์ธ์ ํด๋ญ ์๋ 80MHz).
๋๋ ์ด๊ฒ์ด ์ข์ ๊ฒฐ๊ณผ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ ์ด๋ ์ด ์๋๋ ๊ฒ๋ณด๋ค ๊ฑฐ์ XNUMX๋ฐฐ ๋น ๋ฆ
๋๋ค.
๋ง์ง๋ง ๋ถ๋ถ
์์ฝํ๋ฉด, ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณ๋์ ์ฅ์น ์๋ ๋
ผ๋ฆฌ๋ฅผ ํ๋ก๊ทธ๋๋ฐํ ์ ์์ ๋ฟ๋ง ์๋๋ผ ์ผ๋ถ ์ฅ์น๊ฐ ๋ค๋ฅธ ์ฅ์น์ ๋์์ ์ํฅ์ ๋ฏธ์น๋ ๋จ์ผ ๋ฉ์ปค๋์ฆ์ ์ฌ๋ฌ ์ฅ์น๋ฅผ ์ฐ๊ฒฐํ ์๋ ์์ต๋๋ค.
๋ํ ์ ํํ ์คํฌ๋ฆฝํธ ์ ์ฅ ๋ฐฉ๋ฒ(์๋ฒ๊ฐ ์๋ ์ฅ์น ์์ฒด์ ์ง์ )์ ์ด๋ฏธ ์๋ ์ค์ธ ์ฅ์น๋ฅผ ๋ค๋ฅธ ์๋ฒ(์: ๊ฐ์ ์ฉ Raspberry)๋ก ์ ํํ๋ ๊ฒ์ ๋จ์ํํฉ๋๋ค.
๊ทธ๊ฒ ๋ค์ผ, ์กฐ์ธ๊ณผ ๊ฑด์ค์ ์ธ ๋นํ์ ๋ฃ๊ณ ๊ธฐ๋ปํ ๊ฒ์
๋๋ค.
์ถ์ฒ : habr.com