Загрузка данных


#define POT_PIN A0
#define LED_PIN 9
#define BUZ_PIN 3

int signal;
int brightness;
int frequency;

void setup() {
  pinMode(LED_PIN, OUTPUT);
  pinMode(BUZ_PIN, OUTPUT);
}

void loop() {

  // ФИЛЬТРАЦИЯ: 3 измерения и среднее значение
  signal = (analogRead(POT_PIN) +
            analogRead(POT_PIN) +
            analogRead(POT_PIN)) / 3;

  // ВИЗУАЛЬНОЕ ОПОВЕЩЕНИЕ
  // Яркость светодиода зависит от напряжения
  brightness = map(signal, 0, 1023, 0, 255);
  analogWrite(LED_PIN, brightness);

  // От 1% до 90% сопротивления
  if (signal < 920) {

    // Частота от 100 до 700 Гц
    frequency = map(signal, 10, 920, 100, 700);

    if (frequency < 100) {
      frequency = 100;
    }

    tone(BUZ_PIN, frequency);
  }

  // От 90% до 100% - сирена
  else {

    // Период сирены = 1 секунда
    int t = millis() % 1000;
    int sirenFrequency;

    if (t < 500) {
      sirenFrequency = map(t, 0, 499, 400, 800);
    }
    else {
      sirenFrequency = map(t, 500, 999, 800, 400);
    }

    tone(BUZ_PIN, sirenFrequency);
  }
}