Программирование автоматического открытия двери
- Войдите на сайт для отправки комментариев
Всем привет. Пытаюсь сделать один проект - автоматически открывающиеся двери, с использованием двух ПИР датчиков движения, двух моторов постоянного тока 12 вольт и двух тактовых кнопок. Оба мотора подключены к Arduino через два двухканальных реле, один мотор стоит на открытие/закрытие замка защелки, воторой мотор стоит на открытие/закрытия самой двери. Датчики движения стоят по обе стороны двери. Принцип работы такого проекта заключается в том, что: когда срабатывает один из датчиков движения, сигнал поступает в ардуино, а уже оттуда вначале на замок открытия, потом на мотор открытия самой двери. Когда дверь полностью открывается (достигает точки 90 градусов), она упирается в кнопку, которая должна отключить мотор, чтобы тот не толкал дверь дальше. С момента, когда дверь коснулась кнопки, должно пройти 15 секунд, после чего дверь должна начать закрываться.
Когда дверь доходит до конечной точки закрытия, она касается второй установленной кнопки и мотор выключается. По срабатыванию второй кнопки, на ардуино приходит сигнал 0, и система обновляется, чтобы потом вновь начать цикл с самого начала, когда датчики движения снова уловят присудствие человека.
Проблема заключается в написании кода для управления такой системой. Я не особо сильна в программировании, поэтому хотелось бы получит совета. Программу управления датчиками и моторами, я более менее написала (но там могут быть ошибки), а вот правильно вписать в программу кнопки уже не знаю как. По логике, пока кнопки не были нажаты, на них должен быть сигнал равный 1, а когда нажаты, должен быть 0.
Может кто-нибудь сможет помочь с этим делом?
int pirsensor1 = 13; // датчик движения 1 int pirsensor2 = 12 ; // датчик движения 2 int motor1A = 7; // Первый мотор - замок int motor1B = 8; int motor2A = 4; //Второй мотор - на двери int motor2B = 2; int button1 = 15; // кнопка 1 int button2 = 16; // кнопка 2 int value = 0; //переменная для хранения состояния датчика void setup () { Serial.begin (9600); pinMode (pirsensor1,INPUT); pinMode (pirsensor2,INPUT); pinMode (motor1А, OUTPUT); pinMode (motor1В, OUTPUT); pinMode (motor2А, OUTPUT); pinMode (motor2В, OUTPUT); pinMode (button1, INPUT); pinMode (button2, INPUT); } void loop() { int val1=digitalRead(pirsensor1); int val2=digitalRead(pirsensor2); if (val1==HIGH) // когда датчик уловил появление человека { digitalWrite(motor1А, HIGH); // включение первого мотора замка delay(1000);// ждем одну секунду digitalWrite(motor1В,LOW);// мотор останавливается digitalWrite(motor2А, HIGH);// включение второго мотора двери delay(5000); // ждем 5 секунд digitalWrite(motor2В, LOW);// мотор останавлиается delay(15000); //ждем 15 секунд, после чего дверь начинает закрываться. // перед задержкой в 15 секунд надо вписать код работы кнопки digitalWrite(motor2В,HIGH); // включение второго мотора в обратную сторону delay(5000); // ждем 5 секунд digitalWrite(motor2А, LOW); // мотор останавливается digitalWrite(motor1В, HIGH); // первый мотор замка включается delay(1000); //ждем 1 секунду digitalWrite(motor1А, LOW); // мотор останавливается delay(15000); // дверь закрылась // код второй кнопки } if (val2==HIGH) // второй датчик движения уловил присудствие человека { digitalWrite(motor1А, HIGH); delay(1000); digitalWrite(motor1В,LOW); digitalWrite(motor2А, HIGH); delay(5000); digitalWrite(motor2В, LOW); delay(15000); digitalWrite(motor2В,HIGH); delay(5000); digitalWrite(motor2А, LOW); digitalWrite(motor1В, HIGH); delay(1000); digitalWrite(motor1А, LOW); delay(15000); } }
С кнопками или так http://arduino.ru/forum/programmirovanie/biblioteka-dlya-tsifrovogo-vykh...
Или Титановый велосипед для тактовой кнопки.
А вообже код закрытия и открытия двери должен находица в цикле While - смотрите раздел программирование.
Тоесть закрывать пока не замкнется концевой выключатель и для открытия тоже самое.
While(дверь закрыта?){
Пока не закрыта закрываем и проверяем концевой
}
А если застряло чего? Надо по датчику тока ориентироваться как дожим на электрозадвижках.
если застряло шея, то нужно дожимать.
*алё! ТС, кто будет сертифицировать безопасность твоей двери?
если застряло шея, то нужно дожимать.
*алё! ТС, кто будет сертифицировать безопасность твоей двери?
Я немного поясню, проект делается для дипломной работы, соответсвенно собран макет двери (примерно 80 см высотой), так что никто свои шеи всовывать в проем не будет.
Дожим имеется в виду - останов при встрече препятствия (конечного положения двери или чьейто конечности:))
Я немного поясню, проект делается для дипломной работы, соответсвенно собран макет двери (примерно 80 см высотой), так что никто свои шеи всовывать в проем не будет.
дипломная дверь может быть небезопасной?
дипломную дверь нужно разрабатывать самостоятельно для подтверждения своей квалификации или допустимо по тырнетам нисченствовать?
подайте на диплом, сами мы тупые - да?
дипломная дверь может быть небезопасной?
дипломную дверь нужно разрабатывать самостоятельно для подтверждения своей квалификации или допустимо по тырнетам нисченствовать?
подайте на диплом, сами мы тупые - да?
Я никого не прошу написать программу и сделать диплом вместо меня, я лишь просила совета, как мне правильно прописать работу кнопок. Если у Вас, уважаемый Клапауций 232, нету совета, который может мне помочь, тогда попрошу обойтись без ваших замечаний по поводу моих знаний. И да, никто не запрещает, как вы выразились "нищенствовать" в просторах интеренета в поисках совета людей, разбирающихся в программировании.
Я никого не прошу написать программу и сделать диплом вместо меня, я лишь просила совета, как мне правильно прописать работу кнопок. Если у Вас, уважаемый Клапауций 232, нету совета, который может мне помочь, тогда попрошу обойтись без ваших замечаний по поводу моих знаний. И да, никто не запрещает, как вы выразились "нищенствовать" в просторах интеренета в поисках совета людей, разбирающихся в программировании.
откуда, эти сцуко вежливые паразиты на теле человеческого общества берутся?
или заплати за диплом деньги или насоси себе диплом, а если ты бедная и страшная, то учись!
откуда, эти сцуко вежливые паразиты на теле человеческого общества берутся?
или заплати за диплом деньги или насоси себе диплом, а если ты бедная и страшная, то учись!
Слушай ты, прыщь на теле человечества, захлопни свою вонючую варежку. Если твой мозг с размером в горошину, то сиди молча в своем грязном углу и не позорь себя. Не к тебе обращалясь за советом, так что иди своей дорогой и не засерай эту тему своими гнилыми выражениями!
Слушай ты, прыщь на теле человечества, захлопни свою вонючую варежку. Если твой мозг с размером в горошину, то сиди молча в своем грязном углу и не позорь себя. Не к тебе обращалясь за советом, так что иди своей дорогой и не засерай эту тему своими гнилыми выражениями!
вакансия: торговка палёным товаром на рынке - принята. :D
А Вы, какой применяете драйвер моторов
Если Вы написали программу и у Вас есть макет то что Вас не устраивает в работе программы? На Клапауция не обращайте внимания, он вообще добрый, просто часто болеет...
Попробуйте такой код:
Если Вы написали программу и у Вас есть макет то что Вас не устраивает в работе программы? На Клапауция не обращайте внимания, он вообще добрый, просто часто болеет...
скажем так, что программа меня устраивает, только проблема в том, что работает не корректно. И я не имею ничего плохого по отношению к Клапауцию, но пусть он свои грубые замечания оставляет при себе.
Попробуйте такой код:
Спасибо Вам большое за Вашу помощь в программе, обязательно попробую ее применить на своем макете :)