Показать сообщение отдельно
Старый 23.03.2016, 20:10   #21
RyuuKiiroi
Старший Пользователь
 
Регистрация: 15.08.2015
Возраст: 34
Город: Жуковский
Регион: 50, 90, 150
Машина: Emgrand X7
Сообщений: 105
RyuuKiiroi is on a distinguished road
По умолчанию

Подскажет кто как правильно заставить работать millis ?
Не получается сделать отсчет для каждого действия, время идет общее.
Или просто отсчет идет, а ничего не срабатывает.

Код:
int ACC = A4; //сигнал АСС
int Nex = 2; //несус
int Hub = 3; //хаб
int Per = 5; //периферия
float Vout = 0.00;
float Vbat = 0.00;
float R1 = 24000.0; // сопротивление R8 (24кОм)
float R2 = 680.0; // сопротивление R7 (680Ом)
int ACCState = 0;
int State = 0;
unsigned long time=0;
unsigned long looptime;

void setup() {               
  
  pinMode(ACC,INPUT);
  pinMode(Per,OUTPUT);  
  pinMode(Nex,OUTPUT); 
  pinMode(Hub,OUTPUT);
  
}
 
void loop() {
  
  
  
  //Serial.print("analogRead(ACC): ");
  //Serial.println(analogRead(ACC));
  Serial.print("Time: ");
  Serial.println(time);
  Serial.print("Vbat: ");
  Serial.println(Vbat);
  
  // считывание аналогового значения
   ACCState = analogRead(ACC);
   Vout = (ACCState * 5.0) / 1024.0;
   Vbat = Vout / (R2/(R1+R2));
   if (Vbat<0.09)
     {
       Vbat=0.00;// обнуляем нежелательное значение
     }
  
  if (Vbat >= 12.00)
  {
  time = millis();
  }
  
if (millis() - time >= 200 && Vbat >= 12.00)//если напряжение больше "Х"
   {
   digitalWrite(Per,HIGH);//подаем питание на управляющий пин
   time = 0;
   State = 1;
   }
  
  if (State == 1)
  {
  time = millis();
    State = 2;
  }
  
if (millis() - time >= 200 && State == 2)
   {
   digitalWrite(Nex, HIGH);
   time = 0;
   State = 3;
   } 
  
  if (State == 3)
  {
  time = millis();
    State = 4;
  }
  
  if (Vbat <= 12.00)//если напряжение меньше "Х"
  {
  		if (millis() - time >= 200)
          digitalWrite(Per,LOW);//обестачиваем схему
          digitalWrite(Nex,LOW);
  }
}
__________________
Nexus 7 2013 Geely Emgrand X7
RyuuKiiroi вне форума   Ответить с цитированием