๐Ÿค– Arduino Nano๋กœ ๋งŒ๋“œ๋Š” ์ดˆ์ŒํŒŒ ๊ฑฐ๋ฆฌ ์ธก์ •๊ธฐ ๐ŸŒŸ

์ฝ˜ํ…์ธ  ๋Œ€ํ‘œ ์ด๋ฏธ์ง€ - ๐Ÿค– Arduino Nano๋กœ ๋งŒ๋“œ๋Š” ์ดˆ์ŒํŒŒ ๊ฑฐ๋ฆฌ ์ธก์ •๊ธฐ ๐ŸŒŸ

 

 

์•ˆ๋…•, ์นœ๊ตฌ๋“ค! ์˜ค๋Š˜์€ ์ •๋ง ์žฌ๋ฐŒ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ํ•จ๊ป˜ ํ•ด๋ณผ ๊ฑฐ์•ผ. ๋ฐ”๋กœ Arduino Nano์™€ ์ดˆ์ŒํŒŒ ์„ผ์„œ๋ฅผ ์ด์šฉํ•ด์„œ ๊ฑฐ๋ฆฌ ์ธก์ •๊ธฐ๋ฅผ ๋งŒ๋“ค์–ด ๋ณผ ๊ฑฐ๋ž€ ๋ง์ด์ง€! ๐Ÿ˜Ž ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ์šฐ๋ฆฌ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ํ•˜๋“œ์›จ์–ด ์ œ์–ด๊นŒ์ง€ ๋‹ค์–‘ํ•œ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์„ ๊ฑฐ์•ผ. ๊ทธ๋Ÿผ ์ด์ œ๋ถ€ํ„ฐ ์šฐ๋ฆฌ์˜ ๋ฉ‹์ง„ ์—ฌ์ •์„ ์‹œ์ž‘ํ•ด๋ณด์ž๊ตฌ!

