// Светодиод подключен к D2
int ledPin = 2;
int ledPin1 = 4;
int ledPin2 = 7;
// Аналоговый вход, напряжение на котором будем анализировать
int analogPin = A1;
// Сюда будем сохранять результат с АЦП
int adcResult = 0;
// Текущий период (строго говоря полупериод)
int currentPeriod = 0;
// Максимальное значение периода
constexpr int PERIOD_MAX = 1000;
// Минимальное значение периода
constexpr int PERIOD_MIN = 100;
// Делитель для перерасчета из результата АЦП
constexpr int ADC_MAX = 1023;
void setup()
{
Serial.begin(115200);
// D2 работает в качестве выхода
pinMode(ledPin, OUTPUT);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
}
void loop()
{
// Собственно, считываем требуемое значение
adcResult = analogRead(analogPin);
// Расчет длительности мигания
currentPeriod = (float)adcResult / ADC_MAX * (PERIOD_MAX - PERIOD_MIN) + PERIOD_MIN;
// Зажигаем светодиод
digitalWrite(ledPin, HIGH);
delay(currentPeriod);
// Гасим светодиод
digitalWrite(ledPin, LOW);
delay(currentPeriod);
digitalWrite(ledPin1, HIGH);
delay(currentPeriod);
digitalWrite(ledPin1, LOW);
delay(currentPeriod);
digitalWrite(ledPin2, HIGH);
delay(currentPeriod);
digitalWrite(ledPin2, LOW);
delay(currentPeriod);
}