здравствуйте, помогите пожалуйста в оптимизации и перевода кода на "человеческий" язык
имеем в наличии ардуино Nano, блок из 4х реле и оптический шлицевой датчик.
принцип таков; при нажатии на кнопку включаем 1 реле,затем включаем 2 реле, через время выключаем 2 реле , включаем 3 реле и через время выключаем 3 реле и выключаем 1 реле,
в общем в период работы 1 реле , реле 2 и 3 успевают по разу открыться и закрыться (через установленные интервалы (delay))
это работает, все ок, но еще надо бы чтобы в течение всей этой суеты непрерывно опрашивался пин с оптодатчика, и при изменении сигнала срабатывала реле4
независимо от стадии выполнения первого условия , так сказать параллельно,
в видео уроке где то видел, чтобы не опрашивать пин вручную, там функция что ли какая то создается...
спасибо, извиняюсь за "delay",
имеем в наличии ардуино Nano, блок из 4х реле и оптический шлицевой датчик.
принцип таков; при нажатии на кнопку включаем 1 реле,затем включаем 2 реле, через время выключаем 2 реле , включаем 3 реле и через время выключаем 3 реле и выключаем 1 реле,
в общем в период работы 1 реле , реле 2 и 3 успевают по разу открыться и закрыться (через установленные интервалы (delay))
это работает, все ок, но еще надо бы чтобы в течение всей этой суеты непрерывно опрашивался пин с оптодатчика, и при изменении сигнала срабатывала реле4
независимо от стадии выполнения первого условия , так сказать параллельно,
в видео уроке где то видел, чтобы не опрашивать пин вручную, там функция что ли какая то создается...
спасибо, извиняюсь за "delay",
C++:
void setup() {
pinMode(5, INPUT_PULLUP); //KNOPKA
pinMode(11,OUTPUT );// реле 1
pinMode(10,OUTPUT); // реле 2
pinMode(9, OUTPUT); // реле 3
pinMode(8, INPUT_PULLUP); //оптический датчик ((HOLL))
pinMode(12,OUTPUT); // реле 4
digitalWrite(11,1); // задаем уровень сигнала
digitalWrite(10,1); // --||--
digitalWrite(9, 1); // --||--
digitalWrite(12,1); // --||--
}
void loop() {
boolean b1 = !digitalRead(5);
boolean b2 = !digitalRead(8);
if(b1==1) { //если кнопка нажата
digitalWrite(11,0); // вкл реле 1
delay (25);
digitalWrite(10,0); //вкл реле 2
delay(25);
digitalWrite(10,1); //выкл реле 2
delay(10);
digitalWrite(9,0); //вкл реле 3
delay(25);
digitalWrite(9,1); //выкл реле 3
delay(25);
digitalWrite(11,1); // выкл реле 1
}
if (b2 ==1){ //если сигнал с оптики приходит, || как эту часть кода запустить
digitalWrite(12,1); // то включаем реле 4 || на проверку
delay(22); // || независимо и непрерывно
digitalWrite(12,0); //и выключаем реле 4 || ????
}}
Изменено: