인프라/하드웨어 관련

[Seungdols]아두이노에 입문해보자.

seungdols 2015. 8. 24. 22:44


오늘은 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는 차후에 올리겠습니다. (오늘은 바빠서...이만)


반응형