๐Ÿ’ก ์ฐธ๊ณ : ์ด ๊ธ€์€ ์žฌ๋Šฅ๋„ท(https://www.jaenung.net)์˜ '์ง€์‹์ธ์˜ ์ˆฒ' ๋ฉ”๋‰ด์— ๋“ฑ๋ก๋  ์˜ˆ์ •์ด์•ผ. ์žฌ๋Šฅ๋„ท์€ ๋‹ค์–‘ํ•œ ์žฌ๋Šฅ์„ ๊ฑฐ๋ž˜ํ•˜๋Š” ํ”Œ๋žซํผ์ด๋‹ˆ, ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋งˆ์Šคํ„ฐํ•˜๊ณ  ๋‚˜๋ฉด ๋„ˆ์˜ ์ƒˆ๋กœ์šด ์žฌ๋Šฅ์„ ๊ณต์œ ํ•ด๋ณผ ์ˆ˜๋„ ์žˆ๊ฒ ์ง€?

๐Ÿ› ๏ธ ์ค€๋น„๋ฌผ

์ž, ๊ทธ๋Ÿผ ์šฐ๋ฆฌ์˜ ๋ฉ‹์ง„ ๊ฑฐ๋ฆฌ ์ธก์ •๊ธฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ค€๋น„๋ฌผ๋“ค์„ ์‚ดํŽด๋ณผ๊นŒ?

  • Arduino Nano ๋ณด๋“œ
  • HC-SR04 ์ดˆ์ŒํŒŒ ์„ผ์„œ
  • ๋ธŒ๋ ˆ๋“œ๋ณด๋“œ
  • ์ ํผ ์™€์ด์–ด (์ˆ˜-์ˆ˜, ์ˆ˜-์•”)
  • USB ์ผ€์ด๋ธ” (Arduino Nano ์—ฐ๊ฒฐ์šฉ)
  • OLED ๋””์Šคํ”Œ๋ ˆ์ด (์˜ต์…˜)
  • 9V ๋ฐฐํ„ฐ๋ฆฌ + ๋ฐฐํ„ฐ๋ฆฌ ํด๋ฆฝ (ํœด๋Œ€์šฉ์œผ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด)

์ด ์ •๋„๋ฉด ์ถฉ๋ถ„ํ•ด! ํ˜น์‹œ ์ด ์ค‘์— ๋ญ”๊ฐ€ ์—†๋‹ค๊ณ ? ๊ฑฑ์ • ๋งˆ, ์žฌ๋Šฅ๋„ท์—์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ๋„์›€์„ ๋ฐ›์•„ ๊ตฌํ•  ์ˆ˜ ์žˆ์„ ๊ฑฐ์•ผ. ์žฌ๋Šฅ๋„ท์€ ์ด๋Ÿฐ ์‹์œผ๋กœ ์„œ๋กœ์˜ ์žฌ๋Šฅ๊ณผ ์ž์›์„ ๊ณต์œ ํ•˜๋Š” ๋ฉ‹์ง„ ํ”Œ๋žซํผ์ด์ง€. ๐Ÿ˜‰

๐Ÿง  Arduino Nano: ์ž‘์ง€๋งŒ ๊ฐ•๋ ฅํ•œ ๋‘๋‡Œ

์šฐ๋ฆฌ์˜ ํ”„๋กœ์ ํŠธ์˜ ํ•ต์‹ฌ, Arduino Nano์— ๋Œ€ํ•ด ์ข€ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณผ๊นŒ? Arduino Nano๋Š” ์ž‘์€ ํฌ๊ธฐ์— ์—„์ฒญ๋‚œ ์„ฑ๋Šฅ์„ ๊ฐ€์ง„ ๋งˆ์ดํฌ๋กœ์ปจํŠธ๋กค๋Ÿฌ ๋ณด๋“œ์•ผ. ์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด, ์ •๋ง '๋‚˜๋…ธ' ์‚ฌ์ด์ฆˆ์ง€๋งŒ ๊ทธ ์•ˆ์— ๋‹ด๊ธด ๊ธฐ๋Šฅ์€ ์–ด๋งˆ์–ด๋งˆํ•ด!

Arduino Nano ๊ตฌ์กฐ๋„ Arduino Nano USB ์ „์› ๋””์ง€ํ„ธ ํ•€ ์•„๋‚ ๋กœ๊ทธ ํ•€ ATmega328 16MHz

Arduino Nano์˜ ์ฃผ์š” ํŠน์ง•์„ ์‚ดํŽด๋ณผ๊นŒ?

  • ๋งˆ์ดํฌ๋กœ์ปจํŠธ๋กค๋Ÿฌ: ATmega328
  • ๋™์ž‘ ์ „์••: 5V
  • ์ž…๋ ฅ ์ „์••: 7-12V
  • ๋””์ง€ํ„ธ I/O ํ•€: 14๊ฐœ (6๊ฐœ๋Š” PWM ์ถœ๋ ฅ ๊ฐ€๋Šฅ)
  • ์•„๋‚ ๋กœ๊ทธ ์ž…๋ ฅ ํ•€: 8๊ฐœ
  • ํ”Œ๋ž˜์‹œ ๋ฉ”๋ชจ๋ฆฌ: 32 KB
  • SRAM: 2 KB
  • EEPROM: 1 KB
  • ํด๋Ÿญ ์†๋„: 16 MHz

์ด ์ž‘์€ ๋ณด๋“œ ํ•˜๋‚˜๋กœ ์šฐ๋ฆฌ๋Š” ์ •๋ง ๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด. ์˜ค๋Š˜ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค ๊ฑฐ๋ฆฌ ์ธก์ •๊ธฐ๋Š” ๊ทธ์ค‘ ํ•˜๋‚˜์ผ ๋ฟ์ด์ง€. ์ƒ์ƒ๋ ฅ์„ ๋ฐœํœ˜ํ•ด๋ณด๋ฉด Arduino Nano๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋“ค์ด ๋ฌด๊ถ๋ฌด์ง„ํ•ด!

๐ŸŒŠ ์ดˆ์ŒํŒŒ ์„ผ์„œ: ์†Œ๋ฆฌ๋กœ ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ •ํ•œ๋‹ค๊ณ ?

์ž, ์ด์ œ ์šฐ๋ฆฌ์˜ ๋‘ ๋ฒˆ์งธ ์ฃผ์ธ๊ณต์ธ ์ดˆ์ŒํŒŒ ์„ผ์„œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ ์ฐจ๋ก€์•ผ. ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•  HC-SR04 ์ดˆ์ŒํŒŒ ์„ผ์„œ๋Š” ์–ด๋–ป๊ฒŒ ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ •ํ• ๊นŒ? ๐Ÿค”

๐Ÿฆ‡ ์žฌ๋ฏธ์žˆ๋Š” ์‚ฌ์‹ค: ๋ฐ•์ฅ๋“ค๋„ ์ดˆ์ŒํŒŒ๋ฅผ ์ด์šฉํ•ด ์ฃผ๋ณ€ ํ™˜๊ฒฝ์„ ํƒ์ง€ํ•˜๊ณ  ๋จน์ด๋ฅผ ์ฐพ์•„๋‹ค๋…€. ์šฐ๋ฆฌ์˜ ์„ผ์„œ๋Š” ๋งˆ์น˜ ์ž‘์€ ๋ฐ•์ฅ์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์ง€!

์ดˆ์ŒํŒŒ ์„ผ์„œ์˜ ๋™์ž‘ ์›๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„:

  1. ์ดˆ์ŒํŒŒ ๋ฐœ์‚ฌ: ์„ผ์„œ์—์„œ ์ดˆ์ŒํŒŒ๋ฅผ ๋ฐœ์‚ฌํ•ด.
  2. ๋ฐ˜์‚ฌํŒŒ ๋Œ€๊ธฐ: ๋ฐœ์‚ฌ๋œ ์ดˆ์ŒํŒŒ๊ฐ€ ๋ฌผ์ฒด์— ๋ถ€๋”ชํ˜€ ๋Œ์•„์˜ฌ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค.
  3. ์‹œ๊ฐ„ ์ธก์ •: ์ดˆ์ŒํŒŒ๊ฐ€ ๋Œ์•„์˜ค๋Š” ๋ฐ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์„ ์ธก์ •ํ•ด.
  4. ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ: ์ธก์ •๋œ ์‹œ๊ฐ„์„ ์ด์šฉํ•ด ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•ด.

์ดˆ์ŒํŒŒ์˜ ์†๋„๋Š” ๋Œ€๋žต 340m/s์•ผ. ์ด ์†๋„๋ฅผ ์ด์šฉํ•ด์„œ ์šฐ๋ฆฌ๋Š” ์•„์ฃผ ์ •ํ™•ํ•˜๊ฒŒ ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ •ํ•  ์ˆ˜ ์žˆ์ง€!

์ดˆ์ŒํŒŒ ์„ผ์„œ ๋™์ž‘ ์›๋ฆฌ ์ดˆ์ŒํŒŒ ์„ผ์„œ ๋ฌผ์ฒด ๋ฐœ์‚ฌ๋œ ์ดˆ์ŒํŒŒ ๋ฐ˜์‚ฌ๋œ ์ดˆ์ŒํŒŒ

HC-SR04 ์ดˆ์ŒํŒŒ ์„ผ์„œ์˜ ์ฃผ์š” ํŠน์ง•์„ ์‚ดํŽด๋ณผ๊นŒ?

  • ๋™์ž‘ ์ „์••: 5V
  • ๋™์ž‘ ์ „๋ฅ˜: 15mA
  • ๋™์ž‘ ์ฃผํŒŒ์ˆ˜: 40Hz
  • ์ตœ๋Œ€ ๋ฒ”์œ„: 4m
  • ์ตœ์†Œ ๋ฒ”์œ„: 2cm
  • ์ธก์ • ๊ฐ๋„: 15๋„
  • ํŠธ๋ฆฌ๊ฑฐ ์ž…๋ ฅ ์‹ ํ˜ธ: 10ยตs TTL ํŽ„์Šค
  • ๋ฐ˜ํ–ฅ ์ถœ๋ ฅ ์‹ ํ˜ธ: ์ž…๋ ฅ ๋น„๋ก€ TTL ํŽ„์Šค ํญ

์ด ์„ผ์„œ๋Š” ์ •๋ง ๋Œ€๋‹จํ•ด! 2cm์—์„œ 4m๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์•„์ฃผ ์ •ํ™•ํ•˜๊ฒŒ ์ธก์ •ํ•  ์ˆ˜ ์žˆ์ง€. ๊ฒŒ๋‹ค๊ฐ€ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ๊ต‰์žฅํžˆ ์‰ฌ์›Œ. Arduino์™€ ์—ฐ๊ฒฐํ•ด์„œ ๋ช‡ ์ค„์˜ ์ฝ”๋“œ๋งŒ ์ž‘์„ฑํ•˜๋ฉด ๋ฐ”๋กœ ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋‹ˆ, ์ •๋ง ๋†€๋ž์ง€ ์•Š์•„?

๐Ÿ”Œ ์—ฐ๊ฒฐ: Arduino์™€ ์ดˆ์ŒํŒŒ ์„ผ์„œ์˜ ๋งŒ๋‚จ

์ž, ์ด์ œ ์šฐ๋ฆฌ์˜ ๋‘ ์ฃผ์ธ๊ณต์„ ์—ฐ๊ฒฐํ•  ์‹œ๊ฐ„์ด์•ผ! Arduino Nano์™€ HC-SR04 ์ดˆ์ŒํŒŒ ์„ผ์„œ๋ฅผ ์–ด๋–ป๊ฒŒ ์—ฐ๊ฒฐํ•˜๋ฉด ๋ ๊นŒ? ๊ฑฑ์ • ๋งˆ, ์ƒ๊ฐ๋ณด๋‹ค ํ›จ์”ฌ ์‰ฌ์›Œ. ๐Ÿ˜‰

๋จผ์ €, HC-SR04 ์ดˆ์ŒํŒŒ ์„ผ์„œ์˜ ํ•€ ๊ตฌ์„ฑ์„ ์‚ดํŽด๋ณผ๊ฒŒ:

  • VCC: ์ „์› ๊ณต๊ธ‰ (5V)
  • Trig: ํŠธ๋ฆฌ๊ฑฐ ์‹ ํ˜ธ ์ž…๋ ฅ
  • Echo: ์—์ฝ” ์‹ ํ˜ธ ์ถœ๋ ฅ
  • GND: ์ ‘์ง€

์ด์ œ ์ด ํ•€๋“ค์„ Arduino Nano์™€ ์—ฐ๊ฒฐํ•ด๋ณผ ๊ฑฐ์•ผ. ์—ฌ๊ธฐ ์—ฐ๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ž์„ธํžˆ ์„ค๋ช…ํ•ด์ค„๊ฒŒ:

  1. VCC โ†’ 5V: ์„ผ์„œ์— ์ „์›์„ ๊ณต๊ธ‰ํ•ด์ค˜์•ผ ํ•ด. Arduino Nano์˜ 5V ํ•€๊ณผ ์„ผ์„œ์˜ VCC ํ•€์„ ์—ฐ๊ฒฐํ•ด์ค˜.
  2. Trig โ†’ D9: ํŠธ๋ฆฌ๊ฑฐ ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด Arduino์˜ ๋””์ง€ํ„ธ ํ•€ 9๋ฒˆ๊ณผ ์„ผ์„œ์˜ Trig ํ•€์„ ์—ฐ๊ฒฐํ•ด.
  3. Echo โ†’ D10: ์—์ฝ” ์‹ ํ˜ธ๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด Arduino์˜ ๋””์ง€ํ„ธ ํ•€ 10๋ฒˆ๊ณผ ์„ผ์„œ์˜ Echo ํ•€์„ ์—ฐ๊ฒฐํ•ด.
  4. GND โ†’ GND: ๋งˆ์ง€๋ง‰์œผ๋กœ, ์„ผ์„œ์˜ GND ํ•€์„ Arduino์˜ GND ํ•€๊ณผ ์—ฐ๊ฒฐํ•ด์ค˜.

์ด๋ ‡๊ฒŒ ์—ฐ๊ฒฐํ•˜๋ฉด ๊ธฐ๋ณธ์ ์ธ ์„ธํŒ…์€ ๋์ด์•ผ! ์ •๋ง ๊ฐ„๋‹จํ•˜์ง€?

Arduino Nano์™€ HC-SR04 ์—ฐ๊ฒฐ๋„ Arduino Nano HC-SR04 5V โ†’ VCC D9 โ†’ Trig D10 โ†’ Echo GND โ†’ GND

์ด ์—ฐ๊ฒฐ๋„๋ฅผ ๋ณด๋ฉด์„œ ์ฐจ๊ทผ์ฐจ๊ทผ ๋”ฐ๋ผ ํ•ด๋ณด์ž. ์ฒ˜์Œ์—๋Š” ์ข€ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ช‡ ๋ฒˆ ํ•ด๋ณด๋ฉด ๊ธˆ๋ฐฉ ์ต์ˆ™ํ•ด์งˆ ๊ฑฐ์•ผ. ๊ทธ๋ฆฌ๊ณ  ๊ธฐ์–ตํ•ด, ํ•ญ์ƒ ์ „์›์„ ์—ฐ๊ฒฐํ•˜๊ธฐ ์ „์— ๋ชจ๋“  ์—ฐ๊ฒฐ์ด ์ œ๋Œ€๋กœ ๋˜์—ˆ๋Š”์ง€ ๋‹ค์‹œ ํ•œ ๋ฒˆ ํ™•์ธํ•˜๋Š” ๊ฒŒ ์ข‹์•„. ์•ˆ์ „์ด ์ตœ์šฐ์„ ์ด๋‹ˆ๊นŒ! ๐Ÿ›ก๏ธ

๐Ÿ’ป ์ฝ”๋”ฉ ์‹œ์ž‘: ๊ฑฐ๋ฆฌ ์ธก์ •์˜ ๋งˆ๋ฒ•

์ž, ์ด์ œ ํ•˜๋“œ์›จ์–ด ์—ฐ๊ฒฐ์€ ๋๋‚ฌ์–ด. ๋‹ค์Œ์€ ๋ญ๋‹ค? ๋ฐ”๋กœ ์ฝ”๋”ฉ์ด์ง€! ๐Ÿง™โ€โ™‚๏ธ ์šฐ๋ฆฌ์˜ Arduino์—๊ฒŒ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ๋ ค์ค„ ์‹œ๊ฐ„์ด์•ผ. ๊ฑฑ์ • ๋งˆ, ์–ด๋ ค์šด ๊ฑฐ ์•„๋‹ˆ์•ผ. ํ•œ ์ค„ ํ•œ ์ค„ ์ฐจ๊ทผ์ฐจ๊ทผ ์„ค๋ช…ํ•ด์ค„๊ฒŒ.

๋จผ์ €, Arduino IDE๋ฅผ ์—ด๊ณ  ์ƒˆ๋กœ์šด ์Šค์ผ€์น˜๋ฅผ ์‹œ์ž‘ํ•ด๋ณด์ž. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด๋ด:


// HC-SR04 ์ดˆ์ŒํŒŒ ์„ผ์„œ ํ•€ ์„ค์ •
const int trigPin = 9;
const int echoPin = 10;

// ๋ณ€์ˆ˜ ์„ ์–ธ
long duration;
int distance;

void setup() {
  // ์‹œ๋ฆฌ์–ผ ํ†ต์‹  ์‹œ์ž‘
  Serial.begin(9600);
  
  // ํ•€ ๋ชจ๋“œ ์„ค์ •
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  // ํŠธ๋ฆฌ๊ฑฐ ํ•€ ์ดˆ๊ธฐํ™”
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  
  // ํŠธ๋ฆฌ๊ฑฐ ํ•€์— 10ยตs ๋™์•ˆ HIGH ์‹ ํ˜ธ ๋ณด๋‚ด๊ธฐ
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  // ์—์ฝ” ํ•€์œผ๋กœ๋ถ€ํ„ฐ ์‹ ํ˜ธ ์ฝ๊ธฐ
  duration = pulseIn(echoPin, HIGH);
  
  // ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ
  distance = duration * 0.034 / 2;
  
  // ์‹œ๋ฆฌ์–ผ ๋ชจ๋‹ˆํ„ฐ์— ๊ฑฐ๋ฆฌ ์ถœ๋ ฅ
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");
  
  delay(1000);  // 1์ดˆ ๋Œ€๊ธฐ
}

์šฐ์™€, ์ฝ”๋“œ๊ฐ€ ์ข€ ๊ธธ์–ด ๋ณด์ด์ง€? ํ•˜์ง€๋งŒ ๊ฑฑ์ • ๋งˆ. ํ•˜๋‚˜์”ฉ ๋œฏ์–ด๋ณด๋ฉด ์ •๋ง ๊ฐ„๋‹จํ•ด. ์ž, ์ด์ œ ์ฝ”๋“œ๋ฅผ ์ž์„ธํžˆ ์‚ดํŽด๋ณผ๊ฒŒ.

1. ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐ ํ•€ ์„ค์ •


const int trigPin = 9;
const int echoPin = 10;

long duration;
int distance;

์—ฌ๊ธฐ์„œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•  ํ•€ ๋ฒˆํ˜ธ์™€ ๋ณ€์ˆ˜๋“ค์„ ์„ ์–ธํ•˜๊ณ  ์žˆ์–ด. trigPin์€ 9๋ฒˆ, echoPin์€ 10๋ฒˆ์œผ๋กœ ์„ค์ •ํ–ˆ์–ด. ์ด๊ฑด ์šฐ๋ฆฌ๊ฐ€ ์•ž์„œ ์—ฐ๊ฒฐํ•œ ๋Œ€๋กœ์•ผ. duration์€ ์ดˆ์ŒํŒŒ๊ฐ€ ๋˜๋Œ์•„์˜ค๋Š” ์‹œ๊ฐ„์„, distance๋Š” ๊ณ„์‚ฐ๋œ ๊ฑฐ๋ฆฌ๋ฅผ ์ €์žฅํ•  ๊ฑฐ์•ผ.

2. setup() ํ•จ์ˆ˜


void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

setup() ํ•จ์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘๋  ๋•Œ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋ผ. ์—ฌ๊ธฐ์„œ๋Š” ์‹œ๋ฆฌ์–ผ ํ†ต์‹ ์„ ์‹œ์ž‘ํ•˜๊ณ  (์šฐ๋ฆฌ๊ฐ€ ๊ฑฐ๋ฆฌ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋กœ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ), ํ•€ ๋ชจ๋“œ๋ฅผ ์„ค์ •ํ•˜๊ณ  ์žˆ์–ด. trigPin์€ ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด๋‹ˆ๊นŒ ์ถœ๋ ฅ์œผ๋กœ, echoPin์€ ์‹ ํ˜ธ๋ฅผ ๋ฐ›์œผ๋‹ˆ๊นŒ ์ž…๋ ฅ์œผ๋กœ ์„ค์ •ํ–ˆ์ง€.

3. loop() ํ•จ์ˆ˜

์ด์ œ ์ง„์งœ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด์•ผ. loop() ํ•จ์ˆ˜๋Š” ๊ณ„์†ํ•ด์„œ ๋ฐ˜๋ณต ์‹คํ–‰๋˜๋Š” ๋ถ€๋ถ„์ด์•ผ.


void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  duration = pulseIn(echoPin, HIGH);
  
  distance = duration * 0.034 / 2;
  
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");
  
  delay(1000);
}

