Показать сообщение отдельно
Старый 01.07.2015, 18:43   #495
Chubaka885
Старший Пользователь
 
Регистрация: 08.10.2013
Возраст: 43
Регион: 56
Машина: Toyota Corolla e150
Сообщений: 325
Chubaka885 is a jewel in the roughChubaka885 is a jewel in the roughChubaka885 is a jewel in the roughChubaka885 is a jewel in the rough
По умолчанию

Цитата:
Сообщение от 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);  
 }  
} 
__________________
Nexus 7 2012 (grouper), Cyanogenmod 11 - M10
фото установки Nexus 7 2012 & Toyota Corolla
Chubaka885 вне форума   Ответить с цитированием