12v LED바 2개를 제어하기 위하여 아두이노와 TIP120 트랜지스터를 이용하였습니다.
두 개 LED가 서로 다른 동작을 할 수 있도록 하려고 millis() 함수를 이용하였습니다
void setup() {
fading_setup();
fading_setup2();
}
void loop() {
fading_loop();
fading_loop2();
}
fading1.ino
int fading_ledPin = 9;
int fadeValue = 0;
int fadeDir = 1;
long fading_previousMillis = 0;
long fading_interval = 30;
void fading_setup() {
pinMode(fading_ledPin, OUTPUT);
}
void fading_loop() {
long currentMillis = millis();
if(currentMillis - fading_previousMillis >= fading_interval) {
fading_previousMillis = currentMillis;
if(fadeDir == 1) {
if(fadeValue <= 255) {
fadeValue += 15;
if(fadeValue > 255) {
fadeValue = 255;
fadeDir = 0;
}
delay(100);
}
} else {
if(fadeValue >= 0) {
fadeValue -= 15;
if(fadeValue < 0) {
fadeValue = 0;
fadeDir = 1;
}
delay(100);
}
}
analogWrite(fading_ledPin, fadeValue);
}
}
fading2.ino
int fading_ledPin2 = 10;
int fadeValue2 = 0;
int fadeDir2 = 1;
long fading_previousMillis2 = 0;
long fading_interval2 = 29;
void fading_setup2() {
pinMode(fading_ledPin2, OUTPUT);
}
void fading_loop2() {
long currentMillis2 = millis();
if(currentMillis2 - fading_previousMillis2 >= fading_interval2) {
fading_previousMillis2 = currentMillis2;
if(fadeDir2 == 1) {
if(fadeValue2 <= 255) {
fadeValue2 += 8;
if(fadeValue2 > 255) {
fadeValue2 = 255;
fadeDir2 = 0;
}
delay(100);
}
} else {
if(fadeValue2 >= 0) {
fadeValue2 -= 8;
if(fadeValue2 < 0) {
fadeValue2 = 0;
fadeDir2 = 1;
}
delay(100);
}
}
analogWrite(fading_ledPin2, fadeValue2);
}
}
💬 응원 댓글 (0)