์ด ๋ถ€๋ถ„์„ ๋‹จ๊ณ„๋ณ„๋กœ ์„ค๋ช…ํ•ด์ค„๊ฒŒ:

  1. ํŠธ๋ฆฌ๊ฑฐ ์‹ ํ˜ธ ๋ณด๋‚ด๊ธฐ: trigPin์„ ์ž ๊น HIGH๋กœ ์„ค์ •ํ–ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ LOW๋กœ ๋ฐ”๊ฟ”. ์ด๊ฒŒ ์ดˆ์ŒํŒŒ๋ฅผ ๋ฐœ์‚ฌํ•˜๋Š” ์‹ ํ˜ธ์•ผ.
  2. ์—์ฝ” ์‹ ํ˜ธ ๋ฐ›๊ธฐ: pulseIn() ํ•จ์ˆ˜๋กœ echoPin์ด HIGH๊ฐ€ ๋˜๋Š” ์‹œ๊ฐ„์„ ์ธก์ •ํ•ด. ์ด๊ฒŒ ์ดˆ์ŒํŒŒ๊ฐ€ ๋ฌผ์ฒด์— ๋ถ€๋”ชํžˆ๊ณ  ๋Œ์•„์˜ค๋Š” ๋ฐ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์ด์•ผ.
  3. ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ: ์ธก์ •๋œ ์‹œ๊ฐ„์„ ์ด์šฉํ•ด ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•ด. ์—ฌ๊ธฐ์„œ 0.034๋Š” ์ŒํŒŒ์˜ ์†๋„(340m/s)๋ฅผ cm/ยตs ๋‹จ์œ„๋กœ ๋ฐ”๊พผ ๊ฐ’์ด์•ผ. 2๋กœ ๋‚˜๋ˆ„๋Š” ์ด์œ ๋Š” ์ดˆ์ŒํŒŒ๊ฐ€ ์™•๋ณตํ•˜๋‹ˆ๊นŒ!
  4. ๊ฒฐ๊ณผ ์ถœ๋ ฅ: ๊ณ„์‚ฐ๋œ ๊ฑฐ๋ฆฌ๋ฅผ ์‹œ๋ฆฌ์–ผ ๋ชจ๋‹ˆํ„ฐ์— ์ถœ๋ ฅํ•ด.
  5. ๋Œ€๊ธฐ: 1์ดˆ ๋™์•ˆ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ๋‹ค์Œ ์ธก์ •์„ ์‹œ์ž‘ํ•ด.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์šฐ๋ฆฌ์˜ ๊ฑฐ๋ฆฌ ์ธก์ •๊ธฐ๊ฐ€ ์™„์„ฑ๋˜๋Š” ๊ฑฐ์•ผ! ์ •๋ง ๋Œ€๋‹จํ•˜์ง€ ์•Š์•„? ์ด์ œ ์ด ์ฝ”๋“œ๋ฅผ Arduino Nano์— ์—…๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•ด๋ณด์ž.

