Цитата:
Сообщение от nikopol70
бибилотеки менял, залилось без проблем, прежде чем заливать изучил и отштудировал тему 
|
Ступил я немного. Не успевает он наверное паузу принять. Вот так попробуй.
PHP код:
#include <avr/sleep.h>
#include <avr/power.h>
int ACCPin = 2; // Пин АСС
int sleepStatus = 0; // Переменная для хранения статуса (спим, проснулись) - не используется в коде
#define pinKIS1 7 // питание HUB KIS
#define pinIsoAmp 6 // питание ISOAmp
#define relePinTablet 10 // OTG + датчик холла
#define relePinAmp 9 // remote Усилителя, Антены
#define pinRearCam 5 // питание камеры заднего хода
#define ONKIS 100 // время включения KIS, isoAmp
#define ONTablet 2000 // время включения планшета
#define ONAmp 4000 // время включения Усилителя, Антены RemoteAmp
#define OFFKIS 10000 // время выключения KIS
#define OFFTablet 5000 // время выключения планшета
#define OFFAmp 4000 // время выключения Усилителя, Антены
unsigned long duration, millisold, off = 0;
boolean stateACC, relestate1, relestate2, relestate3 = 0;
int analogPin=A0; //пин для резистивных кнопок
int data;
int data1 = 0;
int flag = 0;
unsigned long eventTime = 0;
void wakeUpNow() // Прерывание сработает после пробуждения
{
if (sleepStatus) // Если мы спали,
{
sleep_disable(); // то первое, что нужно сделать после просыпания - выключить спящий режим
sleepStatus = 0; // В переменную заносим статус бодрствования
detachInterrupt(1); // Выключаем прерывание - при нормальном режиме wakeUpNow() не будет вызываться
}
}
void setup()
{
pinMode(ACCPin, INPUT);
attachInterrupt(1, wakeUpNow, FALLING); // Используем прерывание 1 (pin 2) для выполнения функции wakeUpNow
pinMode(pinKIS1, OUTPUT);
pinMode(pinIsoAmp, OUTPUT);
pinMode(relePinTablet, OUTPUT);
pinMode(relePinAmp, OUTPUT);
pinMode(pinRearCam, OUTPUT);
Serial.begin(9600);
}
void sleepNow() // Функция увода ардуины в спячку.
{
set_sleep_mode(SLEEP_MODE_PWR_DOWN); // Здесь устанавливается режим сна
sleep_enable(); // Включаем sleep-бит в регистре mcucr. Теперь возможен слип
attachInterrupt(1, wakeUpNow, FALLING); // Используем прерывание 1 (pin 2) для выполнения функции wakeUpNow при появлении низкого уровня на пине 2
sleepStatus = 1; // В переменную заносим статус сна
sleep_mode(); // Здесь устройство перейдет в режим сна!!!
//-------------------------ПОСЛЕ ПРОСЫПАНИЯ ВЫПОЛНЕНИЕ КОДА ПРОДОЛЖИТСЯ ОТСЮДА!!!--------------------------//
}
void loop()
{
Power();
Knopki();
delay(5);
}
void Power()
{
if (!digitalRead(ACCPin)&&stateACC)
{
stateACC=0;
duration = millis();
}
if (digitalRead(ACCPin)&&!stateACC)
{
stateACC=1;
off = millis();
}
if(!digitalRead(ACCPin) && !stateACC && millis ()-duration > ONKIS)
{
digitalWrite(pinKIS1, HIGH);
digitalWrite(pinIsoAmp, HIGH);
relestate1 = 1;
millisold = millis();
}
if(!digitalRead(ACCPin) && !stateACC && millis ()-duration > ONTablet)
{
digitalWrite(relePinTablet, HIGH);
relestate2 = 1;
millisold = millis();
}
if(!digitalRead(ACCPin) && !stateACC && millis ()-duration > ONAmp)
{
digitalWrite(relePinAmp, HIGH);
relestate3 = 1;
millisold = millis();
}
if(digitalRead(ACCPin) && stateACC && millis () -off> OFFKIS)
{
digitalWrite(pinKIS1, LOW);
digitalWrite(pinIsoAmp, LOW);
digitalWrite(pinRearCam, LOW);
relestate1 = 0;
millisold = millis();
Serial.end();
delay(100);
sleepNow();
}
if(digitalRead(ACCPin) && stateACC && millis ()-off > OFFTablet)
{
digitalWrite(relePinTablet, LOW);
relestate2 = 0;
millisold = millis();
}
if(digitalRead(ACCPin) && stateACC && millis ()-off > OFFAmp)
{
Remote.pause();// нажимаем пузу!
Remote.clear();
digitalWrite(relePinAmp, LOW);
relestate3 = 0;
millisold = millis();
}
}
void Knopki()
{
data=analogRead(analogPin);
if(data>=950 && data1 != 0 && flag <= 1)
{
Serial.print("<release:");
Serial.print(data1);
Serial.print(">");
data1 = 0;
flag = 0;
delay(10);
}
if(data>=950)
{
eventTime = millis();
}
if(data<=949 && flag != 1 && millis()-eventTime>=50 && millis()-eventTime<=800)
{
flag = 2;
if(millis()-eventTime <= 60) data1 = data;
}
if(data>=950 && flag == 2)
{
Serial.print("<click:");
Serial.print(data1);
Serial.print(">");
flag = 0;
delay(10);
}
if(data<=949 && flag == 2 && millis()-eventTime>800)
{
Serial.print("<hold:");
Serial.print(data);
Serial.print(">");
data1 = data;
flag = 1;
delay(10);
}
}