есть скетч, если честно то это доводчик стекол, на 4 стекла.
int switchPin = 12;
int relay1Pin = 6;
int relay2Pin = 7;
int relay3Pin = 8;
int relay4Pin = 9;
int loc1Pin = 2;
int loc2Pin = 3;
int loc3Pin = 4;
int loc4Pin = 5;
void setup()
{
pinMode(switchPin, INPUT);
pinMode(relay1Pin, OUTPUT);
pinMode(loc1Pin, INPUT);
pinMode(relay2Pin, OUTPUT);
pinMode(loc2Pin, INPUT);
pinMode(relay3Pin, OUTPUT);
pinMode(loc3Pin, INPUT);
pinMode(relay4Pin, OUTPUT);
pinMode(loc4Pin, INPUT);
}
void loop()
{
if (digitalRead(switchPin) == LOW)
{
if (digitalRead(loc1Pin) == LOW)
digitalWrite(relay1Pin, LOW);
}
if (digitalRead(switchPin) == LOW)
{
if (digitalRead(loc2Pin) == LOW)
digitalWrite(relay2Pin, LOW );
}
if (digitalRead(switchPin) == LOW)
{
if (digitalRead(loc3Pin) == LOW)
digitalWrite(relay3Pin, LOW);
}
if (digitalRead(switchPin) == LOW)
{
if (digitalRead(loc4Pin) == LOW)
digitalWrite(relay4Pin, LOW );
}
else
{
{ delay(5000);}
digitalWrite(relay1Pin, HIGH);
{ delay(5000);}
digitalWrite(relay2Pin, HIGH);
{ delay(5000);}
digitalWrite(relay3Pin, HIGH);
{ delay(5000);}
digitalWrite(relay4Pin, HIGH);
}
}
как бы работает ка кнадо, но хотелось бы еще лучше.
принцип его работы не сложный, но не для меня,
описание: если подать сигнал 5в на контакт (я назвал его switchPin), то поочередно включатся 4 реле (relay1Pin-relay4Pin) с промежутком 5-7сек. есть еще 4 кнопки (loc1Pin-loc4Pin), которые сигнализируют о закрытии окна, так же не дают включить реле если оно уже закрыто (loc1Pin-loc4Pin работают на размыкание).
проблема в том что этот не могу сделать так что бы реле не включались если нажата loc1Pin-loc4Pin.
а на скетче пока все 4 реле поочередно не включатся, даже если какой то из loc1Pin-loc4Pin нажат. после если какой то зажат то реле выключается
Ну если не вдаваться в подробности и не обсуждать использование delay то самое простое и очевидное это изменить порядок выполнения. У Вас сначало проверяются все кнопки, а потом уже включаются реле, причём независимо от состояния кнопки. Т.е. получается две большие группы в одной кнопки проверяются в другой реле щелкается. А надо сделать 4 группы поменьше вроде таких:
и таких 4ре группы меняя тоьлко циферки в locNPin и relayNPin. Но это тоже колхоз на самом деле. Но Вашу задачу решит, перед включение реле проверится состояние кнопки и если она нажата (или не нажата смотря что там за кнопки) реле не сработает.
у меня был такой вариант, но я все равно попробовал еще раз,
при добавлении delay в цикл, чтобы что-то сработало надо удерживать SwitchPin.
а в реале на SwitchPin подается импульс напряжения 0.5сек (импульс с сигнализации о ее включении и закрытии дверей)
Ну введите флаг который будет показывать надо ли закрывать окна или нет и всё. Т.е. импульст 0.5сек устанавливает флаг в true ориентируясь на этот флаг мы и работаем уже независимо от состояния switchPin
я в Ардуине 1 мес и я не программист от бога... я не знаю всех терминов... не могли бы вы чуточку поподробней.
кто-нибудь можно поподробней!
Что-то вроде такого, логику еще проверить надо, в блокноте делал
Такие доводчики раньше на амереканские тачки ставили, но после того как стеклом задушило ребенка подобные устройства запретили!!! Сейчас доводчики оснащены датчиком тока, если стекло уперлось, закрылось или чьято голова попала) то реле отключается! Можно прикрутить датчик ACS712 .
http://arduino.ru/forum/programmirovanie/datchik-toka-acs712