아두이노프로세싱 프로그래밍

아두이노 초보자에게 위험스러운 “아두이노 코딩에 의한 LED ON OFF”

coding art 2017. 3. 23. 13:44
728x90

아두이노 코딩에 의한 LED on OFF를 처음 시도해본 초보자들과 비전공자들에게 항상 제기되는 질문 중의 하나가 LED 배선에는 왜 반드시 전류제한 저항이 귀찮음에도 불구하고 함께 직렬로 배선되어야 하는 것인가 하는 점이다.
LED에 가해지는 전압의 범위는 다소 융통성이 있으나 전류의 크기가 문제다. LED 자체는 전압이 가해지게 되면 전류를 흘릴 수 있으나 딱히 그 크기를 조절할 수 있는 기능은 없다.
만약에 전류제한 저항이 없는 경우에 아두이노 코딩에 의해서 LED를 시험하기 위한 방법이 없는 것일까?
여기에 그 간단한 해답을 시험해 보기로 한다. 그다지 건전한 코딩 방법론은 아니므로 조심스럽게 한번 쯤 시험해 보고 잊어버리도록 하자.

그림에서 볼 수 있듯이 LED 하나만 있으면 된다. 아두이노 배선 중에 가장 단순한 배선일 것이다. 아두이노 초보자라면 이미 digitalWrite(pin#, HIGH) 명령을 이미 배웠을 것이나 유감스럽게도 이 명령은 절대 사용하면 안 된다. 여기에서는 analogWrite() 명령 사용이 절대적이다. LED 의 짧은 다리를 GND에 즉 0V를 가해주고 긴 다리를 디지털 데이터 핀 11번 PWM 핀에 꽂는다. PWM핀은 물결 무뉘(∼)가 인쇄되어 있음에 유의하자.

밝기 brightness를 127로 설정한다. PWM 명령이 가능한 analogWrite()의 밝기 범위가 0∼255인 점을 감안하면 LED의 안전을 감

안하여 그 반에 해당하는 값이다.

아두이노의 전원이 5V이므로 그 반인 127이면 최대 2.5V 수준으로 밝기를 제한할 수 있다. 더욱이 PWM이므로 듀티 비율에 따라 평균 전압은 좀 더 낮은 값이 될 것이다.
통신 속도는 Serial.begin()에서 설정하는데 9600∼115200 중의 값으로 선택하면 된다.
이에 뒤따르는 if 문은 어떠한 이유에서라도 밝기가 127 이상이면 무조건 127로 설정한다.
pinMode에서 PWM이 가능한 11번 디지털 핀을 출력으로 설정한다.

loop문에서도 if문을 사용하여 밝기가 127 이상이면 무조건 127로 설정한다.
analogWrite() 명령을 실행하고 5초간 지속시키다.

그 다음 LED를 OFF하고 5초간 지연을 주어 발열을 줄인다.


이 아두이노 배선 회로에서 LED 가 on 되었을 때의 전압을 멀티메터로 측정해본 결과 1.75V 수준으로 비교적 안전하다고 평가되었다. 절대로 밝기 brightness의 값을 127이상으로 올리지는 말기 바란다.
아두이노 코딩에 흥미를 가지고 시작하는 초보자들 중에 체질적으로 전기적인 쇼트나 불꽃에 민감한 경우 트라우마 가능성도 있으므로 굳이 해 볼 필요는 없는 코딩임을 밝힌다.





Coding_Dangerous_LED_ON_OFF_01


// 이 프로그램은 전류제한 저항을 구하지 못할 경우의 극한 상황에서 시험적으로 사용 바람
// 이 프로그램 내에서 digital(pin#,HIGH) 명령 사용 절대 금지
//전류 제한 저항이 없으면 아두이노 보드가 쇼트 내지는 화재의 위험성도 있을 수 있음
// 초보자가 이런 상황을 겪게 되면 아두이노 트라우마가 발생할 수 도 있음
// 심장이 약하거나 잘 놀라는 분들은 동영상 구경만 하시는 것도 좋다고 봄

int brightness = 127;

void setup() {

  Serial.begin(9600);
    if( brightness > 127 ) { //소프트웨어 안전장치-127 이상이면 127 세팅
    brightness = 127;
  }
  pinMode(3,OUTPUT);
}

void loop() {

  if( brightness > 127 ) { //소프트웨어 안전장치- 127 세팅
    brightness = 127;
  }
  analogWrite(11,brightness);
  delay(5000);
  analogWrite(11,0);
  delay(5000);
}// 프로그램 끝