아두이노

[아두이노] LED 깜박임과 펄스로 불이 서서히 꺼지고 껴지는걸 동시에 합니다.

labj 2014. 12. 19. 00:56

[아두이노] LED 깜박임과 펄스로 불이 서서히 꺼지고 껴지는걸 동시에 합니다.

LED4개를 사용합니다. 펄스로 LED를 켜는 것은 Analog 포트를 이용하고 깜박임은 일반 포트를 사용합니다. 

알람 루틴은 시분할을 이용합니다.

이런 형태는 몇개는 제어가 가능하지만 갯수가 많아지면 어려워집니다. 

제어할 갯수가 많아지면 다른 방법으로 처리해야 합니다. 


http://fritzing.org/에서 다운 받은 툴로 회로를 다음과 같이 꾸밉니다


 

그려본 회로를 실제로 꾸며보면 다음과 같습니다.




다음 아두이노 프로그램을 입력한 후에   (컴파일)하고  (업로드)합니다. 


const int ledPin2 = 2;

const int ledPin5 = 5;

const int ledPin6 = 6;

const int ledPin9 = 9;

const int ledPin10 = 10;

const int time = 200;


void setup() {

// put your setup code here, to run once:

Serial.begin(9600);

pinMode(ledPin2, OUTPUT);

}


void loop() {

// put your main code here, to run repeatedly:

Serial.println("Hello Arduion!");


//digitalWrite(ledPin2, HIGH);

//delay(time);

//digitalWrite(ledPin2, LOW);

//delay(time);


int br;

int t1 = 4;

int temp=0;

for(br=0;br<255;br++) {

analogWrite(ledPin5, br);

analogWrite(ledPin6, br);

analogWrite(ledPin9, br);

analogWrite(ledPin10, br);

delay(t1);

temp = temp+t1;

if(temp == 1000) digitalWrite(ledPin2, HIGH);

}

temp = 0;


for(br=255;br>0;br--) {

analogWrite(ledPin5, br);

analogWrite(ledPin6, br);

analogWrite(ledPin9, br);

analogWrite(ledPin10, br);

delay(t1);

temp = temp+t1;

if(temp == 1000) digitalWrite(ledPin2, LOW);

}

temp = 0;

}


그러면 다음처럼 LED가 주어진 time 간격으로 깜박입니다.




[아두이노] LED 깜박임과 펄스로 불이 서서히 꺼지고 껴지는걸 동시에 합니다.