아두이노 기초강좌 2

Electronics 2010.04.14 01:47
지난번 아두이노 기초강좌1에서는 일단 LED를 켜고 끄는 간단한 코드를 살펴봤다. 아무리 간단해도 프로그램을 전혀 안해봤다면 적잖이 당황했을 것이다. 

모르는 프로그래밍 언어로된 코드를 처음 보고 가장 답답한것 중의 하나는, 어떤 것이 바꿀수 없는 명령어이고 어떤것이 바꿀수 있는 변수인지 구분이 어렵다는 것이다. 이런 의문 역시 프로그래밍을 좀 해본 사람이 가지는 궁금증일 것이다. 내가 프로그래밍을 처음 배울때를 최대한 기억해내면서 진행해보겠다. 

아무튼 오늘은 지난번의 예제 코드를 좀 더 들여다보면서 이것 저것을 바꿔보면서 어디를 얼마만큼 바꿀 수 있으며, 그럴때 뭐가 달라지는지를 설명해보기로 하겠다.



//LED blink example

int ledPin = 13;                              // 13번 핀을 ledPin이라고 이름지어 준다. ledPin이라는 정수형 
     // 변수의 선언이기도 하다.
void setup()                                    // 모든 아두이노 프로그램엔 void setup()이라는 함수가 들어가고, 
{                                                    // 처음 한번 만 실행되는 것들을 담고 있다.
  pinMode(ledPin,OUTPUT);              // 위에서 이름지어준 ledPin 이라는 포트를 OUTPUT출력으로
}                                                    // 지정한다.

void loop ()                                     //void loop()도 모든 아두이노 프로그램에 기본적으로 들어가는 것
{                                                    //으로써, 아두이노를 켜 놓는 동안 무한반복할 동작이 이 안에 들어
  digitalWrite(ledPin, HIGH);             //간다.  ledPin이라고 이름붙인 13번 핀에 전기를 줘서 불을 킨다.
  delay(1000);                                 // 그 상태 그대로 1000밀리 초(1초) 만큼 기다린다.
  digitalWrite(ledPin, LOW);              // ledPin에 전기를 끊어서 불을 끈다.
  delay(1000);                                 // 그 상태 그대로 1000밀리 초를 대기한다.
}      
       

// 처럼 슬래쉬 두개를 연달아 쓰면 그 뒤에 쓴 글씨는 코드를 설명해주기 위한 글로써, 나중에 자기가 보거나, 다른 사람이 보고 이해하기 쉽게 하기위해서 필요하다.  그리고 위의 코드처럼 좌우로 코드와 설명문들이 확연히 나뉘도록 줄을 맞춰 주는 것이 나중에 보기 쉽다. 안맞춰도 에러는 안난다.

맨 윗줄을 보자 

     int ledPin = 13; 

이 문장은 프로그래밍에서 변수를 선언한다고 보통 말하는 것에 해당한다. 아두이노에서는 이 변수선언이, 아두이노 보드의 단자, 그러니까 핀에 이름을 지어주는 것과 같다. 아두이노에는 디지털신호를 입력받거나 출력할 수 있는 핀이 13개가 있고 아날로그 신호를 입력하거나 출력할 수 있는 핀이 6개 있다.
 
그러니까 위 코드는 13번 핀을 ledPin 이라고 이름짓는다는 뜻이다. 왜 그냥 쓰지 이름을 따로 지어주냐고 묻는다면, 나도 별로 타당한 이유는 떠오르지 않는다. 그냥 숫자는 변수로 쓰지 않기로 정했기 때문이 아닐까 싶다. 프로그래밍은 그 언어를 만든 사람이 정한대로 따라야 에러없이 실행되는 것이지, 내 맘대로 한다면 그건 그냥 대화가 될 것이고 그 대화는 컴퓨터가 알아들을리가 만무하겠지. 

