опять тоже самое открыть не могу
опять тоже самое открыть не могу
ну типа да от того реле 20 амперного запитать более мощьное реле около 40 ампер где то я думаю,сам прикинь посчитай всю зимнюю нагрузку не мало будет точно ,а если зимнюю ночную вообще жесть .
я тут в коде покалдовал и добавил отсрочку запуска пока там лампочки все проморгают в моем случае пока свечи прогреются :
Так точно .А что за авто?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);
}
Последний раз редактировалось maestro777; 09.01.2014 в 19:22.
ВАЗ 2112
Кстате вот видео парня который делал этот скетчь
Последний раз редактировалось Chip; 09.01.2014 в 22:06.
клевое видео молодец парень на 2112 в схеме есть реле асс почти на все приборы так что 30 амперного реле вполне хватит так что не парься с доп реле.
на ВАЗ в природе не существует режима АСС. Т.е. можно сразу подключить к модулю??
Последний раз редактировалось Сергей174; 09.01.2014 в 20:01.
нее подожди как нет ?
Там только два положения ключа
1. Выключено
2. Зажигание
там есть контакт определения вставлен ли ключ в замок
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)