PHP код:
	
byte ACCPin = 11; //Выход на транзистор переферии ACC
byte EnginePin = 10; //Выход на транзистор зажигания
byte StarterPin = 9; //Выход на транзистор стартера
byte ButtonPin = 8; //Вход + с кнопки <----------------------------- Стягивающий резистор на "-"
byte StopPin = 12; //Вход с тормоза <----------------------------- Стягивающий резистор на "-"
byte ImmoPin = 7; //Вход с иммо <----------------------------- Подтягивающий резистор на "+"
byte TahoPin = 6; //Вход с тахометра <----------------------------- Стягивающий резистор на "-"
byte WordsPin = 5; //Выход на глазок 1 
byte YellowGlazokPin = 4; //Выход на глазок 2 
byte GreenGlazokPin = 3; //Выход на глазок 3
byte statusEngine = 0;
//byte rotate = 0;
unsigned int rotate=0;
boolean stateACC = false;
unsigned long lastPress = 0;
unsigned long lastImmo = 0;
unsigned long splitTime = 0;
unsigned long time =0;
byte stat = 0;
void setup()
{
pinMode(EnginePin, OUTPUT);
pinMode(StarterPin, OUTPUT);
pinMode(ACCPin, OUTPUT);
pinMode(WordsPin, OUTPUT);
pinMode(YellowGlazokPin, OUTPUT);
pinMode(GreenGlazokPin, OUTPUT);
//time = 0;
lastImmo=millis();
lastPress=millis();
Serial.begin(9600);
Serial.println("Arduino is started");
}
// 0 - Все выключенно
// 1 - Включено только зажигание
// 2 - Крутиться стартер, ждем оборотов
// 3 - Двигатель работает, все включено
// 4 - Неудачная попытка запуска, включено только зажигание
// 5 - Двигатель заглушен, АСС пока еще работает
void loop()
{
if (stat != statusEngine) {stat = statusEngine;
Serial.println(stat);
}
unsigned long newTime = millis() - lastPress;
unsigned int button = pressButton();
if (button != 0) Serial.println(button);
lastImmoTest();
switch (statusEngine) 
{
case 0:
digitalWrite(GreenGlazokPin, LOW);
if (stateACC) digitalWrite(YellowGlazokPin, HIGH); 
else digitalWrite(YellowGlazokPin, LOW);
if (millis() - lastImmo > 10000) digitalWrite(WordsPin, HIGH); 
else digitalWrite(WordsPin, LOW);
if (button == 1500 && stateACC)
{
StopAll();
}
else if (button == 1500 && !stateACC) StartACC();
else if (button != 0 && millis() - lastImmo > 2000 && newTime > 500) {
StartEngine();
statusEngine=1;
}
break;
//----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- 
case 1:
if (digitalRead(ImmoPin) == LOW) StopAll();
digitalWrite(WordsPin, HIGH); 
if (stateACC) digitalWrite(YellowGlazokPin, HIGH); else digitalWrite(YellowGlazokPin, LOW);
if (millis() - lastImmo > 2000 && StopIsPress() && newTime < 900) 
{
digitalWrite(GreenGlazokPin, HIGH); 
digitalWrite(WordsPin, HIGH);
}
 else
{
digitalWrite(GreenGlazokPin,!digitalRead(GreenGlazokPin));
delay(100);
}
 
if (button == 1500) {
StopAll();
}
else if (button != 0 && newTime > 500) {
if (!stateACC) 
StopAll();
else
{StopEngine();
 statusEngine=5;
 }
 }
 else if (newTime > 800 && newTime < 900 && StopIsPress())
 {
   delay(10000);// отсрочка запуска :)
 StartStarter();
 statusEngine=2;
 }
 break;
 
 
 //----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
 case 2:
 digitalWrite(WordsPin, HIGH); 
 digitalWrite(GreenGlazokPin, HIGH); 
 if (stateACC) digitalWrite(YellowGlazokPin, HIGH);
 if (digitalRead(TahoPin) == HIGH) {
 rotate++;
 while (digitalRead(TahoPin) == HIGH) if (digitalRead(ImmoPin) == LOW) {StopAll(); break;}
 }
 if (rotate>=2) 
 {
 unsigned int rpm = (rotate*60000*10000/2)/(micros()-splitTime);
 Serial.print("rpm: ");
 Serial.println(rpm);
 rotate=0;
 splitTime=micros();
 if (rpm>1000) { //<-------ВЕРНУТЬ СЮДА ТЫЩУ!!!! <-------
 StopStarter();
 StartACC();
 statusEngine=3;
 Serial.println("Engine is WORK!!");
 break;
 }
 }
 if (button != 0 && newTime > 500) { 
 StopAll();
 }
 else if (newTime > 5000 || !StopIsPress()){
 StopStarter();
 statusEngine=4;
 }
 break;
 //----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
 case 3:
 digitalWrite(GreenGlazokPin, HIGH);
 digitalWrite(YellowGlazokPin, LOW);
 if (newTime > 5000) digitalWrite(WordsPin, LOW); 
 else digitalWrite(WordsPin, HIGH);
 if (button == 1500) {
 StopAll();
 }
 else if (button != 0 && newTime > 500) { 
 StopEngine();
 statusEngine=5;
 }
 break;
 
 //----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
 
 case 4:
 
 digitalWrite(WordsPin, HIGH);
 digitalWrite(GreenGlazokPin, !digitalRead(GreenGlazokPin)); delay(50);
 digitalWrite(YellowGlazokPin, LOW);
 if (button == 1500 || newTime > 10000) {
 StopAll();
 }
 else if (button != 0 && newTime > 500 && StopIsPress()) {
 StartStarter();
 statusEngine=2;
 }
 else if (button != 0 && newTime > 500 && !StopIsPress()) {
 StopAll();
 }
 break;
 //----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
 case 5:
 digitalWrite(GreenGlazokPin, LOW);
 if (stateACC) digitalWrite(YellowGlazokPin, HIGH); else digitalWrite(YellowGlazokPin, LOW);
 if (newTime > 5000) 
 {
 if (millis() - lastImmo > 5000) digitalWrite(WordsPin, HIGH); else digitalWrite(WordsPin, LOW);
 }
 else 
 digitalWrite(WordsPin, HIGH);
 if (button == 1500) {
 StopAll();
 }
 else if (millis() - lastImmo < 2000) StopAll();
 else if (button != 0 && newTime > 500) {
 StartEngine();
 statusEngine=1;
 }
 lastImmoTest();
 break;
 //----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
 }
 }
