Arduino.Включение светодиода от фоторезистора на некоторое в

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 1
Зарегистрирован: Вс дек 15, 2019 22:02:32

Сообщение JackRoL »

Всем доброго времени суток. Работаю на ардуино, нужна помощь. Задача такая: нужно чтобы при закрывании фоторезистора или выключении света светодиод включался на несколько секунд (5-10) и потом выключался. В общем получилось, но отсчет времени идёт от того момента, когда я убираю палец с фоторезистора. И ещё интервал времени до отключения бывает меняется (становится меньше). Вот что получилось:

Код: Выделить всё

int ledPin = 7;
int photoPin = A0;
int ledState = LOW;
long previousMillis = 0; 
long interval = 5000;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(photoPin, INPUT);

}

void loop() {
  if (analogRead (photoPin) >800)
  digitalWrite (ledPin, HIGH);
  unsigned long currentMillis = millis();
  if(currentMillis - previousMillis >= interval) {
  digitalWrite (ledPin, LOW);
  previousMillis = currentMillis; 
  if (ledState == HIGH)
      ledState = LOW;
  digitalWrite(ledPin, ledState);
  }


}
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15599
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Снова без схемы!
:evil:
Фоторезистор не генерирует напряжение - он может быть лишь частью делителя, подключенного к источнику +5 вольт.
Помимо прочего характеристики зависят от температуры, а АЦП весьма неплохо отзывается на "сигнал из пальца".
Алгоритм у Вас не соответствует "хотелке".
Должно быть:
запуск
ожидание изменения ответа АЦП
при обнаружении включить индикатор
ждать интервал
гасить индикатор
ожидание возврата фоторезистора в "освещенное" состояние (иначе имеем бесконечный перезапуск при отсутствии освещенности)
и далее по кругу.
8)
Реклама
Ответить

Вернуться в «AVR»