[Arduino] ๋งฅ OS ์๋์ด๋ ธ ์ค์น / ์๋์ด๋ ธ ๊ธฐ์ด / ์๋์ด๋ ธ ํจ์ / ์๋ฆฌ์ผ ํต์ ์ด๋? / ์ ์ถ๋ ฅ ํ ์ค์ ํ๊ธฐ
์๊ฐ์ ์ ๊ธฐ๊ฐ์ด์๋๋ฐ ํ์์ ๋ฃ๊ณ ์ถ์๋ ์๋์ด๋ ธ ์์ ์ ์ก์๋ค(๊ฟ๊ฐ)
๊ณ ๋ฑํ์ ๋ ๋ช ๋ฒ ๋ง์ ธ๋ณธ ๊ฒ ๋ค์ฌ์ ๊ธฐ์ต๋ ์๋ฌ๊ธฐ ๋๋ฌธ์
์ด๋ฒ์ ์ด์ฌํ ๊ธฐ๋กํด์ ์๋์ด๋ ธ ์ํ๋ ์ธ๊ฐ์ด ๋์ด๋ณด๊ธฐ๋ก ํจ
์ฒ์๋ถํฐ ๋ค์ ธ๋ณด๋ ๋์ ์๋์ด๋ ธ ์ค๋ ฅ
๐พ ์๋์ด๋ ธ ์ค์น
https://www.arduino.cc/en/software
Software
Open-source electronic prototyping platform enabling users to create interactive electronic objects.
www.arduino.cc
๋ค์ด๋ก๋๋ ์ ๋ง ๊ฐ๋จํ๋ค.
์ฐ์ ์ ๋งํฌ๋ก ๊ฐ์ ํ๋ฉด๊ณผ ๊ฐ์ด ์์ ์ ์ด์์ฒด์ ์ ๋ง๋ ์ต์ ์ ์ ํํ๋ค.
๋ ๋งฅ OS๋ฅผ ์ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ Mac OS X๋ฅผ ์ ํํด์ฃผ์๋ค.
์๋์ฐ ์ฌ์ฉ์๋ ZIP file์ ์ ํํด์ฃผ๋ฉด ๋๋ค.
๊ทธ๋ฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ด ๋ฐ ํ ๋ฐ, ์ฌ๊ธฐ์ JUST DOWNLOAD๋ฅผ ๋๋ฌ ๋ค์ด๋ก๋ ํด์ฃผ๋ฉด ๋์ด๋ค.
๐พ ์๋์ด๋ ธ ๊ธฐ์ด์ ํจ์
๋ฐฉ๊ธ ๋ค์ด๋ก๋ ๋ฐ์ ์๋์ด๋ ธ๋ฅผ ์ผ๋ฉด ์์ ๊ฐ์ ์ด๊ธฐ ํ๋ฉด์ด ๋ฌ๋ค.
์ผ์ชฝ๋ถํฐ ์ฐจ๋ก๋ก ์๋จ ๋ฒํผ์ ๋ํด ์ค๋ช ํด๋ณด์๋ฉด,
- ์ปดํ์ผ : ์์ฑํ ์ค์ผ์น๋ฅผ ์๋์ด๋ ธ๊ฐ ์ธ์ํ ์ ์๋ ์ธ์ด๋ก ๋ณ๊ฒฝํด์ค. ๋จ์ํ ์ค์ผ์น์ ์ค๋ฅ๋ฅผ ํ์ธํ๊ฑฐ๋, ์๋์ด๋ ธ์ ์ ๋ก๋ํ ํ์๊ฐ ์์ ๋ ์ปดํ์ผ๋ง ์คํ์ํด.
- ์ปดํ์ผ ๋ฐ ์ ๋ก๋ : ์ปดํ์ผ๊ณผ ์๋์ด๋ ธ๋ก์ ์ ๋ก๋๋ฅผ ์ฐ์์ ์ผ๋ก ์ํ. ์ปดํ์ผ์์ ์๋ฌ๊ฐ ์์ผ๋ฉด ์๋์ผ๋ก ์ ๋ก๋๋จ.
- ์ ์ค์ผ์น : ์๋ก์ด ์ค์ผ์น๋ฅผ ์์ฑํจ. ๊ธฐ์กด์ ํธ์ง ์ฐฝ์ ์ ์งํ ์ฑ ์๋ก์ด ์ฐฝ์ด ์ด๋ฆผ.
- ๊ธฐ์กด ์ค์ผ์น ์ด๊ธฐ : ์ ์ฅ๋์ด ์๋ ์ค์ผ์น ํ์ผ์ ์ถ.
- ์ค์ผ์น ์ ์ฅ : ํ์ฌ ์ค์ผ์น๋ฅผ ์ ์ฅํจ.
- ์๋ฆฌ์ผ ๋ชจ๋ํฐ : ์๋ฆฌ์ผ ํต์ ์ํ๋ฅผ ๋ณผ ์ ์๋ ์ฐฝ์ ์ถ.
์๋์ ๊ฒ์ ๋ถ๋ถ์ ์๋์ด๋ ธ์ ์ํ ๋ฐ ์๋ฌ ๋ฉ์ธ์ง๋ฅผ ์ถ๋ ฅํ๋ ํ ์คํธ ์ฝ์ ์ฐฝ์ด๋ค.
๐ป ์ค์ผ์น์ ๊ธฐ๋ณธ ๊ตฌ์ฑ
์ฃผ์
- ๋ธ๋ก ์ฃผ์
Block Comment
/*
...
...
*/
- ํ์ค ์ฃผ์
One-Line Comment
// ...
setup() - ์ด๊ธฐ์ ํ ๋ฒ๋ง ์คํ๋๋ฉฐ, ๋ณ์ ์ด๊ธฐํ/๊ณ ์ ๋ชจ๋/๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ ์์ ๋ฑ์ ์ฌ์ฉํจ
loop() - setup ์ดํ, ์๋์ด๋ ธ์ ์ ์ ๊ณต๊ธ์ด ์ฐจ๋จ๋ ๋๊น์ง ๋ฌดํ ๋ฃจํ๋ฅผ ๋๋ฉฐ loop() ๋ด๋ถ์ ๋ช ๋ น๋ค์ด ์คํ๋จ
์๋์ด๋ ธ ์คํ์ ์ํด์๋ ์ ๋ ํจ์์ ์ฌ์ฉ์ด ํ์์ ์ด๋ฉฐ, ์๋ ์ฝ๋์ ๊ฐ์ด ์ฌ์ฉํ๋ค.
//Example Code
int buttonPin = 3;
void setup() {
...
}
void loop() {
...
}
๐ป ์๋ฆฌ์ผ ํต์ ์ด๋?
์๋์ด๋ ธ์ ๋ธ๋ฃจํฌ์ค ๋ชจ๋์ 4๊ฐ์ ์ ์ ํตํด ์ฐ๊ฒฐ๋๋ฉฐ, ์๋ฆฌ์ผ ํต์ ์ ํ๋ค.
์ด ๋, ๊ฐ์ด๋ฐ 2๊ฐ์ ์ ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋๋ฐ
ํ๋๋ ์๋์ด๋ ธ์์ ๋ธ๋ฃจํฌ์ค ๋ชจ๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ์ ,
๋๋จธ์ง ํ๋๋ ๋ธ๋ฃจํฌ์ค ๋ชจ๋์์ ์๋์ด๋ ธ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ์ ์ด๋ค.
์๋์ด๋ ธ->๋ธ๋ฃจํฌ์ค์ ๊ฒฝ์ฐ ์๋์ด๋ ธ์ TX์ ๋ธ๋ฃจํฌ์ค ๋ชจ๋์ RX์ ์ ์ฐ๊ฒฐ
๋ธ๋ฃจํฌ์ค->์๋์ด๋ ธ์ ๊ฒฝ์ฐ ์๋์ด๋ ธ์ RX์ ๋ธ๋ฃจํฌ์ค ๋ชจ๋์ TX์ ์ ์ฐ๊ฒฐ
VCC(5V) ; ์๋์ด๋ ธ์์ ๋ธ๋ฃจํฌ์ค ๋ชจ๋๋ก ์ ์์ ๊ณต๊ธํ๊ธฐ ์ํ ์
GND ; ์๋์ด๋ ธ์ ๋ธ๋ฃจํฌ์ค ๋ชจ๋์ ๊ธฐ์ค ์ ์์ ์ผ์น์์ผ ์ฃผ๊ธฐ ์ํ ์
๋ณดํต ์๋ฆฌ์ผ ํต์ ์ ์ํ serial.begin(), ์ ์ถ๋ ฅ ํ ์ค์ ์ ์ํ pinMode()๋
setup() ๋ด๋ถ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ธ๋๋ฉฐ, ์ฌ์ฉ๋ฒ์ ์๋์ ๊ฐ๋ค.
Serial.begin()
์๋์ด๋ ธ๊ฐ ์๋ฆฌ์ผ ํต์ ์ ํ๊ฒ ๋ง๋๋ ํจ์
speed๋ ์ด๋น ๋ช ๋นํธ์ ์๋๋ก ํต์ ํ ์ง ์ค์ ํ๋ ๊ฐ์ด๋ฉฐ, ๋ณดํต 9600bps๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค. (๋ค๋ฅธ ๋ง๋ก Baud Rate๋ผ๊ณ ํจ.)
//Example
Serial.begin(speed)
pinMode()
์๋์ด๋ ธ์ ํน์ ํ์ ์ ๋ ฅ์ผ๋ก ์ธ ์ง ์ถ๋ ฅ์ผ๋ก ์ธ ์ง ์ค์ ํ๋ ํจ์
pin์๋ ์ค์ ํ๋ ค๋ ํ์ ๋ฒํธ๋ฅผ, mode์๋ INPUT/OUTPUT/INPUT_PULLUP์ ๋ฃ์ด ์ฌ์ฉํ๋ค.
INPUT์ ์ ๋ ฅ ๋ชจ๋์ด๋ฉฐ, ์ผ์ ๊ฐ์ ์ฝ์ด์ค๋๋ฐ ์ฌ์ฉ
OUTPUT์ ์ถ๋ ฅ ๋ชจ๋์ด๋ฉฐ, LED๋ฅผ ์ผ๊ฑฐ๋ ๋ชจํฐ๋ฅผ ๊ตฌ๋ํ๋๋ฐ ์ฌ์ฉ
INPUT_PULLUP๋ ๋ด๋ถ์ ํ์ ์ ํญ์ ์ฌ์ฉํ๋ ๋ชจ๋
//Example
pinMode(pin, mode);
์์ >>
//Example Code
int buttonPin = 3;
void setup() {
Serial.begin(9600);
pinMode(buttonPin, INPUT);
}
void loop() {
// ...
}
๐ป ์๋์ด๋ ธ ํจ์
์๋ ํจ์๋ค์ ์ฌ์ฉํ๋ ค๋ ํ์ ์ด์ ์ pinMode()๋ฅผ ํตํด ๋ชจ๋๊ฐ ์ค์ ๋์ด ์์ด์ผ ํจ.
- digitalWrite() : ํน์ ํ ํ์ HIGH(5V) ๋๋ LOW(0V)๋ก ๋ง๋๋ ํจ์. ํด๋น ํ์ด ์ถ๋ ฅ ๋ชจ๋๋ก ์ค์ ๋์ด ์์ด์ผ ํจ.
//Example
digitalWrite(pin, value)
//Example Code
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH) //LED ์ผ๊ธฐ
delay(1000); //1์ด ๊ธฐ๋ค๋ฆฌ๊ธฐ
digitalWrite(13, LOW) //LED ๋๊ธฐ
delay(1000); //1์ด ๊ธฐ๋ค๋ฆฌ๊ธฐ
}
- digitalRead() : ํน์ ํ์ ์ ์์ ์ฝ์ด๋ค์ฌ์ HIGH์ธ์ง LOW์ธ์ง ์๋ ค์ฃผ๋ ํจ์. ํด๋น ํ์ด ์ ๋ ฅ ๋ชจ๋๋ก ์ค์ ๋์ด ์์ด์ผ ํจ.
//Example
digitalWrite(pin)
//Example Code
void setup() {
pinMode(13, OUTPUT);
pinMode(7, INPUT);
}
void loop() {
int val = digitalRead(7); //7๋ฒ ํ์ ์ฝ์ด์์ val์ ์ ์ฅ
digitalWrite(13, val); //val ๊ฐ์ ๋ฐ๋ผ 13๋ฒ ํ LED ์กฐ์
}
๐ป ์๋์ด๋ ธ ๋ณด๋ ๋ฐ ํฌํธ ์ค์