#1 Програмування Arduino » Допоможіть будь ласка з скетчем для реле. » 2023-09-02 10:54:32

Luisianamen
відповідей: 4

Я початківець, нещодавно почав вчити Arduino. Написав скетч для Arduino uno, датчик вібрації SW-420 і Модуль 1 реле 5V для Arduino. Як працює скетч – в стані покою на цифровий вхід 8 від датчика вібрації подається HIGH, реле вимкнуто - на цифровому виході 4 LOW. Коли спрацював датчик на 8 піні LOW, через команду millis() на протязі 5сек., на 4 піні HIGH. В початку скетча використав команду delay так як при подачі напруги на Arduino зразу вмикається реле на 5 сек.,  потім скетч виконується нормально. В чому саме потрібна допомога – хочу зробити цей скетч так, щоб коли на 8 пине з’явилося LOW то на 4 пине HIGH з’являлося лише через 3сек., трималося там 5сек., і вимикалося. Головна умова не використовувати DELAY.
Дякую.



int releyPin = 4;
int vibrationPin = 8;
unsigned long vibr;
int vibrationState = 0;
void setup() {
  delay (5000);
  pinMode (releyPin, OUTPUT);
  pinMode (vibrationPin, INPUT);
}

void loop()

{
  vibrationState = digitalRead(vibrationPin);
  if (vibrationState == HIGH) {
    digitalWrite(releyPin, LOW);
  }
  if (vibrationState == LOW && millis() - vibr > 5000) {
    digitalWrite(releyPin, HIGH);
    vibr = millis();
  }
}

Підвал форуму