void StartEngine(){
digitalWrite(EnginePin, HIGH);
Serial.println("Engine is ON");
lastPress=millis();
 }
 void StopEngine(){
 digitalWrite(EnginePin, LOW);
 Serial.println("Engine is OFF");
 lastPress=millis();
 }
 void StopAll(){
 digitalWrite(EnginePin, LOW);
 digitalWrite(StarterPin, LOW);
 digitalWrite(ACCPin, LOW);
 Serial.println("All OFF"); 
 while (!digitalRead(ButtonPin)){}
 stateACC=false;
 lastPress=millis();
 statusEngine=0;
 lastPress=millis(); 
 }
 
 void StartStarter(){
 digitalWrite(StarterPin, HIGH);
 Serial.println("Starter START!");
 splitTime=micros();
 lastPress=millis();
 }
 void StopStarter(){
 digitalWrite(StarterPin, LOW);
 Serial.println("Starter if OFF!");
 lastPress=millis();
 }
 
 void StartACC(){
 digitalWrite(ACCPin, HIGH);
 Serial.println("Starter ACC!");
 stateACC=true;
 lastPress=millis();
 }
 void lastImmoTest(){
 if (digitalRead(ImmoPin) == LOW) { //<----------------------------- Поменял на LOW
 lastImmo=millis();
 Serial.println("Immo+");
 }
 }
 
 unsigned int pressButton(){
 unsigned long newTime = millis();
 boolean currentPosition = digitalRead(ButtonPin);
 if (currentPosition == HIGH){ 
 delay(50);
 currentPosition=digitalRead(ButtonPin); 
 }
 while (!currentPosition) {
 currentPosition=digitalRead(ButtonPin);
 if (millis() - newTime > 1000) return 1500;
 }
 newTime=millis() - newTime;
 if (newTime < 60) newTime = 0;
 return newTime; 
 }
 boolean StopIsPress(){
 return digitalRead(StopPin); 
 } 
 Так точно .А что за авто?