int ledPins[] = {3, 5, 6, 9}; // 1~4번 LED 핀 번호
int brightness[4] = {0, 0, 0, 0};
int started[4] = {0, 0, 0, 0}; // 각 LED 시작 여부
int delayTime = 3; // 밝기 변화 속도 조절
int dir[4] = {1, 1, 1, 1}; // 밝기 증가(1) / 감소(-1)
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
// LED1 (3번 핀) 무조건 동작
brightness[0] += dir[0];
if (brightness[0] >= 255 || brightness[0] <= 0) {
dir[0] = -dir[0];
}
// LED1 밝기에 따라 나머지 LED 시작
if (brightness[0] >= 64) started[1] = 1; // LED2 (5번 핀) 25% 지점
if (brightness[0] >= 128) started[2] = 1; // LED3 (6번 핀) 50% 지점
if (brightness[0] >= 192) started[3] = 1; // LED4 (9번 핀) 75% 지점
// LED2~LED4 독립 동작
for (int i = 1; i < 4; i++) {
if (started[i]) {
brightness[i] += dir[i];
if (brightness[i] >= 255 || brightness[i] <= 0) {
dir[i] = -dir[i];
}
}
}
// PWM 출력
for (int i = 0; i < 4; i++) {
analogWrite(ledPins[i], brightness[i]);
}
delay(delayTime);
}
뭐가 부족한건가요
밝기 증가량이 음수가 되게하는 조건은 안 보이는데 왜 dir[n]을 음수로 변환하는거임?
그냥 255되면 바로 brightness[n]을 0으로 하는거 아닌가
0으로 돌아간다가 밝기를 낮아지게한다는거임? 내가 학교에서 할 때는 저런거 그냥 바로 0으로 하게했어서
내가 생각할 땐 내 해석이 맞음. 그런 가정 하에서 코드 전체가 다 틀렸고. 뭐가 안 된다고 말하는건지도 모르겠음 LED에 불이 안 들어오는지 ,원하는대로 작동을 안 하는지, 과제랑 다르게 작동을 하는지