Praktika 2 -Potentsiomeetri kasutamine-

Самое базовое и простое


Projektiülesanne: Valguskett

const int ledPins[] = {2, 3, 4, 5, 6}; // 5 светодиодов
const int potPin = A0;
int arrayLength = sizeof(ledPins) / sizeof(ledPins[0]);

void setup() {
  for (int i = 0; i < arrayLength; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
  randomSeed(analogRead(A1)); // для эффекта свечи
}

void loop() {
  int potValue = analogRead(potPin);
  int mode = map(potValue, 0, 1023, 0, 5); // 6 режимов (0–5)
  mode = constrain(mode, 0, 5);

  switch (mode) {
    case 0: allBlink(); break;
    case 1: oneByOne(); break;
    case 2: colorGroups(); break;
    case 3: candleEffect(); break;
    case 4: runningLight(); break;
    case 5: nightMode(); break;
  }
}

// Режим 0: Все мигают одновременно
void allBlink() {
  for (int i = 0; i < arrayLength; i++) digitalWrite(ledPins[i], HIGH);
  delay(500);
  for (int i = 0; i < arrayLength; i++) digitalWrite(ledPins[i], LOW);
  delay(500);
}

// Режим 1: Один за другим
void oneByOne() {
  for (int i = 0; i < arrayLength; i++) {
    digitalWrite(ledPins[i], HIGH);
    delay(200);
    digitalWrite(ledPins[i], LOW);
  }
}

// Режим 2: Группы по цвету (логически)
void colorGroups() {
  for (int i = 0; i < arrayLength; i++) digitalWrite(ledPins[i], LOW);
  delay(200);
  // "Красные"
  digitalWrite(ledPins[0], HIGH);
  digitalWrite(ledPins[1], HIGH);
  delay(300);
  digitalWrite(ledPins[0], LOW);
  digitalWrite(ledPins[1], LOW);
  // "Зелёные"
  digitalWrite(ledPins[2], HIGH);
  digitalWrite(ledPins[3], HIGH);
  delay(300);
  digitalWrite(ledPins[2], LOW);
  digitalWrite(ledPins[3], LOW);
  // "Синий"
  digitalWrite(ledPins[4], HIGH);
  delay(300);
  digitalWrite(ledPins[4], LOW);
}

// Режим 3: Свеча (рандомное мигание)
void candleEffect() {
  for (int i = 0; i < arrayLength; i++) {
    if (random(0, 10) < 3) {
      digitalWrite(ledPins[i], HIGH);
      delay(random(10, 100));
      digitalWrite(ledPins[i], LOW);
      delay(random(10, 50));
    }
  }
}

// Режим 4: Бегущий огонь
void runningLight() {
  static int pos = 0;
  for (int i = 0; i < arrayLength; i++) digitalWrite(ledPins[i], LOW);
  digitalWrite(ledPins[pos], HIGH);
  delay(150);
  pos = (pos + 1) % arrayLength;
}

// Режим 5: Ночной режим
void nightMode() {
  digitalWrite(ledPins[2], HIGH); // центральный диод
  delay(500);
  digitalWrite(ledPins[2], LOW);
  delay(500);
}

https://drive.google.com/file/d/103uAOn9CBptvUjKilkbnWb6_XaU4bKVX/view?usp=sharing