ищу исполнителя проекта

fortecl
Offline
Зарегистрирован: 02.11.2017

89063698212 Сергей

имеется: 

Arduino nano,

3 датчика (sensor1, sensor2, sensor3) подключенные к DI2, DI4 и DI6 :  дискретный вход переходит в состояние HIGH при появлении на нем сигнала высокого уровня (в моем случае +4Вольта) и в LOW при пропадании сигнала

1 релейный модуль состоящий из одного реле подкл к DO8 (РЕЛЕ сработает если digitalWrite(relay,LOW)

int sensor1 = 6;

int sensor2 = 2;

int sensor3 = 4;

int relay = 8

void setup() {
  pinMode(sensor1,INPUT); // назначаем пин 6 входом
  pinMode(sensor2,INPUT); // назначаем пин 2 входом
  pinMode(sensor3,INPUT); // назначаем пин 4 входом
  pinMode(relay,OUTPUT); // назначаем пин 8 выходом
 
теперь сама задача:
после того как сработал sensor1 -  ждем, что sensor2 и sensor3 откл за интервал времени 3 секунды;
если этого не произошло, то реле включится
 
 

 

 

 

 

Onkel
Offline
Зарегистрирован: 22.02.2016

    Пишите ydom@mail.ru  сделаем.

 

p.masyukov
p.masyukov аватар
Offline
Зарегистрирован: 14.11.2015

p.masyukov skype

DIYMan
Offline
Зарегистрирован: 23.11.2015

Дело было вечером, делать было... 500 рублей - детям-сиротам можно перевести, код, соответствующий ТЗ в стартовом посте - ниже:

int sensor1 = 6;
int sensor2 = 2;
int sensor3 = 4;

int relay = 8;

#define RELAY_OFF HIGH // уровень включения реле
#define RELAY_ON LOW // уровень выключения реле

#define SENSOR_TRIGGERED_LEVEL HIGH // уровень срабатывания сенсора

unsigned long waitTimer;

typedef enum
{
	msWaitForSensor1Triggered, // ждём срабатывания сенсора 1
	msWaitForSensors1_2_Off // по срабатыванию сенсора 1 ждём 3 секунды, затем проверяем - надо ли включить реле
	
} MachineState;

MachineState machineState;

void setup() 
{
  pinMode(sensor1,INPUT); // назначаем пин 6 входом
  pinMode(sensor2,INPUT); // назначаем пин 2 входом
  pinMode(sensor3,INPUT); // назначаем пин 4 входом
  pinMode(relay,OUTPUT); // назначаем пин 8 выходом
  digitalWrite(relay,RELAY_OFF);
  
  machineState = msWaitForSensor1Triggered;
}

void loop()
{
	switch(machineState) // проверяем состояние конечного автомата
	{
		case msWaitForSensor1Triggered: // ждём срабатывания сенсора 1
		{
			if(digitalRead(sensor1) == SENSOR_TRIGGERED_LEVEL) // сенсор сработал
			{
					machineState = msWaitForSensors1_2_Off; // переключаемся на ожидание трёх секунд
					waitTimer = millis(); // запоминаем старт счёта времени
			}
		}
		break;
		
		case msWaitForSensors1_2_Off: // ждём 3 секунды
		{
			if(millis() - waitTimer > 3000) // если они прошли
			{
				// и хотя бы один из сенсоров в нужном уровне - 
				 if((digitalRead(sensor2) == SENSOR_TRIGGERED_LEVEL || digitalRead(sensor3) == SENSOR_TRIGGERED_LEVEL ))
				 {
					 digitalWrite(relay,RELAY_ON); // включаем реле
				 }
				 
				 // тут неясно, что делать, если прошло 3 секунды, а сенсоры выключились.
				 // сейчас через 3 секунды в любом случае происходит возврат на срабатывание сенсора 1,
				 // реле включается, если через 3 секунды хотя бы один из сенсоров ещё взведён.
				 machineState = msWaitForSensor1Triggered;
			}
		}
		break;
	}
	
}

 

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

DIYMan пишет:
Дело было вечером, делать было... 500 рублей - детям-сиротам можно перевести, код, соответствующий ТЗ в стартовом посте ...

Не, главное на меня наезжает, а сам....

DIYMan
Offline
Зарегистрирован: 23.11.2015

brokly пишет:

DIYMan пишет:
Дело было вечером, делать было... 500 рублей - детям-сиротам можно перевести, код, соответствующий ТЗ в стартовом посте ...

Не, главное на меня наезжает, а сам....

Вот я сволочь, согласен :)

fortecl
Offline
Зарегистрирован: 02.11.2017

Огромное спасибо за проделанную работу, вчера опробовал код, все работает но я скорее всего не правильно сформулировал своё ТЗ: 

как бы это объяснить, 

Пока sensor1 остаётся вкл - ждем, что sensor2 и sensor3 откл за интервал времени 3 секунды;

если этого не произошло, то реле включится,
если прошло 3 сек и sensor2 или sensor3  или оба сразу вкл, то тоже должно сработать реле
но как только sensor1 откл не чего не должно происходить с реле, оно должно оставаться в начальном выключенном состоянии, пока опять не сработает sensor1 и условия проверки повторяться, фух как то так
DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Разберись и перепишы в сатвецтвии с твоими голосами в голове

strarbit
Offline
Зарегистрирован: 12.06.2016

пишите webserpantin gmail.com

 

DIYMan
Offline
Зарегистрирован: 23.11.2015

fortecl пишет:

Огромное спасибо за проделанную работу, вчера опробовал код, все работает но я скорее всего не правильно сформулировал своё ТЗ: 

как бы это объяснить, 

Пока sensor1 остаётся вкл - ждем, что sensor2 и sensor3 откл за интервал времени 3 секунды;

если этого не произошло, то реле включится,
если прошло 3 сек и sensor2 или sensor3  или оба сразу вкл, то тоже должно сработать реле
но как только sensor1 откл не чего не должно происходить с реле, оно должно оставаться в начальном выключенном состоянии, пока опять не сработает sensor1 и условия проверки повторяться, фух как то так

Уточнения после сделанной работы по первоначальному ТЗ - это новый этап работы. Работа по первоначальному ТЗ выполнена, на 100%. 500 рублей в благотворительный фонд перевели?

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

DIYMan пишет:

Уточнения после сделанной работы по первоначальному ТЗ - это новый этап работы. Работа по первоначальному ТЗ выполнена, на 100%. 500 рублей в благотворительный фонд перевели?

Ты че такой наивный ? Они када готовое получают, как правило, на пиво и то не дают:) Мне только один раз на телефон 250 рублей бросили, но там оно дороже и не стоило. Я тогда реально охренел, от щедрот таких.

А тут , тем более, хотелка не так описана оказалась. Типичныйц пример неумения описать желаемое в ТЗ, зато все отлично расчитывают программисто часы, по 300 рублей :)

DIYMan
Offline
Зарегистрирован: 23.11.2015

brokly пишет:

Ты че такой наивный ? 

Да я прикалываюсь, ясно же, что к чему ;) :)

kapushindra
Offline
Зарегистрирован: 11.02.2016

Чем дело-то кончилось? Благодарный ТС на пиво прислал что-нибудь?

wild.wolf666
Offline
Зарегистрирован: 10.11.2017

Вопрос к профессионалам, кто может написать скетч для планшетного принтера? В наличии скетч, но с ошибками, энкодер читает, проблема с ходом ШД. Не обижу. В наличии Ардуино Уно, драйвер ШД А 4988, ШД Nema 17/

vvadim
Offline
Зарегистрирован: 23.05.2012

wild.wolf666 пишет:

Вопрос к профессионалам, кто может написать скетч для планшетного принтера? В наличии скетч, но с ошибками, энкодер читает, проблема с ходом ШД. Не обижу. В наличии Ардуино Уно, драйвер ШД А 4988, ШД Nema 17/

сбросьте что есть и что хотите получить)))

7808543@gmail.com