위의 코드에서 내 맘대로 바꿀 수 있는 것은 ledPin과 숫자 13이다. ledPin을 LEDpin이나 ledPort나  ledConnect 라고 바꿔도 상관 없다. 그러나 그 이후에 나오는 모든 ledPin도 똑같이 바꿔줘야 하는 것이다. 13은 1에서 부터 13사이의 아무 숫자로 바꿀 수 있다. 정확히는 아날로그 포트도 디지탈포트로 쓸 수 있기 때문에 13에 6개를 더해서 19개까지 디지탈포트로 쓸 수 있다. 여기서 포트나 핀은 같은 것을 말하니 고민하지 말기 바란다. 여자나 여성이나 같은 말인것과 같다. 
  
아래 사진에서 보면 보드의 윗쪽 까만색 단자에 숫자들이 매겨져 있는데 9 8 7 6 쯤 밑에 DIGITAL이라는 글씨가 보일 것이다. 오른쪽의 0부터 왼쪽의 13(마치 31처럼 보인다 --;)까지 디지탈포트라고 써 놓은거다


보드의 아래쪽을 보면 ANALOG IN 이라고 써 있고 그 밑에는 0 1 2 3 4 5 라고 숫자가 보인다. 그것이 포트0번 부터 5번까지 6개의 아날로그포트 이다. 프로그래밍 하다보면 숫자를 1부터 안세고 0부터 세는걸 많이 보게 된다. 그것 역시 꼭 그래야할 이유는 모르겠다. 정해진대로 쓰는 거다. 착하게~  

그럼 아날로그포트와 디지털포트가 무엇인가? 아날로그 포트는 아날로그 신호를 받아들이거나 출력할 수 있는 포트고, 디지털은 포트는 눈치 챘겠지만 디지털 신호를 입출력할 수 있는 포트이다. 눈치 너무 빨라서 눈물이 나올지경이다.

그럼 아날로그 신호는 뭐고 디지털신호는 뭐냐? 여기부터는 프로그래밍을 좀 해본 사람도 이론적으론 알지만 실제로 저런 복잡하게 생긴 보드에서 어디로 아날로그 신호가 흐르고  어디로 디지털 신호가 흐르는지는 모를 것이다. 여기가 프로그램 해본 사람이나 안해본 사람이나 똑같아 지는 순간이 되겠다. 

위 예제 코드를 실행하면 LED가 깜빡 거린다. 그때 LED에는 전기가 들어가다 끊기다를 반복하고 있는 것이다. 전기가 들어갈때는 일정하게 5v가 들어가고, 안들어갈때 0v인 것이다. 이런 신호를 바로 디지털 신호라고 한다. 예제 코드에서는 디지털 신호를 출력해야하니까 디지털 포트인 1번부터 13번 중에서 하나 골라서 사용하게 된 것이다. 디지털 포트를 다 써서 모자라거나 하면 아날로그포트를 디지털 포트로 전용할 수 있다. 아날로그 0번을 디지탈 14번 포트로 쓸 수 있고, 아날로그 1번은 디지털 15, 아날로그 2번은 디지탈 16.. 그래서 19번 까지 쓸 수 있다는 말씀 

아날로그 신호는 연속적인 신호라고 말은 많이 들었을 것이다. 아날로그 신호를 입력으로 줄 수 있는 부품은 온도를 재는 써미스터라는 소자가 있다. 써미스터라는 부품은 온도가 바뀌면 부품의 저항값이 변하게 되는 특성을 가지고 있어서, 전기가 써미스터를 통과해서 아두이노에 연결하게 되면  온도에 따라 1.18v 1.25V 1.32V 등 그야말로 다양한 전압이 입력 되는 것이다. 디지털 신호처럼 5v와 0v의 극단 밖에 모는 흑백주의자가 아니라 다양성을 인정할줄 아는 성숙한 신호인 것이다. (진짜 성숙한 신호라고 생각한 사람 손들어 보라. 당신의 아이큐는 100 이하일 가능성이 높다--;)

