์๋ ํ์ธ์.
์ค๋์ ์ฒ์์ผ๋ก ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด GPIO์ ๋ฌด์ธ๊ฐ๋ฅผ ์ฐ๊ฒฐํด์ ์ค์ตํด๋ด ๋๋ค.
์๋์ด๋ ธ, AVR, ๋ผ์ฆ๋ฒ ๋ฆฌํ๋ ์ด๋ค ๊ฒ์ด ๋์๋ ์ฒ์์ LED๋ก ์์ํด์ผ๊ฒ ์ง์??
์ฐ์ LED๋ถํฐ ์ค๋นํ๊ฒ ์ต๋๋ค.
์ผ๋จ ์ง์ ๊ตด๋ฌ๋ค๋๋ LED ํ๋ ์ฉ ์ฃผ์์ต๋๋ค.
๋ฌด์จ ์์ธ์ง, ์ ์์ด ์ด๋ป๊ฒ ๋๋์ง ์๋ฌด๋ ๋ชจ๋ฆ ๋๋ค.
ํน์ ์ง์ ์ธก์ ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ๊ณ์๋์?
LED๋ ๋ฐ๊ด ๋ค์ด์ค๋๋ก ์๋ฐฉํฅ ์ ์์ ๊ฐํ์ ๋ ๋ฐ๊ดํ๋ ์ญํ ์ ํฉ๋๋ค.
ํ๋ง๋๋ก ๊ทธ๋ฅ PN๋ค์ด์ค๋์ด๊ณ ์๋ฐฉํฅ ์ ์์ด ํ๋ ธ์ ๋ ๋น์ด ๋๋ค๋ ๊ฒ์ ๋๋ค.
led๋ ๋ค์ด์ค๋์ด๊ธฐ ๋๋ฌธ์ ์ธก์ ๊ธฐ๋ฅผ ๋ค์ด์ค๋์ ๋๊ณ ์ธก์ ํด๋ณด๊ฒ ์ต๋๋ค.
๋ค์ด์ค๋ ๋ฒํผ์ ๊ฐ๋ค๋๊ณ
(+) : ๊ธด๋ค๋ฆฌ ; ๋นจ๊ฐ์ ๋ด => GPIO ์ (์ ๊ฐ์ ๊ฒฝ์ฐ๋ 2๋ฒ์ ์ฐ๊ฒฐํจ)
(-) : ์งง์ ๋ค๋ฆฌ : ๊ฒ์์ ๋ด=> GND(์ ์ง)
์ ์ธก์ ํ ๊ฐ์ ํตํด ์ ์ ์๋ ๊ฒ
1. blue led
2. led์ ํ์ํ ์๋ฐฉํฅ์ผ๋ก ์ฝ 2.6V๊ฐ ๊ฑธ๋ฆฌ๋ฉด์ led๊ฐ ์ผ์ง๋ค.
GPIO 2๋ฒ : ๋นจ๊ฐ์ ๋ด
์ ์ง(GND) : ๊ฒ์์ ๋ด
ํ์ฌ GPIO๋ฅผ 2์ด๋ง๋ค HIGH LOW๋ก ๋ฐ์ ๋๋ ์ํฉ
3.3V -> 0V -> 3.3V -> 0V ->3.3V ....
์ฝ 3.3V
์ ์ธก์ ํ ๊ฐ์ ํตํด ์ ์ ์๋ ๊ฒ
1. GPIO๊ฐ HIGH์ผ ๋ 3.3V
2. GPIO๊ฐ LOW์ผ ๋ 0V
(์ ๋ ฅ ์ ์ - LED ์ ์) / LED ์ ๋ฅ = ์ ํญ๊ฐ
์ ๋ ฅ์ ์ : ์ฝ 3.3V
LED ์ ์ : ์ฝ 2.6V
LED ์ ๋ฅ : ์ฝ 20mA(๊ธฐ๋ณธ์ ์ผ๋ก LED์ ์ ๋ฅ๋ 20~30mA๋ผ๊ณ ํ๋ค.)
(3.3 - 2.6) / 0.02 = 35(ohm)
์ LED์ ํ์ํ ์ ํญ์ 35์ด๋ผ๋ ๊ฒ์ ์ ์ ์๋ค.
ํ์ง๋ง ํ์ฌ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ฅ ์์ ์ ํญ์ด 100์ด์ด๋, ๊ทธ๋ฅ 100์ด์ ์ฐ๊ฒ ์ต๋๋ค. ํํ...
๋๋ต, ์ด๋ฐ ๋๋์ผ๊น์... ํผ์คํ์ด์ค๋ก ๊ทธ๋ฆฌ๋๊ฑธ ์์ ์ ๋ฐฐ์ ๋๋ฐ ํ์ฌ๋ ๋ค ๊น๋จน์์ต๋๋ค.. ๋ชป๊ทธ๋ ธ์ง๋ง ์๋ด์ฃผ์๊ธธ..
๋นตํ์ ๊ผฝ์ผ๋ฉด ์ด๋ ๊ฒ ๋ฉ๋๋ค. ์ฝ๋๋ ์ต๋ํ ์๋์ด๋ ธ ๋๋์ผ๋ก ํ ๋ฒ ๊ฐ๋ณด๊ฒ ์ต๋๋ค.
import RPi.GPIO as GPIO
import time
def setup():
GPIO.setmode(GPIO.BCM) # Broadcom pin-numbering scheme
GPIO.setup(2, GPIO.OUT) # output rf
def loop():
GPIO.output(2, GPIO.HIGH)
time.sleep(0.1)
GPIO.output(2, GPIO.LOW)
time.sleep(0.1)
try:
setup()
while(True):
loop()
except KeyboardInterrupt:
print("Keyboard interrupt")
except:
print("some error")
finally:
print("clean up")
GPIO.cleanup() # cleanup all GPIO
์๋์ด๋ ธ์ฒ๋ผ setup ๋ถ๋ถ loop ๋ถ๋ถ์ผ๋ก ํจ์ํ ์์ผฐ์ต๋๋ค.
KeyboardInterrupt๋ CTRL C ๋ฅผ ์น๋ฉด ์ธํฐ๋ฝํธ ๊ฑธ๋ฆฝ๋๋ค.
finally๋ก ๋์์ ๋ง์น๋ฉด GPIO ํ์ clean ์ํต๋๋ค.
๋์์ 0.1์ด์ฉ ์ ๋ฉธํ ๊ฒ์ ๋๋ค.