"Умная штора"
Заключение
В рамках данной курсовой работы цель достигнута - была разработана система, обеспечивающая автоматическую работу жалюзи/штор без непосредственного физического вмешательства человека в управление механизмами.
В ходе выполнения задач с трудностями столкнулась - «спалила» один контроллер форм-фактора Nano, поле чего был произведен переход на Uno.
В настоящее время проект готов к доработке.
Дальнейшие направления развития:
· Разработка Android-приложения для управления платформой через Bluetooth;
· Интеграция датчика света;
· Интеграция часов;
· Физическое присоединение к механизму жалюзи;
· Эстетическое улучшение внешнего вида.
Список использованных источников
1. Майоров В. Г., Гаврилов А. И. Практический курс программирования микропроцессорных систем // Машиностроение. 2009;
2. Фрибель В., Ролоф Х., Шиллер Х. Программирование микропроцессоров // Энергоиздат. 2009;
3. URL: http://www arduino.ru/ (дата обращения 16.12.15);
4. URL: http://www CyberForum.ru/ (дата обращения 21.11.15);
5. URL: http://www cxem.net/ (дата обращения 16.12.15);
6. URL: http://www miniinthebox.com/ (дата обращения 16.12.15);
7. URL: http://www habrahabr.ru/ (дата обращения 21.03.16);
8. URL: http://www freeduino.ru/ (дата обращения 14.02.16);
9. URL: http://www radioparty.ru/ (дата обращения 14.02.16);
10. URL: http://www forum.amperka (дата обращения 21.11.16).
Приложение 1
Полный код программы.
#include <StepperMotor.h>
const int IN1 = 2;
const int IN2 = 3;
const int IN3 = 4;
const int IN4 = 5;
StepperMotor stepper(IN4, IN3, IN2, IN1);
/**
* Используется для управления
*/
class Blinds
{
private:
/**
* Хранит текущее положение штор, изначально закрыты
* */
boolean stateBlinds;
public:
Blinds(boolean stateBlinds) {
this->stateBlinds = stateBlinds;
}
/**
* Открывает шторы
* */
void blindsUp()
{
stepper.move(2048);
stateBlinds = true;
}
/**
* Закрывает шторы
* */
void blindsDown()
{
stepper.move(-2048);
stateBlinds = false;
}
/**
* Возращает true в случае, если состояние возможно изменить
* */
boolean checkPosition(byte message)
{
if ((stateBlinds == false && message == 0) || (stateBlinds == true && message == 1))
{
return false;
}
return true;
}
};
Blinds *blind;
/**
* Проверяет наличие новых данных из приложения и запускает соответствующие действие
*/
void read() {
if (Serial.available() > 0) {
byte message = Serial.read();
if (blind->checkPosition(message)) {
if (message == 0) {
blind->blindsDown();
}
if (message == 1) {
blind->blindsUp();
}
}
}
}
void setup() {
blind = new Blinds(false);
Serial.begin(9600);
stepper.setPeriod(5);
}
void loop() {
read();
}