Заголовок темы должен отражать содержимое. Переформулируй или тема будет удалена.
Всем, доброго дня.
На автомобиле накрылся блок управления раздаточной коробкой. Аппаратно РКПП управляется обычным электродвигателем ( не шаговым), который через редуктор вращает шток в одну и другую сторону . Внутри имеются контактны с использованием которых можно знать в каком положении вилка и соответственно что включено.
Управление : нефиксируемые кнопки 4WD и LOW (пониженная передача).
С алгоритмом , наверное я понял что надо. Аппаратно реверс двигателя с использованием реле - управление через транзистор, включение контрольных ламп через транзистор не вызывает проблем.
Не могу решить задачу: нажатие кнопки 1 при наличии "1" на входах 2 3 5 ( по логике "И"), появляется "1" на вых 7 и эта единица сохраняется до появления "1" на входах 3 4 (по логике "И"). И вот таких 6 различных вариантов условий. Надеюсь немного понятно по скетчу , если его можно так назвать
Плата MH-Tiny ( как Nano), дрова поставил, програмируется нормально, простые моргалки и т.д. проверил работает.
Заранее спасибо.
На автомобиле накрылся блок управления раздаточной коробкой. Аппаратно РКПП управляется обычным электродвигателем ( не шаговым), который через редуктор вращает шток в одну и другую сторону . Внутри имеются контактны с использованием которых можно знать в каком положении вилка и соответственно что включено.
Управление : нефиксируемые кнопки 4WD и LOW (пониженная передача).
С алгоритмом , наверное я понял что надо. Аппаратно реверс двигателя с использованием реле - управление через транзистор, включение контрольных ламп через транзистор не вызывает проблем.
Не могу решить задачу: нажатие кнопки 1 при наличии "1" на входах 2 3 5 ( по логике "И"), появляется "1" на вых 7 и эта единица сохраняется до появления "1" на входах 3 4 (по логике "И"). И вот таких 6 различных вариантов условий. Надеюсь немного понятно по скетчу , если его можно так назвать

Плата MH-Tiny ( как Nano), дрова поставил, програмируется нормально, простые моргалки и т.д. проверил работает.
Заранее спасибо.
C++:
// 14 вход с кнопки 4WD - кнопка 1
// 13 вход с кнопки LOW -кнопка 2
// 2 вход 2 оранжево-белый провод от РКПП
//3 вход 3 коричнево-белый провод от РКПП
//4 вход 4 белый провод от РКПП
//5 вход 5 пурпурный от РКПП
//7 выход на реле двигателя для вращения вперед
//8 выход на реле двигателя для вращения назад
//10 выход на лампу 4WD серый провод
//11 выход на лампу LOW коричнево-белый провод
//25 выход на пищалку провод не штатный
void setup() {
Serial.begin(9600);
pinMode(7, OUTPUT); //контакт 7 назначаем ВЫХОДОМ
pinMode(8, OUTPUT); //контакт 8 назначаем ВЫХОДОМ
pinMode(10, OUTPUT); //контакт 10 назначаем ВЫХОДОМ
pinMode(11, OUTPUT); //контакт 11 назначаем ВЫХОДОМ
pinMode(25, OUTPUT); //контакт 25 назначаем ВЫХОДОМ
pinMode(14, INPUT_PULLUP); //контакт 14 вход кнопки с неявным нулем
pinMode(13, INPUT_PULLUP); //контакт 13 вход кнопки с неявным нулем
digitalWrite(7, LOW); //устанавливаем сигнал 0 на выход ВПЕРЕД
digitalWrite(8, LOW); //устанавливаем сигнал 0 на выход Назад
}
void loop() {
boolean button1 = !digitalRead(14);
boolean button2 = !digitalRead(13);
// если кнопка 1 была нажата
if (button1 == 1 && digitalRead(2) && digitalRead(3) && digitalRead(5)) // переход от 2 WD к 4 WD если есть сигнал ВХоды 2 3 5
do {
digitalWrite(7, HIGH);//включается двигатель вперед
}
while (digitalRead(3) && digitalRead(4)) ;// выполняем проверку сигналов контактных колец до сигналов на 3 и 4
digitalWrite(7, LOW);// остановка двигателя
if (button1 == 1 && digitalRead(3) && digitalRead(4)) // переход от 4 WD к 2 WD если есть сигнал ВХоды 3 4
do {
digitalWrite(8, HIGH);//включается двигатель назад
}
while (digitalRead(2) && digitalRead(3) && digitalRead(5)); // выполняем проверку сигналов контактных колец до сигналов на 2 3 5
digitalWrite(8, LOW);// остановка двигателя
if ( button1 == 1 && digitalRead(4) && digitalRead(5)) // переход от 4 WD LOW к 2 WD если есть сигнал ВХоды 4 5
do {
digitalWrite(8, HIGH);//включается двигатель назад
}
while (digitalRead(2) && digitalRead(3) && digitalRead(5)) ;// выполняем проверку сигналов контактных колец до сигналов на 2 3 5
digitalWrite(8, LOW);// остановка двигателя
// если кнопка 2 была нажата
if (button2 == 1 && digitalRead(2) && digitalRead(3) && digitalRead(5)) // переход от 2 WD к 4 WD LOW если есть сигнал ВХоды 2 3 5
do {
digitalWrite(7, HIGH);//включается двигатель вперед
}
while (digitalRead(4) && digitalRead(5)); // выполняем проверку сигналов контактных колец до сигналов на 4 и 5
digitalWrite(7, LOW);// остановка двигателя
if (button2 == 1 && digitalRead(3) && digitalRead(4)) // переход от 4 WD к 4 WD LOW если есть сигнал ВХоды 3 4
do {
digitalWrite(7, HIGH);//включается двигатель вперед
}
while (digitalRead(4) && digitalRead(5)); // выполняем проверку сигналов контактных колец до сигналов на 4 и 5
digitalWrite(7, LOW);// остановка двигателя
if (button2 == 1 && digitalRead(4) && digitalRead(5)) // переход от 4 WD LOW к 4 WD если есть сигнал ВХоды 4 5
do {
digitalWrite(8, HIGH);//включается двигатель назад
}
while (digitalRead(3) && digitalRead(4)); // выполняем проверку сигналов контактных колец до сигналов на 3 и 4
digitalWrite(8, LOW); // остановка двигателя
}