๐Ÿš€ ์‹คํ–‰ ๋ฐ ํ…Œ์ŠคํŠธ: ์šฐ๋ฆฌ์˜ ์ž‘ํ’ˆ์„ ์‹œํ—˜ํ•ด๋ณด์ž!

๋“œ๋””์–ด ์šฐ๋ฆฌ์˜ ๊ฑฐ๋ฆฌ ์ธก์ •๊ธฐ๊ฐ€ ์™„์„ฑ๋์–ด! ์ด์ œ ์‹ค์ œ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•ด๋ณผ ์‹œ๊ฐ„์ด์•ผ. ์ •๋ง ํฅ๋ฏธ์ง„์ง„ํ•˜์ง€ ์•Š์•„? ๐Ÿ˜ƒ

ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„:

  1. Arduino IDE์—์„œ '์—…๋กœ๋“œ' ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์ฝ”๋“œ๋ฅผ Arduino Nano์— ์—…๋กœ๋“œํ•ด.
  2. ์—…๋กœ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด, IDE์˜ ์ƒ๋‹จ ๋ฉ”๋‰ด์—์„œ '๋„๊ตฌ' โ†’ '์‹œ๋ฆฌ์–ผ ๋ชจ๋‹ˆํ„ฐ'๋ฅผ ์„ ํƒํ•ด.
  3. ์‹œ๋ฆฌ์–ผ ๋ชจ๋‹ˆํ„ฐ๊ฐ€ ์—ด๋ฆฌ๋ฉด, ์šฐ์ธก ํ•˜๋‹จ์— '9600 ๋ณด๋“œ'๊ฐ€ ์„ ํƒ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด.
  4. ์ด์ œ ์ดˆ์ŒํŒŒ ์„ผ์„œ ์•ž์— ๋ฌผ์ฒด๋ฅผ ๋†“๊ณ  ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ •ํ•ด๋ด!