이런 아날로그 신호는 아날로그 포트 0번부터 5번까지 중에서 하나 골라서 연결해 줘야 그 전압의 변화를 온전히 읽어 들일 수 있는 것이다. 아날로그 출력은 모터에 주면 모터의 힘을 조절해서 로봇의 바퀴가 굴러가는 속도를 제어 할 수 도 있고, LED에도 아날로그 신호를 주면 그 밝기를 약간씩 조절 할 수 있어서 점점 밝아졌다가 다시 점점 어두워지는, 맥북 잠재웠을때 켜지는 LED같은 것을 구현할 수 있는 것이다. 

여기까지 오늘은 아날로그와 디지털 신호의 구분정도만 하고 자세한 프로그래밍 방법은 추후에 다루기로 한다.
그러고보니 예제코드 한줄을 부연설명하다가 여기까지 왔다. 이렇게 한 회를 마무리 짓기는 좀 아쉬운듯하니  좀 속도를 내어 보기로 하자.

그 다음 줄이 아래의 setup()함수 선언 부분이다. 

void setup()                                    // 모든 아두이노 프로그램엔 void setup()이라는 함수가 들어가고, 
{                                                    // 처음 한번 만 실행되는 것들을 담고 있다.
  pinMode(ledPin,OUTPUT);              // 위에서 이름지어준 ledPin 이라는 포트를 OUTPUT출력으로
}     

아두이노 코드는 모두 세미콜론(;)으로 끝을 맺게 되어 있는데, 위 코드 처럼 함수선언이나 중괄호 뒤에는 세미콜론을 쓰지 않는다. 
함수의 종류를 나타내는 void도 바꿔선 안되고 setup()이라는 이름도 바꿔선 안되니까 그대로 써줘야 된다. 모든 아두이노 프로그램엔 setup()함수가 한번 들어가야 하는 것으로 아두이노 보드를 켜면 처음에 한번만 실행해주는 것들을 setup()함수에서 지정해주는 것이다.  

setup()함수 등 모든 함수 정의의 내용은 중괄호{}로 둘러싸도록 되어 있다. 위 예제는 그 안에 덜렁 한 줄 pinMode(ledPin, OUTPUT); 만 들어 있지만 여러 줄 써 넣을 수 도 있다. pinMode( 핀이름 , OUTPUT) 이렇게 쓰면 핀이름이 정한 핀을 출력으로 쓸것이라는 것을 지정하는 것이다. 다시말하면 지정한 포트를 입력으로 쓸것인지 출력으로 쓸것인지를  setup()함수 내에서 지정을 해줘야 한다는 것이다.

pinMod(ledPin, INPUT)이라고도 쓸 수 있다는 말이다. LED는 빛을 내는 부품이기 때문에 입력을 받을 수는 없지만 ledPin 이라고 이름을 정했다고 해서 LED 만 연결 할 수 있는 것은 아니기 때문에, 거기에 스위치를 연결하면 스위치를 눌렀는지 아닌지를 입력 받을 수 있게 된다.

끝으로 아두이노를 켜 놓기만 하면 무한 루프를 돌면서 실행하게되는 void loop()함수에 대해서 알아보자.


void loop ()                                     //void loop()도 모든 아두이노 프로그램에 기본적으로 들어가는 것
{                                                    //으로써, 아두이노를 켜 놓는 동안 무한반복할 동작이 이 안에 들어
  digitalWrite(ledPin, HIGH);             //간다.  ledPin이라고 이름붙인 13번 핀에 전기를 줘서 불을 킨다.
  delay(1000);                                 // 그 상태 그대로 1000밀리 초(1초) 만큼 기다린다.
  digitalWrite(ledPin, LOW);              // ledPin에 전기를 끊어서 불을 끈다.
  delay(1000);                                 // 그 상태 그대로 1000밀리 초를 대기한다.
}      

loop()함수 안에는 디지탈 신호를 출력하라는 의미를 가진 digitalWrite 명령이 두 번 나오는데 위에 있는 것은 ledPin에  HIGH값 그러니까 5v를 주는 것이고 아래에 있는 것은 LOW 값인 0v를 주는 것을 말한다. digitalWrite 명령도 PinMode명령과 용법이 비슷하다는 것을 직감했을 것이다. 괄호안의 앞쪽엔 핀이름인 변수명이 들어가고, 쉼표 뒤에는 HIGH나 LOW가 들어간다. 이건 꼭 대문자로 써야된다. OUTPUT, INPUT 도 꼭 대문자로 써야된다. 

