getting_started_with_arduino
Differences
This shows you the differences between two versions of the page.
getting_started_with_arduino [2010/02/04 15:10] – suapapa | getting_started_with_arduino [2013/08/03 05:04] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 6: | Line 6: | ||
====== 서문 ====== | ====== 서문 ====== | ||
- | 몇년 전 나는 아주 흥미로운 과제를 맡은 적이 있다: 그것은 디자이너들에게 그들이 디자인하는 물체의 양방향성 프로토타입을 | + | 몇 년 전 나는 아주 흥미로운 과제를 맡은 적이 있다. 그것은 디자이너들에게 그들이 디자인하는 물체의 양방향성 프로토타입을 스스로 만들 수 있도록 아주 기본적인 전자 지식을 가르치는 것이었다. |
- | 나는 내가 학교에서 전자지식을 배웠던 것과 같은 방법을 따라 가르치려 했는데, 머지 않아 기대했던 대로 되지 않고 있음을 알게 되었다. | + | 무의식 적으로 내가 학교에서 전자에 대해 배웠던 방법을 사용해 가르치기 시작했는데 |
- | 무의식 적으로 | + | |
- | 실제로 나는, 학교에서 전자를 배우기 전부터 매우 특별한 방법, 이론은 매우 부족하지만, 손으로 터득한 많은 경험으로 이미 전자 기술에 대해 알고 있었다. 교과과정 이전부터 나는 경험적으로 전자에 대해 알고 있었었다. 이론은 거의 없이 직접 만져서 얻은. | + | 실제로 나는, 학교에서 전자를 배우기 전부터 매우 특별한 방법인 이론은 매우 부족하지만 손으로 터득한 많은 경험으로 이미 전자 기술에 대해 알고 있었다. |
내가 전자지식을 얻게 된 진짜 과정들을 생각해 보니 다음과 같았다. | 내가 전자지식을 얻게 된 진짜 과정들을 생각해 보니 다음과 같았다. | ||
- | * 입수할 수 있는 전자장치들을 분해한다. | + | * 입수할 수 있는 전자 장치들을 분해한다. |
* 천천히 각 부품들에 대해 배운다. | * 천천히 각 부품들에 대해 배운다. | ||
- | * 더 깊게 생각해 보기 시작하여, | + | * 더 깊게 생각해 보기 시작하여, |
* 전자 잡지들에서 파는 키트를 만들어 본다. | * 전자 잡지들에서 파는 키트를 만들어 본다. | ||
- | * 헤집어 | + | * 헤집어 |
- | 내가 작은 꼬마였을 때, 나는 | + | 어린 시절, 나는 물건들이 |
- | 이런 해부 실습을 꽤 많이 한 뒤에, 나는 어떤 전자 부품들이 있고 대략 어떤 역할을 하는지 알 수 있게 되었다. 이런 지식을 근원에는 | + | 이런 해부 실습을 꽤 많이 한 뒤에, 나는 어떤 전자 부품들이 있고 대략 어떤 역할을 하는지 알 수 있게 되었다. 이런 지식의 배경에는 아버지께서 |
- | 기사들을 | + | 기사를 읽고 또 읽는 과정들은 회도들을 분해하면서 얻은 지식들을 합쳐져, 느리지만 효과적인 순환 과정이 되었다. |
- | 아버지가 내게 십대들을 대상으로 한 전자 학습 키트를 선물해 주신 | + | 아버지께서 |
이 새 도구를 사용해 나는 빠르게 회로를 만들고, 어떤 일이 일어나는지 확인해 볼 수 있었다. 이 프로토타입을 만드는 주기는 점점 더 짧아졌다. | 이 새 도구를 사용해 나는 빠르게 회로를 만들고, 어떤 일이 일어나는지 확인해 볼 수 있었다. 이 프로토타입을 만드는 주기는 점점 더 짧아졌다. | ||
- | 그 다음으로는, 라디오, 앰프, 끔찍한 노이즈나 괜찮은 소리가 나는 회로들, 강우 센서, 조그만 로봇들을 만들었었다. | + | 그 다음으로는 라디오, 앰프, 끔찍한 노이즈나 괜찮은 소리가 나는 회로들, 강우 센서, 조그만 로봇들을 만들었었다. |
- | 나는 | + | 나는 |
+ | 팅커링은 어떻게 해야 하는지 정확히 모르는 상태에서 직관, 상상, 호기심 등을 따라 일을 시도할 때 일어난다. 팅커링을 할 때 따라야할 교범 같은 것은 없다. 즉 실패란 없으며, 옳고 그름 나뉘지도 않는다. 이는 어떻게 작동하는지와 다시 작동하게 하는 방법을 알아내는 것에 관한 것이다. | ||
- | 팅커링은 어떻게 해야 하는지 정확히 모르는 상태에서 직관, 상상, 호기심 등을 따라 일을 시도할 때 일어난다. 팅커링을 할 때 따라야할 교범 같은 것은 없다-즉 실패란 없으며, 옳고 그름 | + | 기묘한 발명품, 기계들, 크게 |
- | 기묘한 발명품, 기계들, 크게 어긋나 있는 물체들이 조화롭게 동작하는 것-이런 것들이 팅커링이다. | + | 팅커링은, |
- | + | ||
- | 팅커링은, | + | |
www.exploratorium.edu/ | www.exploratorium.edu/ | ||
- | 내 어릴 적 경험에 비추어, 나는 | + | 어릴 적 경험에 비추어, 나는 원하는 회로를 만들기 위해서는 기본적인 부품들부터 시작해 얼마나 많은 경험이 필요한지를 알게 되었다. |
- | 다른 도약점은 1982년 여름에 부모님과 함께 런던에 가서, 그곳의 | + | 다른 도약점은 1982년 여름에 부모님과 함께 런던에 가서 과학박물관을 관람하느라 |
- | 그곳에서 | + | 그곳에서, 많은 어플리케이션에서 엔지니어들은 더 이상 기본 부품들로부터 회로를 만들지 않고, 마이크로프로세서를 사용해 다량의 |
그곳에서 돌아와서는 돈을 모으기 시작했는데, | 그곳에서 돌아와서는 돈을 모으기 시작했는데, | ||
- | 그 후로 | + | 그 후로 |
- | 이십여 년이지나, | + | 이십여 년이지나, |
- 마시모 | - 마시모 | ||
+ | ===== 감사의 글 ===== | ||
+ | 이 책을 루이자(Luisa)와 알렉산드라(Alexandra)에게 바친다. | ||
+ | |||
+ | 우선 아두이노 팀의 파트너 David Cuartielles, | ||
+ | |||
+ | 그녀 자신은 모르겠지만 Barbara Ghella의 정확한 조언이 없었다면 아두이노와 이 책은 없었을 지도 모른다. | ||
+ | |||
+ | Bill Verplank는 내게 피지컬 컴퓨팅과 더 많은 것들을 가르쳐 주었다. | ||
+ | |||
+ | 내게 기회를 준 Gillian Crampton-Smith과 그녀에게 배운 모든 것들에 감사한다. | ||
+ | |||
+ | Wiring 플랫폼을 만든 Hernando Barragan에게 감사를 전한다. | ||
+ | |||
+ | Brian Jepson는 훌륭한 편집자로 전 과정에서 열정적인 도움을 주었다. | ||
+ | |||
+ | Nancy Kotary, Brian Scott, Terry Bronson, Patti Schiendelman 는 내가 작성한 글들은 책으로 마무리 해 주었다. | ||
+ | |||
+ | 더 많은 사람들에게 감사를 전하고 싶지만, 브라이언이 공간이 부족하다고 하는 관계로 여러 이유에서 감사들 드리는 사람들의 이름을 나열한다. | ||
+ | |||
+ | Adam Somlai-Fisher, | ||
+ | Alessandro Germinasi, Alessandro Masserdotti, | ||
+ | Anna Capellini, Casey Reas, Chris Anderson, Claudio Moderini, | ||
+ | Clementina Coppini, Concetta Capecchi, Csaba Waldhauser, | ||
+ | Dario Buzzini, Dario Molinari, Dario Parravicini, | ||
+ | Edoardo Brambilla, Elisa Canducci, Fabio Violante, Fabio Zanola, | ||
+ | Fabrizio Pignoloni, Flavio Mauri, Francesca Mocellin, Francesco | ||
+ | Monico, Giorgio Olivero, Giovanna Gardi, Giovanni Battistini, | ||
+ | Heather Martin, Jennifer Bove, Laura Dellamotta, Lorenzo | ||
+ | Parravicini, | ||
+ | Teresa Longoni, Massimiliano Bolondi, Matteo Rivolta, Matthias | ||
+ | Richter, Maurizio Pirola, Michael Thorpe, Natalia Jordan, | ||
+ | Ombretta Banzi, Oreste Banzi, Oscar Zoggia, Pietro Dore, | ||
+ | Prof Salvioni, Raffaella Ferrara, Renzo Giusti, Sandi Athanas, | ||
+ | Sara Carpentieri, | ||
+ | Veronika Bucko. | ||
====== 1/도입 ====== | ====== 1/도입 ====== | ||
아두이노는 간단한 입/ | 아두이노는 간단한 입/ | ||
- | 다음과 같은 특징들이 아두이노를 다른 플랫폼과 구별되게 만들어 | + | 다음과 같은 특징들이 아두이노를 다른 플랫폼과 구별해 준다. |
* 멀티 플랫폼 환경이다 : 윈도, 매킨토시, | * 멀티 플랫폼 환경이다 : 윈도, 매킨토시, | ||
- | * 아티스트와 디자이너들이 사용하는 쉬운 개발환경인, | + | * 아티스트와 디자이너들이 사용하기 쉬운 개발환경인, |
* 시리얼 케이블이 아닌 USB 케이블을 통해 프로그램 할 수 있다. 최근의 컴퓨터에는 시리얼 포트가 없는 경우가 종종 있기 때문에, 이 특징은 유용하다. | * 시리얼 케이블이 아닌 USB 케이블을 통해 프로그램 할 수 있다. 최근의 컴퓨터에는 시리얼 포트가 없는 경우가 종종 있기 때문에, 이 특징은 유용하다. | ||
* 하드웨어와 소프트웨어 모드 오픈소스로 여러분이 원한다면 회로도를 다운로드 받고, 따로 모든 부품들을 구입하여 여러분만의 아두이노를 만들 수 있다. 아두이노의 창시자들에게 어떠한 대가도 지불할 필요 없다. | * 하드웨어와 소프트웨어 모드 오픈소스로 여러분이 원한다면 회로도를 다운로드 받고, 따로 모든 부품들을 구입하여 여러분만의 아두이노를 만들 수 있다. 아두이노의 창시자들에게 어떠한 대가도 지불할 필요 없다. | ||
Line 74: | Line 107: | ||
===== 대상 독자 ===== | ===== 대상 독자 ===== | ||
- | 이 책은 " | + | 이 책은 " |
참고: 아두이노는 헤르난도 베르간(Hernando Barragan)이 이탈리아 이브레아 IDII에서 저자와 케이시 리스(Casey Reas)하에서 공부하며 작성한 와이어링(Wiring) 플랫폼을 기반으로 한 논문을 바탕으로 만들어졌다. | 참고: 아두이노는 헤르난도 베르간(Hernando Barragan)이 이탈리아 이브레아 IDII에서 저자와 케이시 리스(Casey Reas)하에서 공부하며 작성한 와이어링(Wiring) 플랫폼을 기반으로 한 논문을 바탕으로 만들어졌다. | ||
- | 아두이노가 대중화 되어감에 따라, 나는 | + | 아두이노가 대중화 되어감에 따라 경험자들, |
- | 아두이노는 인터엑션 디자인(Interaction Design: 상호 작용하는 디자인)을 가르치기 위해 태어났다. 이런 디자인을 하기 위해서는 반드시 프로토타입을 만드는 과정을 거치게 된다. | + | 아두이노는 인터렉션 디자인(Interaction Design: 상호 작용하는 디자인)을 가르치기 위해 태어났다. 이런 디자인을 하기 위해서는 반드시 프로토타입을 만드는 과정을 거치게 된다. |
- | 인터엑션 디자인은, | + | 인터렉션 디자인은, |
- | 오늘날 인터엑션 디자인은 우리(사람)와 물체들 간 의미 있는 경험을 만드는 것이라 여겨진다. 이는 우리와 기술 간의 아름다운-그리고 아마도 논란이 될 수도 있는-경험의 창조를 살펴보기 위한 좋은 방법이다. 인터엑션 디자인은 계속 완성도를 높여가는 프로토 타입을 사용한 쌍방향 과정을 통한 디자인 방법이 좋다. 이러한 접근방법-이는 또한 일부 " | + | 오늘날 인터렉션 디자인은 우리(사람)와 물체들 간 의미 있는 경험을 만드는 것이라 여겨진다. 이는 우리와 기술 간의 아름다운-그리고 아마도 논란이 될 수도 있는-경험의 창조를 살펴보기 위한 좋은 방법이다. 인터렉션 디자인은 계속 완성도를 높여가는 프로토 타입을 사용한 쌍방향 과정을 통한 디자인 방법이 좋다. 이러한 접근방법-이는 또한 일부 " |
- | 특히 아두이노를 사용한 인터엑션 디자인은 피지컬 컴퓨팅(또는 피지컬 인터엑션 디자인)으로 구분된다. | + | 특히 아두이노를 사용한 인터렉션 디자인은 피지컬 컴퓨팅(또는 피지컬 인터렉션 디자인)으로 구분된다. |
===== 피지컬 컴퓨팅이란? | ===== 피지컬 컴퓨팅이란? | ||
피지컬 컴퓨팅에서는 디자이너나 아티스트들이 새로운 물체의 프로토타입을 만드는데 전자지식을 사용한다. | 피지컬 컴퓨팅에서는 디자이너나 아티스트들이 새로운 물체의 프로토타입을 만드는데 전자지식을 사용한다. | ||
- | 여기에는 마이크로컴퓨터(칩 안에 들어있는 작은 컴퓨터)안에 들어있는 소프트웨어를 실행해 동작을 구현한 센서와 엑튜레이터를 통해 사람과 소통하는 | + | 여기에는 마이크로컴퓨터(칩 안에 들어있는 작은 컴퓨터)안에 들어있는 소프트웨어를 실행해 동작을 구현한 센서와 엑튜레이터를 통해 사람과 소통하는 |
과거에는 전자지식을 사용하기 위해서는 처음부터 끝까지 엔지니어를 상대해야만 했고, 회로를 만드는 일은 한 번에 하나의 작은 부품을 만드는 것을 의미했었다: | 과거에는 전자지식을 사용하기 위해서는 처음부터 끝까지 엔지니어를 상대해야만 했고, 회로를 만드는 일은 한 번에 하나의 작은 부품을 만드는 것을 의미했었다: | ||
Line 102: | Line 135: | ||
아두이노의 철학은 말로 설명하는 것 보다는 디자인을 직접 만드는 것에 기반을 두고 있다. 이것은 더 나은 프로토타입을 만들기 위한 더 빠르고 강력한 방법을 찾아 온 결과이다. 우리는 여러 프로토타이핑 기술들과 손을 사용해 생각하는 방법들을 거쳐 왔다. | 아두이노의 철학은 말로 설명하는 것 보다는 디자인을 직접 만드는 것에 기반을 두고 있다. 이것은 더 나은 프로토타입을 만들기 위한 더 빠르고 강력한 방법을 찾아 온 결과이다. 우리는 여러 프로토타이핑 기술들과 손을 사용해 생각하는 방법들을 거쳐 왔다. | ||
- | 종래의 엔지니어링은 A로 부터 B를 얻는 고정된 과정을 기반을 두고 있다: 아두이노 방식은 그 과정에서 길을 잃고 C를 찾아낼 수도 있다는 즐거움 이다. | + | 종래의 엔지니어링은 A로 부터 B를 얻는 고정된 과정을 기반을 두고 있는데 반해, |
이는 우리가 찾아낸 팅커링 방법으로-목표가 정하지 않은 채로 놀다가 기대하지 않았던 것들을 찾는 것이다. 또한, 더 나은 프로토타입을 만들기 위한 방법을 찾는 과정에서 우리는 소프트웨어와 하드웨어의 중간단계를 수정할 수 있게 해 주는 몇몇 소프트웨어 패키지들을 선택했다. | 이는 우리가 찾아낸 팅커링 방법으로-목표가 정하지 않은 채로 놀다가 기대하지 않았던 것들을 찾는 것이다. 또한, 더 나은 프로토타입을 만들기 위한 방법을 찾는 과정에서 우리는 소프트웨어와 하드웨어의 중간단계를 수정할 수 있게 해 주는 몇몇 소프트웨어 패키지들을 선택했다. | ||
Line 147: | Line 180: | ||
===== 우리는 고물이 좋아 ===== | ===== 우리는 고물이 좋아 ===== | ||
- | 요즘 사람들은 구형 프린터, 컴퓨터, 희한한 사무기기, | + | 요즘 사람들은 구형 프린터, 컴퓨터, 희한한 사무기기, |
===== 장난감 해킹 ===== | ===== 장난감 해킹 ===== | ||
Line 172: | Line 205: | ||
아두이노 보드는 작은 마이크로컨트롤러 보드이다. 마이크로컨트롤러 보드란, 작은 칩(마이크로 컨트롤러)안에 컴퓨터 전체를 구현한 부품을 포함하는 자극 회로 기판(보드)이다. 이 컴퓨터는 저자가 이 책을 쓰는데 사용하고 있는 맥북에 비해 적어도 천 배는 더 저 성능이다. 하지만 훨씬 싸며 재미있는 장치들을 만드는데 매우 유용하다. 아두이노 보드를 보면, 28개의 " | 아두이노 보드는 작은 마이크로컨트롤러 보드이다. 마이크로컨트롤러 보드란, 작은 칩(마이크로 컨트롤러)안에 컴퓨터 전체를 구현한 부품을 포함하는 자극 회로 기판(보드)이다. 이 컴퓨터는 저자가 이 책을 쓰는데 사용하고 있는 맥북에 비해 적어도 천 배는 더 저 성능이다. 하지만 훨씬 싸며 재미있는 장치들을 만드는데 매우 유용하다. 아두이노 보드를 보면, 28개의 " | ||
- | 우리(아두이노 팀)는 이 마이크로컨트롤러가 잘 동작하고, | + | 우리(아두이노 팀)는 이 마이크로컨트롤러가 잘 동작하고, |
이들 그림들은 아두이노 보드를 확인할 수 있다. 처음에는, | 이들 그림들은 아두이노 보드를 확인할 수 있다. 처음에는, | ||
Line 247: | Line 280: | ||
====== 4/정말로 아두이노 시작하기 ====== | ====== 4/정말로 아두이노 시작하기 ====== | ||
- | 이제 여러분은 | + | 이제 여러분은 |
- | ===== 교감형 | + | ===== 인터렉티브 |
- | 우리가 아두이노를 사용해 만드는 물건들은 "교감형 | + | 우리가 아두이노를 사용해 만드는 물건들은 "인터렉티브 |
이러한 장치는 센서를 통해 받은 내용을 소프트웨어로 구현된 행동을 따라 처리한다. 그리고 엑츄에이터(acturator)라 불리는 전자 신호를 물리적 행동으로 바꾸는 장치를 통해 실제 세상과 교감한다. | 이러한 장치는 센서를 통해 받은 내용을 소프트웨어로 구현된 행동을 따라 처리한다. 그리고 엑츄에이터(acturator)라 불리는 전자 신호를 물리적 행동으로 바꾸는 장치를 통해 실제 세상과 교감한다. | ||
- | 그림 4-1. 교감형 | + | 그림 4-1. 인터렉티브 |
===== 센서와 엑츄에이터 ===== | ===== 센서와 엑츄에이터 ===== | ||
Line 364: | Line 397: | ||
{ | { | ||
</ | </ | ||
- | loop()는 여러분의 | + | loop()는 여러분의 |
<code c> | <code c> | ||
digitalWrite(LED, | digitalWrite(LED, | ||
Line 402: | Line 435: | ||
===== 앞으로 우리가 만들어 볼 것 ===== | ===== 앞으로 우리가 만들어 볼 것 ===== | ||
- | 나는 언제나 빛과 기술을 사용해 다양한 광원을 조절하는 능력이 매력적이라고 생각했다. 운 좋게도, 나는 빛을 제어해 사람들과 교감하는 흥미로운 프로젝트에 충분히 참여해 보았다. 아두이노는 정말로 이러한 일에 걸맞다. 이 책을 통해 우리는 아두이노를 어떻게 | + | 나는 언제나 빛과 기술을 사용해 다양한 광원을 조절하는 능력이 매력적이라고 생각했다. 운 좋게도, 나는 빛을 제어해 사람들과 교감하는 흥미로운 프로젝트에 충분히 참여해 보았다. 아두이노는 정말로 이러한 일에 걸맞다. 이 책을 통해 우리는 아두이노를 어떻게 |
다음 장에선, 엔지니어에겐 지루할 테지만, 신입 아두이노 프로그래머를 겁주지 않는 방법으로 전기의 기본에 대해 설명할 것이다. | 다음 장에선, 엔지니어에겐 지루할 테지만, 신입 아두이노 프로그래머를 겁주지 않는 방법으로 전기의 기본에 대해 설명할 것이다. | ||
Line 499: | Line 532: | ||
앞서 언급했듯이. 불을 켜기 위해 손가락으로 계속 누르고 있어야 한다는 건 그다지 실용적이지 못하다. 그러므로 " | 앞서 언급했듯이. 불을 켜기 위해 손가락으로 계속 누르고 있어야 한다는 건 그다지 실용적이지 못하다. 그러므로 " | ||
- | 이 동작을 위해서 우리는 변수라 불리는 것을 사용할 것이다.(벌서 사용해 봤지만 아직 변수에 대해 설명하지는 않았다.) 변수는 아두이노에서 여러분의 데이터를 저장할 수 있는 곳인 메모리에 존재한다. 이는 접착식 메모지와 같은 것이라고 생각할 수 있다. 보통 메모지는, | + | 이 동작을 위해서 우리는 변수라 불리는 것을 사용할 것이다.(벌서 사용해 봤지만 아직 변수에 대해 설명하지는 않았다.) 변수는 아두이노에서 여러분의 데이터를 저장할 수 있는 곳인 메모리에 존재한다. 이는 접착식 메모지와 같은 것이라고 생각할 수 있다. 보통 메모지는, |
<code c> | <code c> | ||
int val = 0; | int val = 0; | ||
Line 554: | Line 587: | ||
이제 이 코드를 테스트 해 보자. 동작을 하긴 하는데 이상한 점이 발견할 것이다. 빛이 너무 빠르게 꺼다 켰다를 반복해서 제대로 켜진 상태나, 꺼진 상태로 설정하기 힘들다. | 이제 이 코드를 테스트 해 보자. 동작을 하긴 하는데 이상한 점이 발견할 것이다. 빛이 너무 빠르게 꺼다 켰다를 반복해서 제대로 켜진 상태나, 꺼진 상태로 설정하기 힘들다. | ||
- | 그럼, 코드에서 흥미로운 부분을 살펴보자: state는 변수로 LED가 끄고 켜짐에 따라 0과 1을 저장한다. 버튼이 떼어진 상태에서, | + | 그럼, 코드에서 흥미로운 부분을 살펴보자. state는 변수로 LED가 끄고 켜짐에 따라 0과 1을 저장한다. 버튼이 떼어진 상태에서, |
- | + | ||
- | 그 후에, 버튼의 현재 상태를 읽어, 만약 눌려있다면 (val == HIGH), state를 0 에서 1로 바꾸고, 떼어져 있다면 반대로 바꾼다. 이 동작을 위해 우리는 작은 트릭을 사용했다. state 값이 1과 0만 될 수 있으므로, | + | |
- | + | ||
- | state = 1 – state; | + | |
+ | 그 후에, 버튼의 현재 상태를 읽어, 만약 눌려있다면 (val == HIGH), state를 0 에서 1로 바꾸고, 떼어져 있다면 반대로 바꾼다. 이 동작을 위해 우리는 작은 트릭을 사용했다. state 값이 1과 0만 될 수 있으므로, | ||
+ | <code c> | ||
+ | state = 1 – state; | ||
+ | </ | ||
위 식은 수학에서는 말이 안 되는 이야기 일 수 있겠지만 프로그래밍에서는 맞는 식이다. 프로그래밍에서 기호 = 는 "내 뒤에 오는 결과를 내 앞의 변수 이름에 대입" | 위 식은 수학에서는 말이 안 되는 이야기 일 수 있겠지만 프로그래밍에서는 맞는 식이다. 프로그래밍에서 기호 = 는 "내 뒤에 오는 결과를 내 앞의 변수 이름에 대입" | ||
Line 568: | Line 601: | ||
어떻게 수정할 수 있을까? 우리는 버튼이 눌려진 바로 그 순간을 감지해 내야하며, | 어떻게 수정할 수 있을까? 우리는 버튼이 눌려진 바로 그 순간을 감지해 내야하며, | ||
- | 예제 03B 에 그렇게 동작하는 코드를 포함해 봤다: | + | 예제 03B 에 그렇게 동작하는 코드를 포함해 봤다. |
<code c> | <code c> | ||
// 예제 03B: 버튼이 눌리면 LED를 켜기 | // 예제 03B: 버튼이 눌리면 LED를 켜기 | ||
Line 614: | Line 647: | ||
푸쉬버턴이 바운싱할 때 아두이노는 반복적으로 켜지고 꺼지는 신호가 아주 빠르게 바뀌는 것처럼 보게 된다. 바운싱을 제거하기 위한 기술적인 방법이 많이 개발되어 있지만, 경험 상, 이정도의 간단한 코드에서는 대개, 변경을 감지할 때 10~50 미리초의 정도 대기하도록 추가하는 정도면 충분하다. | 푸쉬버턴이 바운싱할 때 아두이노는 반복적으로 켜지고 꺼지는 신호가 아주 빠르게 바뀌는 것처럼 보게 된다. 바운싱을 제거하기 위한 기술적인 방법이 많이 개발되어 있지만, 경험 상, 이정도의 간단한 코드에서는 대개, 변경을 감지할 때 10~50 미리초의 정도 대기하도록 추가하는 정도면 충분하다. | ||
- | 예제 03C가 최종 코드이다: | + | 예제 03C가 최종 코드이다. |
<code c> | <code c> | ||
Line 686: | Line 719: | ||
예를 들어 4장의 마지막 예제와 PIR 센서를 사용하면, | 예를 들어 4장의 마지막 예제와 PIR 센서를 사용하면, | ||
===== PWM을 사용해 빛의 밝기를 조절하기 ===== | ===== PWM을 사용해 빛의 밝기를 조절하기 ===== | ||
- | 지금까지 여러분이 얻은 지식들을 사용하면, | + | 지금까지 여러분이 얻은 지식들을 사용하면, |
4장의 첫 번째 예제에서 귀뜸했던 것처럼, LED가 깜박이게 보이지 않는 시점까지 delay 함수의 숫자를 조절해 보면, LED가 본래의 50%의 밝기가 된다는 걸 확인해 볼 수 있다. 이제 4번 중 한번만 LED가 켜지도록 코드를 수정해 보자. 스케치를 실행하면 이제 대략 25%의 밝기가 됨을 볼 수 있다. 이것이 ,멋지게 말하면, 펄스 폭 변조(PWM)라 불리는 기술이다. LED를 충분히 빠르게 깜박거리면, | 4장의 첫 번째 예제에서 귀뜸했던 것처럼, LED가 깜박이게 보이지 않는 시점까지 delay 함수의 숫자를 조절해 보면, LED가 본래의 50%의 밝기가 된다는 걸 확인해 볼 수 있다. 이제 4번 중 한번만 LED가 켜지도록 코드를 수정해 보자. 스케치를 실행하면 이제 대략 25%의 밝기가 됨을 볼 수 있다. 이것이 ,멋지게 말하면, 펄스 폭 변조(PWM)라 불리는 기술이다. LED를 충분히 빠르게 깜박거리면, | ||
Line 698: | Line 731: | ||
참고: PWM을 세 채널 가지고 있다는 건 꽤 좋은 일이다. 왜냐하면 빨강, 파랑, 녹색 LED를 사서 조합하면, | 참고: PWM을 세 채널 가지고 있다는 건 꽤 좋은 일이다. 왜냐하면 빨강, 파랑, 녹색 LED를 사서 조합하면, | ||
- | 그럼, 직접 사용해 보자. 그림 5-4에 보이는 회로를 만들어라. LED는 극성이 있음을 주의하자: 긴 핀(양극)이 오른쪽, 짧은 핀(음극)이 왼쪽에 와야 한다. 또한, 그림에서 보이는 것처럼 대부분의 LED는 음극 쪽에 평편한 면을 가지고 있다. | + | 그럼, 직접 사용해 보자. 그림 5-4에 보이는 회로를 만들어라. LED는 극성이 있음을 주의하자. 긴 핀(양극)이 오른쪽, 짧은 핀(음극)이 왼쪽에 와야 한다. 또한, 그림에서 보이는 것처럼 대부분의 LED는 음극 쪽에 평편한 면을 가지고 있다. |
Figure 5-4. LED connected to PWM pin | Figure 5-4. LED connected to PWM pin | ||
이제, 아두이노에 새 스케치를 만들어 예제 04를 작성하자 (코드 예제들은 www.makezine.com/ | 이제, 아두이노에 새 스케치를 만들어 예제 04를 작성하자 (코드 예제들은 www.makezine.com/ | ||
Line 740: | Line 773: | ||
이 레일들은 전원과 그라운드를 필요한 곳으로 분배하기 위해 사용된다. | 이 레일들은 전원과 그라운드를 필요한 곳으로 분배하기 위해 사용된다. | ||
- | 아직 이를 시도해본 준비가 되어 있지 않더라고 걱정하지 말라: 일단 그림 4-6과 5-4에 보이는 대로 양쪽의 회로를 모두 연결하자. 브레드보드에서 그라운드와 양극을 위해 레일을 사용하는 예제를 6장에서 보게 될 것이다. | + | 아직 이를 시도해볼 준비가 되어 있지 않더라고 걱정하지 말라. 일단 그림 4-6과 5-4에 보이는 대로 양쪽의 회로를 모두 연결하자. 브레드보드에서 그라운드와 양극을 위해 레일을 사용하는 예제를 6장에서 보게 될 것이다. |
- | 다음 예제로 돌아와서, | + | 다음 예제로 돌아와서, |
- | 그럼, 스케치를 살펴보자: | + | 그럼, 스케치를 살펴보자. |
<code c> | <code c> | ||
// 예제 05: 버튼이 눌렸을 때 LED를 켬 | // 예제 05: 버튼이 눌렸을 때 LED를 켬 | ||
Line 819: | Line 852: | ||
} | } | ||
</ | </ | ||
- | 이제 이 코드를 시험해 보자. 여러분이 확인할 수 있는 것처럼, 우리의 | + | 이제 이 코드를 시험해 보자. 여러분이 확인할 수 있는 것처럼, 우리의 |
이제 좀 더 흥미로운 센서를 사용하는 방법을 배워볼 것이다. | 이제 좀 더 흥미로운 센서를 사용하는 방법을 배워볼 것이다. | ||
Line 956: | Line 989: | ||
===== 더 큰 부하를 다루기 (모터, 램프 등...) ===== | ===== 더 큰 부하를 다루기 (모터, 램프 등...) ===== | ||
- | 아두이노 보드의의 각 핀들은 20 미리 암페어(20mA) 까지 전원을 공급할 수 있다: 이는 꽤 작은 량의 전류로, LED를 다루는 정도까지만 가능하다. 이 핀으로 모터같은 것을 켜려 한다면, 절대로 동작하지 않을 뿐더러, 프로세서를 홀랑 태워버릴 가능성도 있다. 모터나 백열전구 같이 큰 부화를 다루려면 아두이노로 제어할 수 있으면서, | + | 아두이노 보드의의 각 핀들은 20 미리 암페어(20mA) 까지 전원을 공급할 수 있다. 이는 꽤 작은 량의 전류로, LED를 다루는 정도까지만 가능하다. 이 핀으로 모터같은 것을 켜려 한다면, 절대로 동작하지 않을 뿐더러, 프로세서를 홀랑 태워버릴 가능성도 있다. 모터나 백열전구 같이 큰 부화를 다루려면 아두이노로 제어할 수 있으면서, |
참고: 모스펫(MOSFET)이라는 이름은, " | 참고: 모스펫(MOSFET)이라는 이름은, " | ||
Line 1197: | Line 1230: | ||
다음으로, | 다음으로, | ||
- | 다음은 아두이노 스케치이다. (www.makezine.com/ | + | 다음은 아두이노 스케치이다. (www.makezine.com/ |
<code c> | <code c> | ||
// 예제 08B: 아두이노 네트워크 램프 | // 예제 08B: 아두이노 네트워크 램프 | ||
Line 1292: | Line 1325: | ||
그림 6-2에서 어떻게 회로를 조립하는지 볼 수 있다. 다이어그램에서 LED에 연결된 저항을 제외한 모든 저항에는 10K 옴을 사용해야한다. LED에는 더 낮은 값의 저항을 사용한다. | 그림 6-2에서 어떻게 회로를 조립하는지 볼 수 있다. 다이어그램에서 LED에 연결된 저항을 제외한 모든 저항에는 10K 옴을 사용해야한다. LED에는 더 낮은 값의 저항을 사용한다. | ||
- | 5장의 PWM 예제에서 살펴봤듯이 LED들은 극성이 있음을 기억하자: | + | 5장의 PWM 예제에서 살펴봤듯이 LED들은 극성이 있음을 기억하자. |
회로에서, | 회로에서, | ||
Line 1303: | Line 1336: | ||
세 개의 LED를 각기 사용하는 대신에, 하나의 다리가 네 개 달린 RGB LED를 사용할 수도 있다. RGB LED도 그림 6-2에서 보이는 것과 매우 유사한 방법으로 연결한다. 한 가지 변경해야 하는 것은 각기 세 개의 아두이노 그라운드 핀으로의 연결 대신, 하나의 다리(공동 캐소드로 불림)를 그라운드에 연결하면 된다. SparkFun 에서 4리드(다리) RGB LED를 몇 달러에 판매한다. (www.sparkfun.com; | 세 개의 LED를 각기 사용하는 대신에, 하나의 다리가 네 개 달린 RGB LED를 사용할 수도 있다. RGB LED도 그림 6-2에서 보이는 것과 매우 유사한 방법으로 연결한다. 한 가지 변경해야 하는 것은 각기 세 개의 아두이노 그라운드 핀으로의 연결 대신, 하나의 다리(공동 캐소드로 불림)를 그라운드에 연결하면 된다. SparkFun 에서 4리드(다리) RGB LED를 몇 달러에 판매한다. (www.sparkfun.com; | ||
- | ===== 이제부터는 조립 방법이다: ===== | + | ===== 이제부터는 조립 방법이다 ===== |
램프를 분해하여 밑 부분에서 램프로 들어가는 케이블을 제거한다. 이 램프는 더 이상 전원 콘센트를 사용하지 않게 될 것이다. | 램프를 분해하여 밑 부분에서 램프로 들어가는 케이블을 제거한다. 이 램프는 더 이상 전원 콘센트를 사용하지 않게 될 것이다. | ||
Line 1316: | Line 1349: | ||
여러분의 프로세싱 코드를 실행한다. 온/오프 버튼을 누르고, 램프가 살아나는지 보자. | 여러분의 프로세싱 코드를 실행한다. 온/오프 버튼을 누르고, 램프가 살아나는지 보자. | ||
- | 연습 삼아, 방안이 어두워지면 램프가 켜지도록 코드를 추가해 보자. 또 다른 추가 기능들로는 다음과 같은 것들이 있다: | + | 연습 삼아, 방안이 어두워지면 램프가 켜지도록 코드를 추가해 보자. 또 다른 추가 기능들로는 다음과 같은 것들이 있다. |
* 기울기(틸트) 센서를 추가해 램프를 다른 방향으로 기울이면 꺼지거나 켜지도록 함. | * 기울기(틸트) 센서를 추가해 램프를 다른 방향으로 기울이면 꺼지거나 켜지도록 함. | ||
* 누군가 곁에 있는 것을 알아내도록 작은 PIR 센서를 추가하고, | * 누군가 곁에 있는 것을 알아내도록 작은 PIR 센서를 추가하고, | ||
Line 1349: | Line 1382: | ||
USB케이블로 아두이노를 여러분의 컴퓨터의 USB 포트에 연결한다. | USB케이블로 아두이노를 여러분의 컴퓨터의 USB 포트에 연결한다. | ||
- | * 컴퓨터가 켜져 있는지 확인한다(어리석게 들릴 수도 있지만 이런 일이 정말로 발생한다). PWR라고 표시된 녹색 빛이 들어와 있다는 것은 컴퓨터가 아두이노에게 전원을 공급하고 있다는 것을 의미한다. 이 LED가 매우 희미한 상태라면, | + | * 컴퓨터가 켜져 있는지 확인한다(어리석게 들릴 수도 있지만 이런 일이 정말로 발생한다). PWR라고 표시된 녹색 빛이 들어와 있다는 것은 컴퓨터가 아두이노에게 전원을 공급하고 있다는 것을 의미한다. 이 LED가 매우 희미한 상태라면, |
* 아두이노가 새것이라면, | * 아두이노가 새것이라면, | ||
* 외장 전원(어댑터)을 사용 중이며, 이전 버전의 아두이노(Extreme, | * 외장 전원(어댑터)을 사용 중이며, 이전 버전의 아두이노(Extreme, | ||
Line 1391: | Line 1424: | ||
무엇이든 검색엔진에 잘라내어 붙여보고(컨트롤 + C, 컨트롤 + V) 그 문제에 대해 언급한 사람이 있는지 살펴보는 습관을 갖도록 하라. 예를 들어, 아두이노 IDE가 거칠게 오류 문구들을 뿜어낸다면, | 무엇이든 검색엔진에 잘라내어 붙여보고(컨트롤 + C, 컨트롤 + V) 그 문제에 대해 언급한 사람이 있는지 살펴보는 습관을 갖도록 하라. 예를 들어, 아두이노 IDE가 거칠게 오류 문구들을 뿜어낸다면, | ||
- | 여러분이 작업하고 있는 코드의 일부분, 또는 단지 함수의 이름을 적어서 같은 방법으로 검색해 보자. 여러분의 주위를 둘러보라: 모든 것은 이미 발명되어 있고, 웹 페이지 어딘가에 저장되어 있다. | + | 여러분이 작업하고 있는 코드의 일부분, 또는 단지 함수의 이름을 적어서 같은 방법으로 검색해 보자. 여러분의 주위를 둘러보라. 모든 것은 이미 발명되어 있고, 웹 페이지 어딘가에 저장되어 있다. |
더 깊이 살펴보려면, | 더 깊이 살펴보려면, | ||
- | 이 방법으로 아직도 답을 찾지 못했다면 포럼(www.arduino.cc/ | + | 이 방법으로 아직도 답을 찾지 못했다면 포럼(www.arduino.cc/ |
* 사용하고 있는 아두이노 보드의 종류. | * 사용하고 있는 아두이노 보드의 종류. | ||
* 아두이노 IDE를 실행하기 위해 사용하는 OS의 종류. | * 아두이노 IDE를 실행하기 위해 사용하는 OS의 종류. | ||
Line 1448: | Line 1481: | ||
더 자세한 내용을 참조하려면 다음 링크를 살펴보라: | 더 자세한 내용을 참조하려면 다음 링크를 살펴보라: | ||
- | |||
===== 구조 ===== | ===== 구조 ===== | ||
Line 1992: | Line 2024: | ||
*[[http:// | *[[http:// | ||
*[[/코드 주석]] | *[[/코드 주석]] | ||
+ | *[[/ | ||
+ | *[[/ | ||
+ | *[[/ | ||
+ | *[[/ | ||
*[[/Todo]] | *[[/Todo]] | ||
- |
getting_started_with_arduino.1265296230.txt.gz · Last modified: 2013/08/03 05:04 (external edit)