์‹œ๋ฆฌ์–ผ ๋ชจ๋‹ˆํ„ฐ์— "Distance: XX cm"์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๊ฑฐ๋ฆฌ๊ฐ€ ํ‘œ์‹œ๋  ๊ฑฐ์•ผ. ๋ฌผ์ฒด๋ฅผ ์•ž๋’ค๋กœ ์›€์ง์—ฌ๋ณด๋ฉด์„œ ๊ฑฐ๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณ€ํ•˜๋Š”์ง€ ๊ด€์ฐฐํ•ด๋ด.

๐Ÿ’ก ํŒ: ์ฒ˜์Œ์—๋Š” ์ž๋ฅผ ์ด์šฉํ•ด์„œ ์‹ค์ œ ๊ฑฐ๋ฆฌ์™€ ์ธก์ •๋œ ๊ฑฐ๋ฆฌ๋ฅผ ๋น„๊ตํ•ด๋ณด๋Š” ๊ฒƒ๋„ ์ข‹์•„. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์šฐ๋ฆฌ์˜ ๊ฑฐ๋ฆฌ ์ธก์ •๊ธฐ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ •ํ™•ํ•œ์ง€ ์•Œ ์ˆ˜ ์žˆ์ง€!

๋งŒ์•ฝ ๊ฒฐ๊ณผ๊ฐ€ ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฅด๋‹ค๋ฉด, ๋‹ค์Œ ์‚ฌํ•ญ๋“ค์„ ์ฒดํฌํ•ด๋ด:

  • ๋ชจ๋“  ์—ฐ๊ฒฐ์ด ์ œ๋Œ€๋กœ ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•ด.
  • ์ฝ”๋“œ์— ์˜คํƒ€๊ฐ€ ์—†๋Š”์ง€ ๋‹ค์‹œ ํ•œ ๋ฒˆ ํ™•์ธํ•ด.
  • ์„ผ์„œ ์•ž์— ์žฅ์• ๋ฌผ์ด ์—†๋Š”์ง€ ํ™•์ธํ•ด.
  • ์„ผ์„œ๊ฐ€ ๋ฌผ์ฒด๋ฅผ ํ–ฅํ•ด ์ œ๋Œ€๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด.

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ, ์ด ์ •๋„๋งŒ ์ฒดํฌํ•ด๋„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๊ฑฐ์•ผ. ๊ทธ๋ž˜๋„ ์•ˆ ๋œ๋‹ค๋ฉด? ๊ฑฑ์ • ๋งˆ, ์šฐ๋ฆฌ์—๊ฒ ์žฌ๋Šฅ๋„ท์ด ์žˆ์ž–์•„! ๊ฑฐ๊ธฐ์„œ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค์˜ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์„ ๊ฑฐ์•ผ.

