Помогите начинающему допилить скетч

Нет ответов
vik56
Offline
Зарегистрирован: 29.12.2016

Здравствуйте, хочу применить nano для управления планшетом в авто, нашел готовый скетч на форуме PCCAR, переделал, что мог под себя, осталось сделать управление кнопкой питания планшета. Требуется, при появлении сигнала ACC высокого уровня на входе 2 , на цифровом выходе 9 с задержкой 10с появлялся высокий уровень на 3с и опять устанавливался низкий уровень, а при пропадании ACC на выходе 9 появлялся высокий уровень без задержки на 0,8с. Не пинайте начинающего, только второй день воюю с ардуиной.

////////Библиотеки////////
#include <Bounce.h>         //устраняет дребезг кнопок
#include <Timer.h>          //Таймер 

////////Входы////////

int ACC = 2;           //Вход сигнала ACC
int SWITCH = 3;

////////END Входы////////

////////Выходы////////

int POWER = 8;             // Включение планшета
int USB = 10;              // Включение USB хаба и OTG
int ON = 9
int ACC_OUT = 11;

////////END Выходы////////

//Убираем дребезг
Bounce ACCButton = Bounce(ACC, 50);         //Убираем дребезг сигнала ACC
Bounce SWITCHButton = Bounce(SWITCH, 50);   //Убираем дребезг сигнала SWITCH

////////Переменные////////
int delayacc_out = 3000;            //Задержка отключения сигнала ACC_OUT
int delayPowerOnUSB = 15000;        //Задержка включение USB (ms)
int delayPowerOn = 300;             //Задержка включения девайса
int delaydispOff = 1;            //Задержка выключения девайса (min)
long delayPowerOffUSB = 2;          //Задержка выключения USB (min)
boolean powerOn = LOW;              //Девайс вкл/выкл
boolean pPowerOff = LOW;            //Зажигание выключено, запущен таймер отключения

////////Таймеры////////
Timer timer;
int powerOnTimer;                 //Таймер включения
int powerOffTimer;                //Таймер выключения
int dispOffTimer;                 //Таймер выключения дисплея
int usbOffTimer;                  //Таймер выключения переферии
int usbOnTimer;                   //Таймер включения переферии
int acc_outoffTimer;
void setup()
{
  pinMode(ACC, INPUT);
  pinMode(SWITCH, INPUT);
  pinMode(ACC_OUT, OUTPUT);
  //digitalWrite(ACC, HIGH);        // подключить подтягивающий резистор
  digitalWrite(SWITCH, HIGH);       // подключить подтягивающий резистор
}


void loop()
{
  SWITCH_Control();
  ACC_Control();
  timer.update();
}

void SWITCH_Control()
{
  if ( SWITCHButton.update() )
  {
    if ( SWITCHButton.read() == LOW)
    {
      digitalWrite(ACC_OUT, HIGH);

    }
    else
    {
      acc_outoffTimer = timer.after(delayacc_out, doAcc_outOff);
      //digitalWrite(ACC_OUT, HIGH);
    }
  }
}
void doAcc_outOff()
{
  digitalWrite(ACC_OUT, LOW);
}


//Вкл/Выкл планшет при включении/выключении зажигания
//При выключении задержка 3 секунды
void ACC_Control()
{
  if ( ACCButton.update() )
  {
    if ( ACCButton.read() == HIGH)
    {
      if (boolean(powerOn) == LOW)
      {
        doPowerOn();
      }
      else
      {
        pPowerOff = LOW;
        timer.stop(dispOffTimer); //Обнуляем таймер если снова включили зажигание
      }
    }
    if ( ACCButton.read() == LOW)
    {
      if (boolean(powerOn) == HIGH)
      {
        doPowerOff(1);
        pPowerOff = HIGH;
      }
    }
  }
}

//Включаем девайс
void doPowerOn()
{
  timer.stop(usbOffTimer);
  powerOn = HIGH;
  powerOnTimer = timer.after(delayPowerOn, doPeripheralsOn1);
  digitalWrite(POWER, HIGH); // включаем девайс
  usbOnTimer = timer.after(delayPowerOnUSB, doPeripheralsOn);
}

void doPeripheralsOn()
{
  // digitalWrite(POWER, HIGH);
  digitalWrite(USB, HIGH); // включаем usbPower
}

void doPeripheralsOn1()
{
  digitalWrite(POWER, HIGH);
}

//Выключаем девайс
void doPowerOff(boolean arg)
{
  timer.stop(powerOnTimer);
  if (arg == 1) {
    dispOffTimer = timer.after(delaydispOff * 60000, doDispOff);
  }
  else {
    doDispOff();
  }
}

void doDispOff()
{
  pPowerOff = LOW;
  powerOn = LOW;
  digitalWrite(POWER, LOW); // выключаем девайс
  usbOffTimer = timer.after(delayPowerOffUSB * 60000, doPeripheralsOff);
}

void doPeripheralsOff()
{
  digitalWrite(USB, LOW); // выключаем usbPower
}