// ATtiny202 LED チェイス(トレイル付き回転)
// 使用ピン: PA7, PA1, PA2, PA3 (PWM対応)
// 初期点灯時間: 200ms
unsigned int SetTime = 200; // 点灯時間(ms)
// LEDピンの配列(回転順)
const uint8_t ledPins[] = {PIN_PA7, PIN_PA1, PIN_PA2, PIN_PA3};
const uint8_t ledCount = sizeof(ledPins) / sizeof(ledPins[0]);
// フェードステップ数(大きいほど滑らか)
const uint8_t fadeSteps = 20;
void setup() {
for (uint8_t i = 0; i < ledCount; i++) {
pinMode(ledPins[i], OUTPUT);
analogWrite(ledPins[i], 0); // 初期状態は消灯
}
}
void loop() {
static uint8_t current = 0; // 現在点灯中のLEDインデックス
// 現在のLEDを最大輝度に
analogWrite(ledPins[current], 255);
// フェード処理
for (uint8_t step = 0; step < fadeSteps; step++) {
uint8_t next = (current + 1) % ledCount;
// 次のLEDを徐々に明るく
int brightnessNext = map(step, 0, fadeSteps - 1, 0, 255);
analogWrite(ledPins[next], brightnessNext);
// 現在のLEDを徐々に暗く
int brightnessCurrent = map(step, 0, fadeSteps - 1, 255, 0);
analogWrite(ledPins[current], brightnessCurrent);
delay(SetTime / fadeSteps);
}
// 次のLEDへ移動
current++;
if (current >= ledCount) current = 0;
}