๐Ÿ”ง ๊ฐœ์„  ๋ฐ ํ™•์žฅ: ๋” ๋ฉ‹์ง„ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด๋ณด์ž!

์šฐ๋ฆฌ์˜ ๊ธฐ๋ณธ์ ์ธ ๊ฑฐ๋ฆฌ ์ธก์ •๊ธฐ๊ฐ€ ์ž˜ ๋™์ž‘ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ์ด์ œ ๋” ๋ฉ‹์ง„ ๊ธฐ๋Šฅ๋“ค์„ ์ถ”๊ฐ€ํ•ด๋ณผ ์ฐจ๋ก€์•ผ. ์–ด๋–ค ๊ฒƒ๋“ค์„ ํ•ด๋ณผ ์ˆ˜ ์žˆ์„๊นŒ? ๐Ÿ˜Ž

1. LED๋กœ ๊ฑฐ๋ฆฌ ํ‘œ์‹œํ•˜๊ธฐ

๊ฑฐ๋ฆฌ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ƒ‰์˜ LED๋ฅผ ์ผœ๋ณด๋Š” ๊ฑด ์–ด๋•Œ? ์˜ˆ๋ฅผ ๋“ค์–ด:

  • 0-10cm: ๋นจ๊ฐ„์ƒ‰ LED
  • 11-50cm: ๋…ธ๋ž€์ƒ‰ LED
  • 51cm ์ด์ƒ: ์ดˆ๋ก์ƒ‰ LED

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‹œ๊ฐ์ ์œผ๋กœ๋„ ๊ฑฐ๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒ ์ง€? ์ฝ”๋“œ๋Š” ์ด๋ ‡๊ฒŒ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์–ด:


