Подсчёт времени лог. единицы

Apocalyps
Offline
Зарегистрирован: 26.07.2015

Вообщем нужно реализовать такой скетч, если на порт заходит "1" и держится там 1 секунду, то выполняется определённое действие. Помогите, как такое реализовать

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015
Apocalyps
Offline
Зарегистрирован: 26.07.2015

благодарю, вроде то что мне надо

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Не за что. RTFM.

Apocalyps
Offline
Зарегистрирован: 26.07.2015

Вообще попытка написать код. Итог: не работает у меня. Подскажите где косяк

#define pin1 3
#define pin2 4
#define z 600000
int zn;
void setup() {
  pinMode(pin1, INPUT);
  pinMode(pin2, OUTPUT);
}

void loop() {
  zn = pulseIn(pin1, z, HIGH);
  if (zn == 1) {
    digitalWrite(pin2, HIGH);
    delay(600);
    digitalWrite(pin2, LOW);
    zn = 0;
  }
}

 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Apocalyps, не косяк, а косяки. В 3,4, 11, 12 строках. Причём в некоторых сразу по 2 ошибки )

Apocalyps
Offline
Зарегистрирован: 26.07.2015

dimax пишет:

Apocalyps, не косяк, а косяки. В 3,4, 11, 12 строках. Причём в некоторых сразу по 2 ошибки )

подскажите пожалуйста, как починить

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Имейте ввиду, что без pull-down резистора на pin1 это работать не будет.


#define pin1 3
#define pin2 4
#define z 10000000ul //ожидать 10 сек
unsigned long  zn;
void setup() {
pinMode(pin1, INPUT);
pinMode(pin2, OUTPUT);
}

void loop() {
zn = pulseIn(pin1,HIGH,z);
 if (zn >= 1000000) { //если импульс HIGH  длинее чем 1сек
    digitalWrite(pin2, HIGH);
    delay(600);
    digitalWrite(pin2, LOW);
     zn=0;
     }
}

 

Apocalyps
Offline
Зарегистрирован: 26.07.2015

Спасибо большое. Резистор стоит.