Показать сообщение отдельно
Старый 22.07.2016, 19:36   #216
Alekssandr
Старший Пользователь
 
Регистрация: 11.08.2013
Возраст: 35
Регион: 86
Сообщений: 445
Alekssandr is a jewel in the roughAlekssandr is a jewel in the roughAlekssandr is a jewel in the rough
По умолчанию

Всё верно, питанием управляет attiny13, в прнципе туда закинул прошивку и всё, не надо там ничего менять, прошивка там простецкая. Если уж очень нужно то можно подредактировать, написал для неё прошивку в среде ардуино ide, закачивается по SPI. Питание у тиньки полностью свое (автономное), построенное на lm7805, потребляет всего 17мА, частота работы 1.2Мгц от внутреннего генератора.

Пока для тестов закинул такой скетч в attiny13.
Скетч использует 792 байт (77%) памяти устройства. Всего доступно 1*024 байт.

PHP код:
int acc 0//детектор включения зажигания или ACC
int remote 1//+12в для включения усилителей
int tablet 2// питание планшета
int processor 3//питание аудиопроцессора tda7719
int usbhub 4//питание усб хаба и usb звуковой карты
boolean accoffsensor;
boolean tabletoffsensor;
uint32_t accoffmillis 0;        //переменная таймера

void setup() {

pinMode (accINPUT);
  
pinMode (remote,OUTPUT);
    
pinMode (tablet,OUTPUT);
      
pinMode (processor,OUTPUT);
        
pinMode (usbhub,OUTPUT);

}

void loop() {

  
//Если зажигание включено
  
if (acc == HIGH)
  {
    
accon(); //выполняем команду void accon
    
accoffsensor 1;
    
tabletoffsensor 1;
    
accoffmillis=millis();
  }

  
//Если зажигание отключено, ждем 5 сек, если отключение длиться больше 5 сек отключаем перефирию. 
  
if (acc == LOW && accoffsensor == && accoffmillis && millis()-accoffmillis 5000)
  
//проверяем что зажигание отключено acc == LOW
  //проверяем что питание у нас не отключено accoffsensor == 1
  //считаем сколько времени прошло accoffmillis && millis()-accoffmillis > 5000
  
  
{
  
accoff(); //выполняем команду void accoff
 
  
}

   
//Если зажигание не включалось 50 часов, отключаем питание планшета.
  
if (acc == LOW && tabletoffsensor == && accoffmillis && millis()-accoffmillis 180000000)
  
//проверяем что зажигание отключено acc == LOW
  //проверяем что питание планшета не отключено tabletoffsensor == 1
  //считаем сколько времени прошло accoffmillis && millis()-accoffmillis > 180000000

  
{
   
void tabletoff(); //отключаем питание планшета.
 
  
}
  
  
}

void accon(){


digitalWrite(tabletHIGH); //включаем питание планшета
delay(1000);                //ждем 1 сек
digitalWrite(processorHIGH); //включаем питание аудиопроцессора
delay(2000);                //ждем 2 сек
digitalWrite(usbhubHIGH); //включаем питание USB хаба
delay(5000);                //ждем 5 сек
digitalWrite(remoteHIGH); //включаем усилители

  
}

void accoff(){
  
delay (1000);                //ждем 1 сек
digitalWrite(remoteLOW);   //отключаем усилители
delay (2000);                //ждем 2 сек
digitalWrite(processorLOW);// отключаем аудиопроцессор
delay (2000);                //ждем 2 сек
digitalWrite(usbhubLOW);   //отключаем usb хаб
accoffsensor 0;            //говорим программе что всё отключено
}

void tabletoff() {

  
digitalWrite(tabletLOW); //отключаем питание планшета
  
tabletoffsensor 0;       //говорим программе что планшет отключен


Последний раз редактировалось Alekssandr; 22.07.2016 в 20:14.
Alekssandr вне форума   Ответить с цитированием