๐ŸŽ“ undergraduate/etc

[Arduino] ๋งฅ OS ์•„๋‘์ด๋…ธ ์„ค์น˜ / ์•„๋‘์ด๋…ธ ๊ธฐ์ดˆ / ์•„๋‘์ด๋…ธ ํ•จ์ˆ˜ / ์‹œ๋ฆฌ์–ผ ํ†ต์‹ ์ด๋ž€? / ์ž…์ถœ๋ ฅ ํ•€ ์„ค์ •ํ•˜๊ธฐ

๊ธฐ๋ฎจ์ง€ 2022. 9. 7. 19:57

 



 

์ˆ˜๊ฐ•์ •์ • ๊ธฐ๊ฐ„์ด์—ˆ๋Š”๋ฐ ํ‰์†Œ์— ๋“ฃ๊ณ  ์‹ถ์—ˆ๋˜ ์•„๋‘์ด๋…ธ ์ˆ˜์—…์„ ์žก์•˜๋‹ค(๊ฟ€๊ฐ•)

๊ณ ๋“ฑํ•™์ƒ ๋•Œ ๋ช‡ ๋ฒˆ ๋งŒ์ ธ๋ณธ ๊ฒŒ ๋‹ค์—ฌ์„œ ๊ธฐ์–ต๋„ ์•ˆ๋‚ฌ๊ธฐ ๋•Œ๋ฌธ์—

์ด๋ฒˆ์—” ์—ด์‹ฌํžˆ ๊ธฐ๋กํ•ด์„œ ์•„๋‘์ด๋…ธ ์ž˜ํ•˜๋Š” ์ธ๊ฐ„์ด ๋˜์–ด๋ณด๊ธฐ๋กœ ํ•จ

 

์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์ ธ๋ณด๋Š” ๋‚˜์˜ ์•„๋‘์ด๋…ธ ์‹ค๋ ฅ

 


 

๐Ÿ‘พ ์•„๋‘์ด๋…ธ ์„ค์น˜

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 ์กฐ์ ˆ
}

 

 

๐Ÿ’ป ์•„๋‘์ด๋…ธ ๋ณด๋“œ ๋ฐ ํฌํŠธ ์„ค์ •