Hello World

๋“ค์–ด๊ฐ€๋ฉฐ

์ฃผ๋ฏธ๋Š” ๊ฐ„๊ฒฐํ•˜๊ณ  ํ•™์Šตํ•˜๊ธฐ ์šฉ์ดํ•œ Python์„ ์ตํžˆ๋Š” ๋„๊ตฌ๋กœ์„œ๋„ ํ›Œ๋ฅญํ•œ ๊ต์žฌ์ž…๋‹ˆ๋‹ค. ๋‹น์—ฐํžˆ ์ฃผ๋ฏธ๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ Python์„ ์ด์šฉํ•ด์„œ ๋ณด๋‹ค ๋งŽ์€ ๊ธฐ๋Šฅ์„ ๋˜ํ•œ ์†์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ณผ์ •์€ Python์˜ ๊ฐ„๋‹จํ•œ ๋ฌธ๋ฒ•๋ถ€ํ„ฐ ๋กœ๋ด‡ ์ฃผ๋ฏธ๋ฅผ ํ•™์Šตํ•˜๋Š” ๊ณผ์ •๊นŒ์ง€๋ฅผ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘์—์„œ ์ฒซ ๋ฒˆ์งธ ๊ธ€์€ Hello World๋ผ๊ณ  ํ”ํžˆ๋“ค ๋ถ€๋ฅด๋Š” ๋‹จ๊ณ„๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ค€๋น„๊ณผ์ •

์•ž ์„  ๊ธ€์—์„œ ์ˆ˜ํ–‰ํ–ˆ๋˜ ๋งˆ์ง€๋ง‰ ํ™”๋ฉด์ด ๊ธฐ์–ต๋‚˜์‹œ๋‚˜์š”?

Zumi์—์„œ Python ์‹œ์ž‘ํ•ด๋ณด๊ธฐ

์™„์ „ํžˆ ๋นˆ ์ƒˆ๋กœ์šด ํ™”๋ฉด์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์„œ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

Jupyter notebook์—์„œ ํŒŒ์ผ ์ œ๋ชฉ ๋ถ€๋ถ„

ํ™”๋ฉด ์ƒ๋‹จ์— untitled๋ผ๊ณ  ๋˜์–ด ์žˆ๋Š” ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

Jupyter notebook ์ด๋ฆ„ ๋ณ€๊ฒฝํ•˜๊ธฐ

์—ฌ๊ธฐ์— Hello World๋ผ๊ณ  ์ž…๋ ฅํ•ด์„œ ๋ฌธ์„œ์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ด๋ฆ„์€ Hello World.ipynb์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ฃผ๋ฏธ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

print('Hello! World')

์ด์ œ ์ •๋ง ๊ฐ„๋‹จํ•œ ์ฝ”๋“œํ•˜๋‚˜๋ฅผ ์ž…๋ ฅํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. print๋Š” Jupyter Notebook ํ™”๋ฉด์— ๊ธ€์ž๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ช…๋ น์ž…๋‹ˆ๋‹ค.

Hello World๋ฅผ ์ž…๋ ฅํ•œ ํ™”๋ฉด

Jupyter Notebook์—๋Š” ์ด๋ ‡๊ฒŒ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‹คํ–‰์€ ํ‚ค๋ณด๋“œ์—์„œ SHIFTํ‚ค์™€ ENTERํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Hello World๋ฅผ ์ž…๋ ฅํ•œ ํ™”๋ฉด

๊ทธ๋Ÿฌ๋ฉด ์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์•ž์œผ๋กœ ์ฃผ๋ฏธ์˜ Jupyter Notebook ํ™”๋ฉด์—์„œ ์‹คํ–‰ํ•œ๋‹ค๊ณ  ๋งํ•˜๋ฉด ๊ทธ๊ฒƒ์€ SHIFTํ‚ค์™€ ENTERํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ์„œ ์‹คํ–‰ํ•œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์˜ค๋Š˜์˜ ๋ชฉํ‘œ

์ฃผ๋ฏธ ๋’ท๋ฉด์˜ ๋ธŒ๋ ˆ์ดํŠธ LED

