Ви не увійшли.
Всем доброго времени суток.
Решил переложить управление светом в салоне авто на ардуино.
Железную часть собрал. А вот с программной пока не выходит.
Задачи для ардуины:
- при открытии багажника срабатывает концевик, ардуина считывает это и включает освещение в багажнике. (с этим проблем нет)
- при открытом багажнике свет горит 10 минут и автоматически гаснет. (тут проблема, запутался с таймерами. не выходит)
- при открытии двери свет плавно разгорается (PWM) и горит пока дверь не будет закрыта.
- после закрытии двери свет горит еще 15 секунд, затем плавно гаснет.
- при вкл зажигания свет сразу гаснет.
Проблема: у меня не выходит разобраться с задержками отключения салонного света и автоматическим выключением света незакрытого багажника.
Примитивный код багажника:
#define TrLightPin 10
#define TrunkOpenPin 3
bool TrLightStatus;
bool TrunkOpenStatus;
void setup()
{
pinMode(TrunkOpenPin, INPUT);
pinMode(TrLightPin, OUTPUT);
TrLightStatus = 0;
}
void loop()
{
TrunkOpenStatus = (digitalRead(TrunkOpenPin));
if(TrunkOpenStatus == HIGH )
{
if(TrLightStatus == 0)
{
digitalWrite(TrLightPin, 1);
TrLightStatus = 1;
}
}
else
{
if(TrLightStatus == 1)
{
digitalWrite(TrLightPin, 0);
TrLightStatus = 0;
}
}
}
Прошу помощи в реализации данного проекта.
Остання редакція serg (2018-10-03 19:37:36)
Неактивний
Проблема: у меня выходит с задержками отключения салонного света и автоматическим выключением света незакрытого багажника.
Прошу помощи в реализации данного проекта.
Р А С Ш И Ф Р У Й ! ! !
Неактивний
Не выходит реализовать:
1. автоматическое отключение света в багажнике через заданное время. Нужно, чтобы при открытом баагажнике, по истечению 15 минут (или не важно сколько) свет сам выключился.
2. после закрытии дверей авто, свет выключался не сразу, а через допустим минуту. Желательно плавно вкл и выкл.
Неактивний
Не выходит реализовать ...
Сначала представьте ваш автомат как машину состояний. Затем составьте алгоритм её работы. Затем определите какие готовые библиотеки можно использовать для его программирования (например для таймеров), а что придется писать самому. А уж затем программируйте.
Неактивний
serg пише:Не выходит реализовать ...
Сначала представьте ваш автомат как машину состояний. Затем составьте алгоритм её работы. Затем определите какие готовые библиотеки можно использовать для его программирования (например для таймеров), а что придется писать самому. А уж затем программируйте.
В случае багажника:
Открыт багажник(замкнут концевик):
- да--включить свет--запустить таймер--время вышло--выкл свет;
- нет--выкл. свет.
По этой схеме накидал скетч. Свет выключается через определенный промежуток времени . Но при этом промежуток бывает разным. По скетчу это 10 сек, а по факту может быть 3,5,8...по разному. Не могу понять в чем ошибка.
#define TrunkLightPin 10
#define TrunkOpenPin 3
bool TrunkLightStatus,TrunkOpenOFFStatus,TrunkOpenStatus;
unsigned long previousMillis;
const unsigned long TimePower=10000;
void setup()
{
pinMode(TrunkOpenPin, INPUT);
pinMode(TrunkLightPin, OUTPUT);
}
void loop()
{
TrunkOpenStatus = digitalRead(TrunkOpenPin);
if(TrunkOpenStatus)
{
TrunkLightStatus = 1;
}
else
{
TrunkLightStatus = 0;
TrunkOpenOFFStatus = 0;
}
if (TrunkLightStatus == 1 && TrunkOpenOFFStatus ==0)
{
digitalWrite(TrunkLightPin, HIGH);
if (( millis() - previousMillis) > TimePower)
{
previousMillis = millis();
TrunkLightStatus=0;
TrunkOpenOFFStatus = 1;
}
}
else
{
digitalWrite(TrunkLightPin, LOW);
}
}
Просьба помочь разобраться, где я ошибся в коде.
Неактивний
#define TrunkLightPin 10
#define TrunkOpenPin 3
bool TrunkLightStatus, TrunkOpenOFFStatus, TrunkOpenStatus;
unsigned long previousMillis;
const unsigned long TimePower = 10000;
void setup() {
pinMode(TrunkOpenPin, INPUT);
pinMode(TrunkLightPin, OUTPUT);
}
void loop() { TrunkOpenStatus = digitalRead(TrunkOpenPin);
if(TrunkOpenStatus) { TrunkLightStatus = true; } // контакт сработал
if(!TrunkOpenStatus) { TrunkLightStatus = false; TrunkOpenOFFStatus = false;
digitalWrite(TrunkLightPin, LOW); }
if (TrunkLightStatus == true && TrunkOpenOFFStatus == false) { digitalWrite(TrunkLightPin, HIGH);
TrunkOpenOFFStatus = true; previousMillis = millis(); }
if ((millis() - previousMillis) > TimePower) { digitalWrite(TrunkLightPin, LOW); }
}
извините, больше не буду ....
Неактивний
... Просьба помочь разобраться, где я ошибся в коде.
Везде. Я вам пытался помочь разобраться но вы не слушаете. Все гении такие, им наука ни к чему, они и так все уже знают и умеют. Им нужно только помочь опечатки поисправлять!
извините, больше не буду ....
Не извиняйтесь, renoshnik, пишите сколько хотите и что хотите, это не изменит общее состояние дел.
Неактивний
извините, больше не буду ....
Спасибо за помощь. Разобрался.
Везде. Я вам пытался помочь разобраться но вы не слушаете. Все гении такие, им наука ни к чему, они и так все уже знают и умеют.
Им нужно только помочь опечатки поисправлять!
Не могу понять, почему такая реакция на просьбу помочь?
Зачем тогда нужен этот форум?
Где я написал, что я, как Вы говорите, "гений"?
Зачем переходить на личности...
Или Вы специалист во всех сферах жизни 80 уровня? Возник какой-то вопрос, спрашиваешь у человека, а он такой "ну ок, ты разберись сам, что ты хочешь от меня?".
Короче сплошной оффтоп...
Неактивний
Не могу понять, почему такая реакция на просьбу помочь?
Зачем тогда нужен этот форум?
Где я написал, что я, как Вы говорите, "гений"?
Зачем переходить на личности...
Извините если я вас обидел, я не хотел, просто накипело. Форум, с латыни, это место где заключают договора, сделки и т.п. А не оказывают бесплатную помощь по выполнению работ. Подсказать это одно, но выполнять отладку или переделку ваших программ - это уже совсем другое. Для этого сушествует отдельный раздел: https://forum.arduino.ua/viewtopic.php?id=1069 .
Неактивний