digitalWrite 명령들 사이에 delay명령이 들어 있다. delay는 1/1000초 단위로 현상태유지하면서 기다리라는 명령이다. 첫번째 것은 LED를 켜고 나서 기다리는 거니까 불이 켜진채로 기다리게 되는것이다. 두번째 delay는 LED를 끄고 나서 1000밀리초를 기다리는 것이다. 밀리는 m라고 쓰는데 배수를 나타내는 접두사로 1/1000을 의미한다. n이 나노로 읽고 십억분의 일을 뜻하는 것처럼 말이다. 참고로 c는 센티로 읽고 1/100 이고 d는 데시로 읽고 1/10 이다.
메모리나 하드디스크 용량 단위로 많이 나오는  M(메가, 백만)이나  G(기가, 십억)는 잘 알것이다. 소문자로 쓰는 기호는 1보다 작아지는 배수일때이고 대문자는 커지는 배수이다.  

중요한건 delay() 명령의 괄호안에 쓰는 숫자는 m초 단위라는 점이다. 1초를 대기시키려면 delay(1000); 라고 쓰고 1.5초를 대기 시키려면 delay(1500);이라고 쓰면 된다.


자 그럼! 연습문제로 SOS신호를 LED로 표시하는 코드를 짜보기로 하겠다. 

SOS신호는 띠띠띠 띠- 띠- 띠- 띠띠띠 띠- 띠-띠-  이런 신호를 반복하면 된다. 이 신호는 모르스 부호인데 S가 짧은 신호 세번, O가 긴 신호 세번으로써, 입력하기 제일 쉽기 때문에 조난시 급하게 타전하기 쉬우라고 SOS를 조난신호로 정한것이다.
짧은 신호는 0.5초 긴 신호는 1.5초로 하기로 한다. 댓글로 각자 코딩을 해서 올려보기로 하자. loop()함수의 내용만 바뀌니까 loop()함수에 들어갈 내용만 작성하면 된다.

자자 어서 댓글로 ! 

저작자 표시 동일 조건 변경 허락
신고

'Electronics' 카테고리의 다른 글