์ฃผ๋ฏธ๋Š” ๋’ท๋ฉด์— ์ž๋™์ฐจ๋กœ ์น˜๋ฉด ๋ธŒ๋ ˆ์ดํฌ ๋“ฑ์˜ ์—ญํ• ์„ ํ•˜๋Š” LED๊ฐ€ ์žฅ์ฐฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด LED๋ฅผ ๋„๊ณ  ์ผœ๋Š” ๋™์ž‘์„ Python์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋“œ๋””์–ด ์ด ๊ฐ„๋‹จํ•œ LED๋ฅผ ๋™์ž‘์‹œํ‚ค๋Š” ๊ณผ์ •์—์„œ Python์˜ ์•„์ฃผ ๊ธฐ์ดˆ๋„ ํ•จ๊ป˜ ๋‹ค๋ฃจ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ ์„ค๋ช…

์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ๋จผ์ € ํ•ด์•ผํ•  ์ผ์€ ์ฃผ๋ฏธ์˜ ํ•˜๋“œ์›จ์–ด ์ž์›์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” zumi ๋ชจ๋“ˆ์„ ์ž„ํฌํŠธ(import)ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋‹จ, zumi ๋ชจ๋“ˆ์ด ์–ด๋–ค ๊ฒƒ์ธ์ง€ ์•Œ์•„์•ผ๊ฒ ๋„ค์š”. ์ฃผ๋ฏธ์—์„œ ๋กœ๋ด‡ ํ•˜๋“œ์›จ์–ด๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•œ ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. ๊ทธ ์†์—๋Š” ๋กœ๋ด‡์˜ ๊ธฐ์šธ์–ด์ง€๋Š” ๊ฐ๋„๋ฅผ ์ธก์ •ํ•œ๋‹ค๋“ ์ง€, ์ ์™ธ์„  ์„ผ์„œ์˜ ๊ฐ’์„ ํ™•์ธํ•˜๊ฑฐ๋‚˜, LED์™€ ๋ถ€์ €๋ฅผ ๋‹ค๋ฃจ๋Š” ์˜์—ญ์—์„œ ์นด๋ฉ”๋ผ ์˜์ƒ์„ ๋‹ค๋ฃจ๊ณ  LCD ํ™”๋ฉด์— ์ถœ๋ ฅ์„ ํ•˜๋Š” ๊ธฐ๋Šฅ๊นŒ์ง€๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Python์€ ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์„ ๋ชจ์•„์„œ ๋ชจ๋“ˆ๋กœ ๋งŒ๋“ค๊ณ  ๊ทธ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉ์ž๋“ค์ด ์ž„ํฌํŠธ(import)๋ผ๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์ฃผ๋ฏธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ผ๋‹จ zumi ๋ชจ๋“ˆ์„ import ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

import zumi

from zumi.zumi import Zumi
โ€‹
zumi = Zumi()

