фотодатчик и UNO

Dimasik15
Offline
Зарегистрирован: 23.01.2019

Добрый день. ДЕлаю маленький проектик. Суть проекта при срабатывание датчика больше 5 сек. ,закрываются рыле,при освобождении датчика уже включаются рыле. А  при отсутствии сигнала больше 5 сек , закрыть рыле,а при появлении сигнала опять открыть рыле. Получилась только первая часть, с второй частью  проблемка). как можно понять что датчик выключен.? LOW не сработал)

 



if(digitalRead(sensor_pin) == HIGH){
  digitalWrite(rel1_pin, HIGH);
 digitalWrite(rel2_pin, HIGH);
  trig = true;
  Timer = millis();}
 
    if (trig)
    if(millis() - Timer > 5000)
    {
      digitalWrite(rel1_pin, LOW);
      digitalWrite(rel2_pin, LOW);
trig = false;
    }
}

  

mixail844
Offline
Зарегистрирован: 30.04.2012

давайте по порядку  : можете схему привести и какими датчиками пользуетесь  ? 

Цитата:

при срабатывание датчика больше 5 сек

это что значит ? датчик улавливает сигнал на протяжении 5-ти секунд и более ? 

покажите ваш код обработки обоих случаев

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

Dimasik15 пишет:

при срабатывание датчика больше 5 сек. ,закрываются рыле,при освобождении датчика уже включаются рыле. А  при отсутствии сигнала больше 5 сек , закрыть рыле,а при появлении сигнала опять открыть рыле.

На чьём, простите, рыле? Я таких намёков нипатерплю!!!

Dimasik15 пишет:

как можно понять что датчик выключен.? LOW не сработал)

Никак!

Для начала надо понять смысл задачи и сформулироваль её непротиворечиво и внятно.

Вот чем отличается "срабатывание датчика" от "поялвления сигнала"? При первом, как я понял, надо рыло закрыть, а при втором "опять открыть". Вы сами-то понимаете что и когда делать с рылом?

Dimasik15
Offline
Зарегистрирован: 23.01.2019

mixail844 пишет:

давайте по порядку  : можете схему привести и какими датчиками пользуетесь  ? 

Цитата:

при срабатывание датчика больше 5 сек

это что значит ? датчик улавливает сигнал на протяжении 5-ти секунд и более ? 

покажите ваш код обработки обоих случаев

Все верно, кратковременные сигналы не интересуют. А если нет сигнала больше 5-ти секунд, подать сигнал на пины 10,12,чтоб сработало рыле.  

#define sensor_pin 2 
#define rel1_pin 12 
#define rel2_pin 10 


unsigned long Timer;

bool trig = false;
void setup() {
Serial.begin(9600);
pinMode(rel1_pin, OUTPUT);
digitalWrite(rel1_pin, HIGH); 
pinMode(rel2_pin, OUTPUT);
digitalWrite(rel2_pin, HIGH); 
pinMode(sensor_pin, INPUT);

}

void loop() {

if(digitalRead(sensor_pin) == HIGH){
  digitalWrite(rel1_pin, HIGH);
 digitalWrite(rel2_pin, HIGH);
  trig = true;
  Timer = millis();}
 
    if (trig)
    if(millis() - Timer > 5000)
    {
      digitalWrite(rel1_pin, LOW);
      digitalWrite(rel2_pin, LOW);
trig = false;
    }
}

 

sadman41
Offline
Зарегистрирован: 19.10.2016

ЕвгенийП пишет:

Dimasik15 пишет:

при срабатывание датчика больше 5 сек. ,закрываются рыле,при освобождении датчика уже включаются рыле. А  при отсутствии сигнала больше 5 сек , закрыть рыле,а при появлении сигнала опять открыть рыле.

На чьём, простите, рыле? Я таких намёков нипатерплю!!!

Не переживайте Вы так. Рыле - это родня цыкла. 

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

