Всем привет!
Только начинаю, и столкнулся с проблемой, которая кажется простой, но понять как ее решить не могу.
Есть фоторезистор, есть светодиод. Необходимо, чтобы при значения с фоторезистора > 450 светодиод моргал, меньше - постоянно горел. Фоторезистор опрашивается каждую секунду и выводит значение в сериал. С этим я справился.
Но дальше затык. Мне необходимо, чтобы первое условие сработало через N-секунд, второе – через M-секунд. При подстановке Delay или таймера закономерно весь луп начинает задерживаться на это значение, в том числе считывание значений фоторезистора и моргание светодиода. И так далее. А необходимо чтобы:
1. фоторезистор опрашивался каждую секунду независимо от всего, что будет происходить дальше
2. первое и второе действие "стартовали" с указанной им задержкой.
Прикрепляю свой кривой код, на котором и встрял.
Заранее огромнейшее спасибо за помощь!
Только начинаю, и столкнулся с проблемой, которая кажется простой, но понять как ее решить не могу.
Есть фоторезистор, есть светодиод. Необходимо, чтобы при значения с фоторезистора > 450 светодиод моргал, меньше - постоянно горел. Фоторезистор опрашивается каждую секунду и выводит значение в сериал. С этим я справился.
Но дальше затык. Мне необходимо, чтобы первое условие сработало через N-секунд, второе – через M-секунд. При подстановке Delay или таймера закономерно весь луп начинает задерживаться на это значение, в том числе считывание значений фоторезистора и моргание светодиода. И так далее. А необходимо чтобы:
1. фоторезистор опрашивался каждую секунду независимо от всего, что будет происходить дальше
2. первое и второе действие "стартовали" с указанной им задержкой.
Прикрепляю свой кривой код, на котором и встрял.
Заранее огромнейшее спасибо за помощь!
C++:
int photocellPin = 0;
int photocellReading;
int led = 7;
#define PER_1 1000
unsigned long timer_1;
void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
}
void loop() {
photocellReading = analogRead(photocellPin);
if(millis()-timer_1>PER_1){
timer_1=millis();
Serial.print("Analog reading = ");
Serial.println(photocellReading);
};
if (photocellReading > 450) {
delay(3000);
digitalWrite(led, HIGH);
delay(300);
digitalWrite(led,LOW);
delay(300);
}
else {
delay(8000);
digitalWrite(led, HIGH);
};
}