const int redLED = 3;
const int yellowLED = 4;
const int greenLED = 5;

void setup() {
  // ๊ธฐ์กด ์ฝ”๋“œ...
  pinMode(redLED, OUTPUT);
  pinMode(yellowLED, OUTPUT);
  pinMode(greenLED, OUTPUT);
}

void loop() {
  // ๊ธฐ์กด์˜ ๊ฑฐ๋ฆฌ ์ธก์ • ์ฝ”๋“œ...

  // LED ์ œ์–ด
  if (distance <= 10) {
    digitalWrite(redLED, HIGH);
    digitalWrite(yellowLED, LOW);
    digitalWrite(greenLED, LOW);
  } else if (distance <= 50) {
    digitalWrite(redLED, LOW);
    digitalWrite(yellow  LED, HIGH);
    digitalWrite(greenLED, LOW);
  } else {
    digitalWrite(redLED, LOW);
    digitalWrite(yellowLED, LOW);
    digitalWrite(greenLED, HIGH);
  }
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฑฐ๋ฆฌ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ƒ‰์˜ LED๊ฐ€ ์ผœ์งˆ ๊ฑฐ์•ผ. ์ •๋ง ๋ฉ‹์ง€์ง€ ์•Š์•„?

2. ๋ถ€์ €๋กœ ๊ฒฝ๊ณ ์Œ ๋‚ด๊ธฐ

๋ฌผ์ฒด๊ฐ€ ๋„ˆ๋ฌด ๊ฐ€๊นŒ์›Œ์ง€๋ฉด ๊ฒฝ๊ณ ์Œ์„ ๋‚ด๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด๋ณด์ž. ์ด๊ฑด ์ฃผ์ฐจ ๋ณด์กฐ ์‹œ์Šคํ…œ ๊ฐ™์€ ๊ฑธ ๋งŒ๋“ค ๋•Œ ์œ ์šฉํ•  ๊ฑฐ์•ผ!


const int buzzerPin = 6;

void setup() {
  // ๊ธฐ์กด ์ฝ”๋“œ...
  pinMode(buzzerPin, OUTPUT);
}

void loop() {
  // ๊ธฐ์กด์˜ ๊ฑฐ๋ฆฌ ์ธก์ • ์ฝ”๋“œ...

  // ๋ถ€์ € ์ œ์–ด
  if (distance < 20) {
    tone(buzzerPin, 1000, 100);  // 1kHz ์†Œ๋ฆฌ๋ฅผ 100ms ๋™์•ˆ ๋ƒ„
  } else {
    noTone(buzzerPin);
  }
}

์ด์ œ ๋ฌผ์ฒด๊ฐ€ 20cm ์ด๋‚ด๋กœ ๊ฐ€๊นŒ์›Œ์ง€๋ฉด ๊ฒฝ๊ณ ์Œ์ด ์šธ๋ฆด ๊ฑฐ์•ผ. ์ฃผ์˜ํ•ด์•ผ ํ•  ๋•Œ ๊ท€๋กœ๋„ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์–ด!

3. OLED ๋””์Šคํ”Œ๋ ˆ์ด๋กœ ๊ฑฐ๋ฆฌ ํ‘œ์‹œํ•˜๊ธฐ

์‹œ๋ฆฌ์–ผ ๋ชจ๋‹ˆํ„ฐ ๋Œ€์‹  OLED ๋””์Šคํ”Œ๋ ˆ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋” ๋ฉ‹์ง„ ๊ฑฐ๋ฆฌ ์ธก์ •๊ธฐ๊ฐ€ ๋  ๊ฑฐ์•ผ. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ปดํ“จํ„ฐ ์—†์ด๋„ ๊ฑฐ๋ฆฌ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์ง€!

๋จผ์ €, Adafruit_SSD1306 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ด. ๊ทธ๋ฆฌ๊ณ  ์ฝ”๋“œ๋ฅผ ์ด๋ ‡๊ฒŒ ์ˆ˜์ •ํ•ด๋ณด์ž: