ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • LED(analog pin, digital pin)
    Arduino/LED 제어 하기 2020. 10. 15. 17:54

    하드웨어 연결

    LED를 켜고 끄는 것을 만들어보자.

    아두이노 보드 연결은 다음과 같이 세팅을 한다.

    붉은 선은 7번핀과 연결하고 검은 선은 GND와 연결된 선이다.

    저항은 모두 220옴이다. 핀들은 반드시 setup함수에서 초기화를 한다.

     

    하나의 LED를 켜고 끄는 문제

    소스 코드

    //  LED를 하나켜고 끄는 예제
    void setup() 
    {
      // put your setup code here, to run once:
      pinMode(7,OUTPUT);  //  7번 핀에서 5V전압을 보내겠다는 의미
    }
    
    void loop() 
    {
      // put your main code here, to run repeatedly:
      digitalWrite(7,HIGH); 
      delay(500);
      
      digitalWrite(7,LOW);
      delay(100);
    }

     

    LED출력결과

     

     

    여러 개의 LED를 켜고 끄는 문제

    위와 같이 기존에 하나의 LED였던 것을 LED를 2개 더 연결해보자.

    5번과 6번핀으로 연결을 한다.

    이 5번과 6번 연결핀 옆에 물결표(~)가 있는 것을 알 수 있다.

    7번핀은 물결표시가 없다.

    물결표가 있는 핀의 특징은 아날로그 핀의 의미이다.

    여기서는 그냥 넘어가자. 나중에 예제로 다룰 것이다.

    digitalWrite함수말고 analogWrite함수도 있다. 두 함수 모두 매개변수는 2개이며, 첫 매개변수는 핀의 번호이다.analogWrite함수의 두 번째 매개변수는 0 ~ 255사이의 값을 전달할 수 있다.밝기를 조절 할 수 있다.

     

    소스 코드

    //  LED를 여러 개켜고 끄는 예제
    void setup() 
    {
      // put your setup code here, to run once:
      pinMode(5,OUTPUT);  //  7번에서 5V를 보내겠다는 의미
      pinMode(6,OUTPUT);  //  6번에서 5V를 보내겠다는 의미
      pinMode(7,OUTPUT);  //  5번에서 5V를 보내겠다는 의미
    }
    
    void loop() 
    {
      // put your main code here, to run repeatedly:
      digitalWrite(5,HIGH);
      digitalWrite(6,HIGH);
      digitalWrite(7,HIGH);
      delay(1000);
      
      digitalWrite(5,LOW);
      digitalWrite(6,LOW);
      digitalWrite(7,LOW);
      delay(1000);
    }

     

     

     

     

    LED 여러 개를 다른 시점에 켜고 끄는 예제

    위의 예제에서는 모든 LED가 다 같이 켜고 꺼지는데, 각 LED마다 켜고 꺼지는 시점을 다르게 해보자.

    위의 예제에서 몇 군데만 고치면 된다.

     

    소스 코드

    //  LED 여러 개를 다른 시점에 켜고 끄는 예제
    void setup() 
    {
      // put your setup code here, to run once:
      pinMode(5,OUTPUT);  //  7번에서 5V를 보내겠다는 의미
      pinMode(6,OUTPUT);  //  6번에서 5V를 보내겠다는 의미
      pinMode(7,OUTPUT);  //  5번에서 5V를 보내겠다는 의미
    }
    
    void loop() 
    {
      // put your main code here, to run repeatedly:
      digitalWrite(5,HIGH);
      delay(100);
      digitalWrite(6,HIGH);
      delay(300);
      digitalWrite(7,HIGH);
      delay(200);
      
      digitalWrite(5,LOW);
      delay(300);
      digitalWrite(6,LOW);
      delay(100);
      digitalWrite(7,LOW);
      delay(200);
    }

     

     

    아날로그 핀과 디지털 핀으로 LED 밝기 조절 예제

    위에서 7번 핀은 디지털 핀이므로, 밝기의 조절을 하지 못한다.

    즉, 디지털 핀은 켜지거나 꺼지는 경우 두 가지 경우 뿐이다.

    7번핀은 아날로그 핀이 아닌 디지털 핀이라서 밝기 조절이 안되고 켜고 끄는 것만 된다.

     

    소스 코드

    //  LED의 밝기 조절 예제
    void setup() 
    {
      // put your setup code here, to run once:
      pinMode(5,OUTPUT);
      pinMode(6,OUTPUT);
      pinMode(7,OUTPUT);  //  7번핀은 아날로그 핀이 아닌 디지털 핀이다.
    }
    
    void loop() 
    {
      // put your main code here, to run repeatedly:
      for (int i = 0; i < 256; i++)
      {
        analogWrite(6,i);   delay(10);
        analogWrite(5,i);   delay(20);
        analogWrite(7,i);   delay(50); 
      }
    }

     

    여기서 궁금한 것이 있을 것이다.

    setup함수는 딱 한 번만 호출되고, loop함수는 반복적으로 호출이 된다.

    그런데, main함수는 어디 있을까?

    아두이노 프로그램이 깔려있는 경로를 찾아가보자.

    그러면, main.cpp파일을 찾아볼 수 있다.

    그리고, main.cpp파일을 열어보자.

    위의 함수에서 보다시피, setup함수는 한 번만 실행하고 나서,

    loop함수는 무한 반복문으로 호출되고 있다.

     

    우리가 프로그래밍을 하고 아두이노에 업로드를 하면

    이 main.cpp가 같이 올라가게 된다.

    댓글

Designed by Tistory.