sadman41 пишет:

Рыле - это родня цыкла. 

А-а-а! Т.е. рыле надо включать в цыкле? И тогда всё будет окей? Так объясните ТС, а то он мучается с этими рылами.

ВН
Offline
Зарегистрирован: 25.02.2016

а может там гендендерная несовместимость?

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Dimasik15 пишет:

 

Все верно, кратковременные сигналы не интересуют. А если нет сигнала больше 5-ти секунд, подать сигнал на пины 10,12,чтоб сработало рыле.  

#define sensor_pin 2 
#define rel1_pin 12 
#define rel2_pin 10 


unsigned long Timer;

bool trig = false;
void setup() {
Serial.begin(9600);
pinMode(rel1_pin, OUTPUT);
digitalWrite(rel1_pin, HIGH); 
pinMode(rel2_pin, OUTPUT);
digitalWrite(rel2_pin, HIGH); 
pinMode(sensor_pin, INPUT);

}

void loop() {

if(digitalRead(sensor_pin) == HIGH){
  digitalWrite(rel1_pin, HIGH);
 digitalWrite(rel2_pin, HIGH);
  trig = true;
  Timer = millis();}
 
    if (trig)
    if(millis() - Timer > 5000)
    {
      digitalWrite(rel1_pin, LOW);
      digitalWrite(rel2_pin, LOW);
trig = false;
    }
}

 

А Вы уверены, что ЭТО работает? Меня жутко смущает 27 строка.

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

mykaida пишет:
Меня жутко смущает 27 строка.
А что с ней не так? То, что она не нужна вовсе и оптимизатор её скорее всего выбросил - это понятно, а проблем с ней вроде не видно (если я ничего не пропустил).

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

Задача поставлена не совсем понятно. Посмотрите, я понял так

#define sensor_pin 2 
#define rel1_pin 12 
#define rel2_pin 10 

unsigned long Timer;
uint8_t trigOn = 0;
uint8_t trigOf = 0;

void setup() {
  Serial.begin(9600);
  pinMode(rel1_pin, OUTPUT);
  digitalWrite(rel1_pin, HIGH); 
  pinMode(rel2_pin, OUTPUT);
  digitalWrite(rel2_pin, HIGH); 
  pinMode(sensor_pin, INPUT);

}

void loop() {

  if(digitalRead(sensor_pin) == HIGH && trigOn == 0){//Сработал датчик
    trigOn = 1;
    Timer = millis();//Засекли время
  }
  if(digitalRead(sensor_pin) == HIGH){
    if(trigOn == 1 && millis() - Timer > 5000)//Прошло 5с идатчик Вк.-Вк.реле
    {
      trigOf = 0;
      digitalWrite(rel1_pin, HIGH);
      digitalWrite(rel2_pin, HIGH);
      trigOn = 2;
    }
  }

// Здесь коментарии теже самые только при Вык. датчика
  if(digitalRead(sensor_pin) == LOW && trigOf == 0){
    trigOf = 1;
    Timer = millis();
  }

  if(digitalRead(sensor_pin) == LOW){
    if(trigOf && millis() - Timer > 5000)
    {
      trigOn = 0;
      digitalWrite(rel1_pin, LOW);
      digitalWrite(rel2_pin, LOW);
      trigOf = false;
    }
  }
}

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

ЕвгенийП пишет:
На чьём, простите, рыле? Я таких намёков нипатерплю!!!

Вот у меня всегда проблема как надо писать это слово , с одной ріле или с двумя точками рїле. Но может рйле все же вернее.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

ЕвгенийП пишет:

А что с ней не так? То, что она не нужна вовсе и оптимизатор её скорее всего выбросил - это понятно, а проблем с ней вроде не видно (если я ничего не пропустил).

Ни разу с таким не сталкивался... Буду знать. Спасибо, Евгений.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Мда. Накрутили писец как. А юзали бы автомат Пуха, то проблем никаких не было.