#1 Re: Програмування Arduino » Управление светом в салоне авто. Нужна помощь. » 2018-10-05 01:27:46

renoshnik пише:

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

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

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

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

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

#2 Re: Програмування Arduino » Управление светом в салоне авто. Нужна помощь. » 2018-10-03 23:56:49

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

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

#3 Re: Програмування Arduino » Управление светом в салоне авто. Нужна помощь. » 2018-10-03 19:36:46

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

#4 Програмування Arduino » Управление светом в салоне авто. Нужна помощь. » 2018-10-03 16:37:58

serg
відповідей: 9

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

Прошу помощи в реализации данного проекта.

Підвал форуму