오늘은 IOT 교육을 받고 온 관계로 복습차 간단한 예제와 함께 아두이노 입문을 해보려고 합니다.
Arduino란 ?
이탈리아에서 2005년, 이탈리아 Ivrea에서 초기 프로젝트가 만들어졌다고 합니다.
목적은 소형 디바이스로 하드웨어적인 컨트롤을 쉽게!!!!!겁나게 쉽게! 하기 위해 만들어졌다고 합니다.
장점 : 전자 공학을 몰라도 할 수 있다.
컴퓨터 공학을 몰라도 코딩 할 수 있다.
단점 : 노력이 필요하다.
노력이 필요하다.
실제 아두이노 우노의 모습과 밑의 이상한 사각판은 BreadBoard라고(맞나..?) 흔히 빵!판이라고 합니다.
초기 아두이노
돈이 된다면 이렇게 쌓기도 가능합니다..... 트랜스포머...?
사실 저 왼쪽 케이블이 있어야 컴퓨터와 아두이노의 통신이 가능합니다. 물론 차후에는 무선통신이 가능하겠지만...ㅎ
일단은 유선으로...(귀찮귀찮..)
연결하면 뭐시다냐...저것이....
LED가 반짝반짝 작은별을 연주합니다.
자동으로 되어 있나 봅니다.
케이블을 연결하고...(설마 케이블도 연결 못하진 않겠죠 >>>>>????)
그럼 컴퓨터가 알아서 아두이노 드라이버를 잡아 줍니다.
일단 장치 관리자를 가보죠!
그럼 포트에 아두이노 우노라고 인식 되면서(COM숫자)가 적혀있네요,. COM숫자의 경우 OS가 맘대로 부여하므로
저와 다를 수 있음을....
* 단, 컴퓨터가 애증의 관계이실 경우 자동으로 드라이버가 설치 되지 않습니다.
우선 ,https://www.arduino.cc/ 여기서 어차피 아두이노 IDE를 다운 받습니다.
드라이버 소프트웨어 업데이트 클릭 후 수동 드라이버 설치와 같이 경로는 아두이노 IDE 받은 폴더를 클릭해주시면 됩니다.
그 후 아두이노 IDE 설치를 해줍니다.
화면처럼 도구 - 포트 - 해당 아두이노 클릭
입문자에 맞는 예제를 실행해보겠습니다.
화면과 같이 따라해주세요.
자, 이제 LED에 불을 켜보려고 합니다.
LED는 다리가 긴 녀석이 +극 , 짧은 녀석이 -극입니다.
자 빵판을 보시면, abcde / fghij가 있습니다. 이 것은 표시 한대로 행으로 연결 되어 있습니다.
그리고 + , - 가 표시 된 곳은 하나의 열로 이어져 있습니다.
즉, 점프 케이블로 LED +극은 아두이노 디지털 입력 7번에 연결, -극은 세로 -극에 연결 후
점프 케이블 하나를 가지고 제일 끝 -극과 아두이노 GND에 연결시킵니다. (GND는 하나뿐이라 이렇게 사용합니다.)
* 참, 제가 깜빡한 것은 아두이노의 디지털 입력은 0~13번까지 총 14개 ,
아날로그는 A0 ~ A5 총 6개 사용 가능합니다.
이렇게 하고 아까 Load 시킨 Blink 예제를 Ctrl + R 컴파일 후에 Ctrl + U를 눌러 아두이노에 업로딩 합니다.
연결이 되었네요.
불이 들어온 걸 보니 성공 했습니다.
자, 그럼 소스를 한번 볼까요 ?
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the Uno and
Leonardo, it is attached to digital pin 13. If you're unsure what
pin the on-board LED is connected to on your Arduino model, check
the documentation at http://www.arduino.cc
This example code is in the public domain.
modified 8 May 2014
by Scott Fitzgerald
*/
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin 13 as an output.
pinMode(7, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {//main
digitalWrite(7, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(7, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
아두이노는 반드시 1개의 setup() , loop() 함수를 가집니다.
setup() 함수는 사용 할 포트를 초기화(준비)시키는 선언이라고 할 수 있습니다. 사용하려면 반드시 선언해야 합니다.
loop()의 경우 일반 프로그램이라고 치면 main() 함수와 역할이 같습니다. 순차적으로 코드를 실행합니다.
단, 무한히 반복 됩니다.
while( 1 ) {
}
위의 반복문과 동일합니다.
7번에 LED + 극 연결 시켰으므로 출력 포트를 준비시킵니다.
digitalWrite(포트번호, HIGH | LOW | 0 | 1 )입니다.
* 여기서 왜 불을 키는 건데 Write냐고 물어 보신다면, 조심스레 설명 하겠습니다.
즉, HIGH = 1 , LOW = 0 같은 표현식입니다.
delay는 해당 ms만큼 지연시킵니다.
위의 경우는 3개의 LED를 가지고 신호등 같이 표현했습니다.
3개더라도 어려운 것은 없습니다.
처음에 브레드보드의 사용법만 익히시면 됩니다.
밑에 3개의 경우 소스 첨부합니다.
* 완전한 신호등이 아닙니다.
void setup() {
// initialize digital pin 13 as an output.
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
pinMode(5, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {//main
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
delay(3000);
digitalWrite(7, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
delay(2000);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
delay(2000);
}
사실 본래 교육에서는 자동차 주행 신호 3개 , 보행 신호 2개 총 5개를 가지고 했는데,
여기에 하기엔 너저분해서....
추가적으로 스위치 / 버저 & CDS를 활용한 LED는 차후에 올리겠습니다. (
오늘은 바빠서...이만)