์•„๋งˆ ์œ„ ๊ณผ์ •์€ ์–ป๋“ฏ ์ดํ•ดํ•˜๊ธฐ๋Š” ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„ ๋‘ ์ค„์€ ๊ฐ„๋‹จํ•ด ๋ณด์ด์ง€๋งŒ ํŒŒ์ด์ฌ์—์„œ ๊ฝค ์ค‘์š”ํ•œ ๊ฐœ๋…๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง€๊ธˆ ์ด๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์€ ๋‚œ์ด๋„์˜ ๋ฌธ์ œ์™€ ๋กœ๋ด‡ ์ฃผ๋ฏธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชฉ์ ์— ๋น„์ถฐ ๋„ˆ๋ฌด ๊นŠ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ณ  ์ง€๋‚˜๊ฐ€๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ถ„๋ช… ์ฃผ๋ฏธ๋ฅผ ํŒŒ์ด์ฌ์œผ๋กœ ํ•™์Šตํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์น˜๋‹ค ๋ณด๋ฉด ์—ฌ๋Ÿฌ๋ถ„๋“ค์€ ์ ์  ์ดํ•ดํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋จผ์ € ์ฒซ ์ค„์€ zumi.zumi ๋ชจ๋“ˆ์—์„œ Zumi๋ผ๋Š” ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ค๋Š”(import) ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ zumi์ด๋ฆ„์œผ๋กœ ์ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ณผ์ •์ด ๋‘ ๋ฒˆ์งธ ์ค„์ž…๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ๋Š” ํด๋ž˜์Šค(class), ์ธ์Šคํ„ด์Šค(instance), instanciation ๋“ฑ์˜ ์–ด๋ ค์šด ์šฉ์–ด๊ฐ€ ๋“ฑ์žฅํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ํŒŒ์ด์ฌ์˜ ์žฅ์ ์€ ์ผ๋‹จ ๋„˜์–ด๊ฐ€๋„ ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋ฌดํŠผ ์œ„ ๋‘ ์ค„์˜ ์˜๋ฏธ๋Š” ์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ ๋กœ๋ด‡ ์ฃผ๋ฏธ๋ฅผ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๋Š” ๋œป ์ž…๋‹ˆ๋‹ค. ์ด์ œ ์‹คํ–‰ํ•ด๋ณด๋„๋ก ํ•˜์ฃ .

์ฃผ๋ฏธ ๋ชจ๋“ˆ Zumi๋ฅผ importํ•œ ๊ฒฐ๊ณผ

์ฝ”๋“œ์˜ ์‹คํ–‰๊ฒฐ๊ณผ๊ฐ€ ๋‹นํ™ฉ์Šค๋Ÿฝ๋‚˜์š”? ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์ € ๋ง์˜ ์˜๋ฏธ๋Š” ์ฃผ๋ฏธ์—์„œ PC๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” Raspberry PI Zero ๋ณด๋“œ์™€ ๋กœ๋ด‡ ์ฃผ๋ฏธ์˜ ์ฃผ์š” ์ œ์–ด ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๋Š” ๋ณด๋“œ์˜ ๋ช‡๋ช‡ ์ฃผ์š” ๊ธฐ๋Šฅ๋“ค์ด ์ •์ƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋Š” ๋œป ์ž…๋‹ˆ๋‹ค.

LED ์ผœ๋ณด๊ธฐ

์ฃผ๋ฏธ์˜ LED

์ฃผ๋ฏธ๋Š” ์ •๋ฉด์—์„œ ๋ฐ”๋ผ๋ณผ๋•Œ ํ•˜์–€์ƒ‰ ๋ฐ•์Šค๋กœ ํ‘œ์‹œ๋œ ๋ถ€๋ถ„์˜ ์•ฝ๊ฐ„ ์œ„์ชฝ์— ํ—ค๋“œ๋ผ์ดํŠธ(headlights)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋’ท ํŽธ์—๋Š” ๋ธŒ๋ ˆ์ดํฌ๋“ฑ(brake_lights)์ด ์žˆ์Šต๋‹ˆ๋‹ค.

zumi.brake_lights_on()

์œ„ ์ฝ”๋“œ๋Š” ๋ธŒ๋ ˆ์ดํฌ๋“ฑ์„ ์ผœ๋Š” ๋ช…๋ น์ž…๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ์ฃผ๋ฏธ ๋’ท๋ฉด์˜ ๋“ฑ์ด ์ผœ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

zumi.brake_lights_off()

๋ธŒ๋ ˆ์ดํฌ๋“ฑ์„ ๋„๋Š” ๋ช…๋ น์ž…๋‹ˆ๋‹ค.

์ฃผ๋ฏธ์˜ LED ํ…Œ์ŠคํŠธ

์—ฌ๋Ÿฌ๋ถ„๋“ค์€ ์œ„ ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ž…๋ ฅํ•ด์„œ ์‹คํ–‰(SHIFT+ENTER)ํ•˜๋ฉด์„œ ์ฃผ๋ฏธ์˜ ์–ด๋–ค LED๊ฐ€ ๊บผ์ง€๊ณ  ์ผœ์ง€๋Š”์ง€๋ฅผ ํ™•์ธํ•ด๋ณด์„ธ์š”.