Подскажет кто как правильно заставить работать 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);
}
}