#1 2018-10-03 16:37:58

serg
Участник
Зарегистрирован: 2018-10-03
Сообщений: 4

Управление светом в салоне авто. Нужна помощь.

Всем доброго времени суток.
Решил переложить управление светом в салоне авто на ардуино.
Железную часть собрал. А вот с программной пока не выходит.
Задачи для ардуины:
- при открытии багажника срабатывает концевик, ардуина считывает это и включает освещение в багажнике. (с этим проблем нет)
- при открытом багажнике свет горит 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)

#2 2018-10-03 19:04:43

renoshnik
Участник
Зарегистрирован: 2017-04-03
Сообщений: 453

Re: Управление светом в салоне авто. Нужна помощь.

serg пишет:

Проблема: у меня выходит с задержками отключения салонного света и автоматическим выключением света незакрытого багажника.
Прошу помощи в реализации данного проекта.

Р А С Ш И Ф Р У Й ! ! !

#3 2018-10-03 19:36:46

serg
Участник
Зарегистрирован: 2018-10-03
Сообщений: 4

Re: Управление светом в салоне авто. Нужна помощь.

Не выходит реализовать:
1. автоматическое отключение света в багажнике через заданное время. Нужно, чтобы при открытом баагажнике, по истечению 15 минут (или не важно сколько) свет сам выключился.
2. после закрытии дверей авто, свет выключался не сразу, а через допустим минуту. Желательно плавно вкл и выкл.

#4 2018-10-03 19:52:47

Вячеслав Азаров
Участник
Зарегистрирован: 2017-05-25
Сообщений: 1,462

Re: Управление светом в салоне авто. Нужна помощь.

serg пишет:

Не выходит реализовать ...

Сначала представьте ваш автомат как машину состояний. Затем составьте алгоритм её работы. Затем определите какие готовые библиотеки можно использовать для его программирования (например для таймеров), а что придется писать самому. А уж затем программируйте.

#5 2018-10-03 23:56:49

serg
Участник
Зарегистрирован: 2018-10-03
Сообщений: 4

Re: Управление светом в салоне авто. Нужна помощь.

Вячеслав Азаров пишет:
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);     
    }
}

Просьба помочь разобраться, где я ошибся в коде.

#6 2018-10-04 07:07:09

renoshnik
Участник
Зарегистрирован: 2017-04-03
Сообщений: 453

Re: Управление светом в салоне авто. Нужна помощь.

#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); }
	}

извините, больше не буду ....

#7 2018-10-04 14:32:35

Вячеслав Азаров
Участник
Зарегистрирован: 2017-05-25
Сообщений: 1,462

Re: Управление светом в салоне авто. Нужна помощь.

serg пишет:

... Просьба помочь разобраться, где я ошибся в коде.

Везде. Я вам пытался помочь разобраться но вы не слушаете. Все гении такие, им наука ни к чему, они и так все уже знают и умеют. Им нужно только помочь опечатки поисправлять! smile

renoshnik пишет:

извините, больше не буду ....

Не извиняйтесь, renoshnik, пишите сколько хотите и что хотите, это не изменит общее состояние дел.

#8 2018-10-05 01:27:46

serg
Участник
Зарегистрирован: 2018-10-03
Сообщений: 4

Re: Управление светом в салоне авто. Нужна помощь.

renoshnik пишет:

извините, больше не буду ....

Спасибо за помощь. Разобрался.

Вячеслав Азаров пишет:

Везде. Я вам пытался помочь разобраться но вы не слушаете. Все гении такие, им наука ни к чему, они и так все уже знают и умеют.
Им нужно только помочь опечатки поисправлять! smile

Не могу понять, почему такая реакция на просьбу помочь?
Зачем тогда нужен этот форум?
Где я написал, что я, как Вы говорите, "гений"?
Зачем переходить на личности...
Или Вы специалист во всех сферах жизни 80 уровня? Возник какой-то вопрос, спрашиваешь у человека, а он такой "ну ок, ты разберись сам, что ты хочешь от меня?".
Короче сплошной оффтоп... sad

#9 2018-10-05 07:39:56

Вячеслав Азаров
Участник
Зарегистрирован: 2017-05-25
Сообщений: 1,462

Re: Управление светом в салоне авто. Нужна помощь.

serg пишет:

Не могу понять, почему такая реакция на просьбу помочь?
Зачем тогда нужен этот форум?
Где я написал, что я, как Вы говорите, "гений"?
Зачем переходить на личности...

Извините если я вас обидел, я не хотел, просто накипело. Форум, с латыни, это место где заключают договора, сделки и т.п. А не оказывают бесплатную помощь по выполнению работ. Подсказать это одно, но выполнять отладку или переделку ваших программ - это уже совсем другое. Для этого сушествует отдельный раздел: https://forum.arduino.ua/viewtopic.php?id=1069 .

#10 2018-10-06 22:17:38

Selen
Участник
Зарегистрирован: 2017-01-02
Сообщений: 72

Re: Управление светом в салоне авто. Нужна помощь.

еще может возникнуть проблема с помехами в машине. Сталкивался с проблемой когда делал автозапуск , когда крутил стартер ардуино зависала намертво.

Быстрое сообщение

Введите сообщение и нажмите Отправить

Подвал раздела