아두이노 기초강좌 4  (15) 2010.05.11
아두이노 기초강좌 3  (13) 2010.04.28
아두이노 기초강좌 2  (34) 2010.04.14
아두이노 기초 강좌 1  (36) 2010.04.07
꽃보다 남자? 물감보다 아두이노!  (15) 2010.03.30
CDROM drive stepper motor hack  (13) 2010.03.05
Trackback 0 : Comments 34
    이전 댓글 더보기
  1. June 2010.06.29 13:45 신고 Modify/Delete Reply

    아 감사합니다. 숨통이 탁 트이네요. 졸업작품하는데 애들이 아두이노로 하자고하는바람에 열심히 공부중입니다.ㅠ.ㅠ 잘부탁드리겠습니다.

    참, 그리고 Digital output에서 low 0v high 5v라 하셨는데 저같은경우엔 12v가 필요합니다... 이경우엔 어떻게 하는가요?

    • Favicon of http://blog.whattomake.co.kr BlogIcon MrKiss 2010.06.29 17:54 신고 Modify/Delete

      마이트로 컨트롤러가 관여되는 신호는 모두 5v로 해야되구요 모터 전원처럼 높은 전압을 쓰는 쪽은 분리해야합니다. ground는 공유하고 모터 드라이버 회로쪽에만 12V전원을 주는거죠.
      정확히는 모터드라이버IC의 제어신호를 5v로 주고 모터드라이버IC전원핀에는 12v를 주는 겁니다.
      그러면 보기에는 서로 연결된 두개의 회로가 두개의 전압으로 구동되죠. 하지만 연결은 어스쪽만 되어 있기 때문에 다른 전압이 흘러도 상관 없습니다. 하지만 양극끼리는 확실히 분리해야됩니다.

  2. No.190 2010.07.06 13:09 신고 Modify/Delete Reply

    요거 잼있네요..ㅋㅋ 회로도를 하나도 몰라도 할수 잇어서..ㅜㅡㅜ 너무나 기쁨니다!ㅋㅋ

    • Favicon of http://blog.whattomake.co.kr BlogIcon MrKiss 2010.07.07 00:49 신고 Modify/Delete

      좀 더 진도가 나가면 회로도를 봐야하지만 회로도에 대해서도 하나하나 알려드리겠습니다. 회로도는 기호가 낯설어서 그렇지 별로 어려울것은 없거든요 ^^

  3. 세벙이 2010.07.15 13:38 신고 Modify/Delete Reply

    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(1500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(1500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(1500);
    digitalWrite(ledPin, LOW);
    delay(500);

    이거 맞나요? ^^;

  4. 박지영 2010.08.15 18:59 신고 Modify/Delete Reply

    아두이노로 모니터에 영상출력이 가능한가요?

    재료는 다 구비되어있는데...

    가능한지와.. 등등 선뜻 엄두가 안나네요..

    • Favicon of http://blog.whattomake.co.kr BlogIcon MrKiss 2010.08.15 22:41 신고 Modify/Delete

      아두이노를 컴퓨터와 연결해서 시리얼 통신으로 데이타를 보내 컴퓨터상의 프로그램이 그 데이타에 맞춰 움직이도록 하는 방법이 있구요. 컴퓨터에서는 프로세싱이란것을 이용해서 프로그램을 짜시면 됩니다.
      겁색해보시면 그런방식을 쓴 여러가지 예제를 볼 수 있구요. '구체적'으로 질문해 주시면 제가 좀 더 알려드릴수도 있을것 같구요.

  5. 박지영 2010.08.21 16:07 신고 Modify/Delete Reply

    답변감사합니다^^
    그럼, 좀더 구체화시켜서 다시 올께요~!

  6. 2010.12.01 22:39 Modify/Delete Reply

    비밀댓글입니다

  7. 정지철 2010.12.25 21:05 신고 Modify/Delete Reply

    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(1500);
    digitalWrite(ledPin, LOW);
    delay(1500);
    digitalWrite(ledPin, HIGH);
    delay(1500);
    digitalWrite(ledPin, LOW);
    delay(1500);
    digitalWrite(ledPin, HIGH);
    delay(1500);
    digitalWrite(ledPin, LOW);
    delay(1500);

  8. 정지철 2010.12.25 21:06 신고 Modify/Delete Reply

    에구틀렷습니다...
    정말보기좋은강좌 감사드립니다.

  9. Huny 2011.10.14 00:03 신고 Modify/Delete Reply

    #define LED 13

    void setup()
    {
    pinMode(LED, OUTPUT);
    }

    void loop()
    {
    OnOff(2,3);
    OnOff(0.3,3);
    }

    void OnOff(double i, int roop)
    {
    while(roop--){
    digitalWrite(LED, HIGH);
    delay(i*1000);
    digitalWrite(LED, LOW);
    delay(i*1000);
    }
    }

  10. 김광주 2012.05.29 19:42 신고 Modify/Delete Reply

    강의 감사드립니다.

  11. 정현철 2012.08.01 23:05 신고 Modify/Delete Reply

    재미있게 잘 쓰시네요 ^^

    그런데 디지탈포트의 0번은 어디 쓰는건가요?

    • Favicon of http://blog.whattomake.co.kr BlogIcon MrKiss 2012.08.05 19:55 신고 Modify/Delete

      물론 디지털 입출력에 사용하죠. 그리고 디지털0번 핀은 USART 통신에 쓰이는 RX핀이기도 합니다. USART는 아두이노와 컴퓨터와의 (시리얼)통신시에 데이타 수신 역할을 맡고 있기도 합니다.

  12. 남영우 2012.09.17 16:47 신고 Modify/Delete Reply

    머리에 쏙쏙 들어오네요----아직까지는---
    감사

  13. 안성우 2012.10.12 10:09 신고 Modify/Delete Reply

    정말 감사합니다...
    이런강의... 정말 사랑합니다

  14. ^^ 2012.12.11 01:12 신고 Modify/Delete Reply

    좋은 강좌 감사드립니다~

  15. Favicon of http://NAVER.COM BlogIcon 1 2012.12.19 08:15 신고 Modify/Delete Reply

    void loop ()
    {
    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(1500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(1500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(1500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(1500);
    digitalWrite(ledPin, LOW);
    delay(500);





  16. Favicon of http://NAVER.COM BlogIcon 1 2012.12.19 08:17 신고 Modify/Delete Reply

    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(1500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(1500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(1500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);

  17. LEE SANG HO 2013.05.19 18:18 신고 Modify/Delete Reply

    int ledPin = 13;

    void setup()
    {
    pinMode(ledPin,OUTPUT);
    }

    void loop()
    {
    static int cnt=0;

    if (0 <= cnt && cnt<=2)
    {
    digitalWrite(ledPin,HIGH);
    delay(500);
    }
    else if (3 <= cnt && cnt<=5)
    {
    digitalWrite(ledPin,HIGH);
    delay(1500);
    }

    digitalWrite(ledPin,LOW);
    delay(500);

    cnt++;
    if (cnt==6)
    {
    cnt=0;
    }
    }

  18. Favicon of http://blog.naver.com/rgb1973 BlogIcon 류광범 2013.05.31 10:46 신고 Modify/Delete Reply

    잘 보고 있습니다. 제 블로그에도 퍼갔는데 괜찮겠죠? 좋은강좌 늘 감사드립니다. ^^

  19. cdh 2014.10.05 17:20 신고 Modify/Delete Reply

    아두이노강좌 잘보았습니다.

    아직입문도 못한 초보입니다ㅜㅜ
    아두이노에 급관심이생겨 몇일동안 찾아보다가
    강좌를발견하고 읽어보앗습니다

    우선제가 제작하고싶은게,
    집 외부 바깥대문에 pir센서 달고
    집안에 경광등을 연결해서
    바깥에사람이 감지되면 경광등이 빛나게끔 구현해보고싶습니다.

    아두이노 pir센서 트렌지스터 릴레이 이정도로 만들수있을지요? 명령어나 프로그래밍쪽에서 막힐거같은데

    도움좀주세요~~!!

    • Favicon of http://blog.whattomake.co.kr BlogIcon MrKiss 2014.10.06 16:15 신고 Modify/Delete

      인터넷엔 많은 제작 프로젝트들이 오픈되어 있어서 검색만 해보시면 상세한 제작기들이 우르르 나옵니다. 구글에서 영어로 검색하시는걸 추천합니다.

    • BlogIcon cdh 2014.10.09 14:16 신고 Modify/Delete

      구글에 영어로 어떤식으로 검색해야 될까요 ㅠㅠ

      아직 잘 모르겟네요

  20. minary 2015.01.09 21:29 신고 Modify/Delete Reply

    아닛!! 아두이노가 C호환코드 (혹은 그냥 C) 였다니...
    그럼 프로그래밍을 해본사람으로써 문제 정답 올립니다.
    [전체소스]

    #define ledPin 13
    //위의코드는 ledPin을 만나면 무조껀 13으로 바꾸란소리다. 전처리기다.
    #define short 500
    #define long 1500
    void loop() {
    for(i=0; i<3; i++)
    {
    degitalWrite(ledPin, HIGH);
    delay(short);
    degitalWrite(ledPin, LOW);
    }
    for(i=0; i<3; i++)
    {
    degitalWrite(ledPin, HIGH);
    delay(long);
    degitalWrite(ledPin, LOW);
    }
    for(i=0; i<3; i++)
    {
    degitalWrite(ledPin, HIGH);
    delay(short);
    degitalWrite(ledPin, LOW);
    }
    return;
    }

Write a comment

티스토리 툴바