прерывание функции

Arduinchlk
Arduinchlk аватар
Offline
Зарегистрирован: 15.03.2021

привет знатокам

кто подскажет как прервать экстренно if(led1On) если (digitalRead(button2Pin) == LOW ?

if (digitalRead(button2Pin) == HIGH && lastButton == LOW){
    timer = true;
    led2OnTime = millis();
    lastButton = HIGH;
    ledOff = true;
  }

  if(timer)
  if (millis() - led2OnTime >= 1000){
      digitalWrite(led2Pin, HIGH);
      digitalWrite(led1Pin, LOW);
      led2On = true;
      led1On = true;
      led2OnTime = millis();
      timer  = false;  
  }

  if(led2On) 
    if(millis() - led2OnTime >= 1200) {
      digitalWrite(led2Pin, LOW);
      led2On = false;
    }
  if(led1On)
    if(millis() - led2OnTime >= 200) {
      digitalWrite(led1Pin, HIGH);
      if(millis() - led2OnTime >= 5000) {  
      digitalWrite(led1Pin, LOW);
      led1On = false;
      lastButton = LOW;
        
//      ledOff = true;
    }
    }

 

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

return или break .

Точнее спросите у того, кто запретил Вам вставлять полный код и обкорнал его перед вставкой.

Arduinchlk
Arduinchlk аватар
Offline
Зарегистрирован: 15.03.2021
const int button2Pin = 9;
const int led2Pin = 8;
const int led1Pin = 7;
#define sensor 5

  
unsigned long led2OnTime;
bool led2On;
bool led1On;
bool ledOff;
bool timer;
bool lastButton;
bool lastButton2;
int status_led1Pin;

void setup() {
  
  pinMode(led2Pin, OUTPUT);
  pinMode(led1Pin, OUTPUT);
  pinMode(sensor, INPUT);

  pinMode(button2Pin, INPUT);
  led2On = false;
  led1On = false;
  ledOff = false;
  timer = false;
  lastButton = LOW;
  lastButton2 = LOW;
}
void loop() {
if (digitalRead(button2Pin) == HIGH && lastButton == LOW){
    timer = true;
    led2OnTime = millis();
    lastButton = HIGH;
    ledOff = true;
  }

  if(timer)
  if (millis() - led2OnTime >= 1000){
      digitalWrite(led2Pin, HIGH);
      digitalWrite(led1Pin, LOW);
      led2On = true;
      led1On = true;
      led2OnTime = millis();
      timer  = false;  
  }

  if(led2On) 
    if(millis() - led2OnTime >= 1200) {
      digitalWrite(led2Pin, LOW);
      led2On = false;
    }
  if(led1On)
    if(millis() - led2OnTime >= 200) {
      digitalWrite(led1Pin, HIGH);
      if(millis() - led2OnTime >= 5000) {  
      digitalWrite(led1Pin, LOW);
      led1On = false;
      lastButton = LOW;
        
//      ledOff = true;
    }
    }
    
//if(ledOff)
}

 

b707
Offline
Зарегистрирован: 26.05.2017

Arduinchlk пишет:

кто подскажет как прервать экстренно if(led1On)

а зачем прерывать? приведенный код - неблокирующий, его исполнение занимает микросекунды и потом программа сама перейдет к проверке кнопки.

Добавте вначале условие, что-то типа

if (digitalRead(button2Pin) == LOW)    led1On = false;

и ничего прерывать не надо

Arduinchlk
Arduinchlk аватар
Offline
Зарегистрирован: 15.03.2021

led1On - зажигает светодиод датчика и необходимо экстренно прервать свечение если кнопка LOW. иначе устройство №2 выдаст ошибку датчика. Потому что led1On продолжает выполнение в течении 5000 миллисекунд если ее не прервать.

b707
Offline
Зарегистрирован: 26.05.2017

Arduinchlk пишет:

Потому что led1On продолжает выполнение в течении 5000 миллисекунд если ее не прервать.

Вы ошибаетесь.

Если код выше соответвует тому, что вы заливаете в контроллер, в течении этих 5 секунд у вас кнопка проверяется десятки тысяч раз. Если вы добавите ту строчку, что я написал - по условию digitalRead(button2Pin) == LOW у вас led1On  будет выключаться практически мгновенно.

Arduinchlk
Arduinchlk аватар
Offline
Зарегистрирован: 15.03.2021

пробовал добавлять условия но диод led1On уходил в цикл либо загорался после того как перевести кнопку в HIGH а потом в LOW. так и не понял где ошибка написал вам

Arduinchlk
Arduinchlk аватар
Offline
Зарегистрирован: 15.03.2021

ок проверяю. результат отпишу

b707
Offline
Зарегистрирован: 26.05.2017

Arduinchlk пишет:

пробовал добавлять условия но диод led1On уходил в цикл либо загорался после того как перевести кнопку в HIGH а потом в LOW. так и не понял где ошибка написал вам

код показывайте. как пробовали

Arduinchlk
Arduinchlk аватар
Offline
Зарегистрирован: 15.03.2021

добавил в код

if (digitalRead(button2Pin) == LOW)    led1On = false;

if (digitalRead(button2Pin) == HIGH && lastButton == LOW){
    timer = true;
    led2OnTime = millis();
    lastButton = HIGH;
    ledOff = true;
  }

теперь led1On не выполняется даже когда  button2Pin HIGH

монитор

16:14:35.054 -> led1On 0
16:14:35.054 -> button2Pin 1
16:14:35.089 -> led1On 0
16:14:35.089 -> button2Pin 1
16:14:35.089 -> led1On 0
16:14:35.123 -> button2Pin 0
16:14:35.123 -> led1On 0
 
Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

Да

b707
Offline
Зарегистрирован: 26.05.2017

Arduinchlk пишет:

добавил в код

код выкладывайте ЦЕЛИКОМ!!!
Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

я бы сделал так:

 if(led1On)
54
    if(millis() - led2OnTime >= 200) {
55
      digitalWrite(led1Pin, HIGH&&digitalRead(нужная кнопка));
56
      if(millis() - led2OnTime >= 5000) { 
57
      digitalWrite(led1Pin, LOW);
58
      led1On = false;
59
      lastButton = LOW;
60
         
61
//      ledOff = true;
62
    }

 

b707
Offline
Зарегистрирован: 26.05.2017

Alexey_Rem пишет:

я бы сделал так:

Так проверка кнопки будет вызываться только с частотой таймера в строке 54, а это не то, что хочет ТС

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

Это только направление куда смотреть а не готовое решение

Arduinchlk
Arduinchlk аватар
Offline
Зарегистрирован: 15.03.2021
const int button2Pin = 9;
const int led2Pin = 8;
const int led1Pin = 7;
#define sensor 5

  
unsigned long led2OnTime;
bool led2On;
bool led1On;
bool ledOff;
bool timer;
bool lastButton;
bool lastButton2;
int status_led1Pin;


void setup() {
  
  Serial.begin(9600);
  pinMode(led2Pin, OUTPUT);
  pinMode(led1Pin, OUTPUT);
  pinMode(sensor, INPUT);

  pinMode(button2Pin, INPUT);
  led2On = false;
  led1On = false;
  ledOff = false;
  timer = false;
  lastButton = LOW;
  lastButton2 = LOW;
  

  
}
 
void loop() {
  status_led1Pin = digitalRead(button2Pin);
  Serial.print("button2Pin ");
  Serial.println(status_led1Pin);
  Serial.print("led1On ");
  Serial.println(led1On);


if (digitalRead(button2Pin) == LOW)    led1On = false;

if (digitalRead(button2Pin) == HIGH && lastButton == LOW){
    timer = true;
    led2OnTime = millis();
    lastButton = HIGH;
    ledOff = true;
  }

  if(timer)
  if (millis() - led2OnTime >= 1000){
      digitalWrite(led2Pin, HIGH);
      digitalWrite(led1Pin, LOW);
      led2On = true;
      led1On = true;
      led2OnTime = millis();
      timer  = false;  
  }

  if(led2On) 
    if(millis() - led2OnTime >= 1200) {
      digitalWrite(led2Pin, LOW);
      led2On = false;
    }
  if(led1On)
    if(millis() - led2OnTime >= 200) {
      digitalWrite(led1Pin, HIGH);
      if(millis() - led2OnTime >= 5000) {  
      digitalWrite(led1Pin, LOW);
      led1On = false;
      lastButton = LOW;
        

    }
    }
    
}

 

Arduinchlk
Arduinchlk аватар
Offline
Зарегистрирован: 15.03.2021
const int button2Pin = 9;
const int led2Pin = 8;
const int led1Pin = 7;
#define sensor 5

  
unsigned long led2OnTime;
bool led2On;
bool led1On;
bool ledOff;
bool timer;
bool lastButton;
bool lastButton2;
int status_led1Pin;


void setup() {
  
  Serial.begin(9600);
  pinMode(led2Pin, OUTPUT);
  pinMode(led1Pin, OUTPUT);
  pinMode(sensor, INPUT);

  pinMode(button2Pin, INPUT);
  led2On = false;
  led1On = false;
  ledOff = false;
  timer = false;
  lastButton = LOW;
  lastButton2 = LOW;
  

  
}
 
void loop() {
  status_led1Pin = digitalRead(button2Pin);
  Serial.print("button2Pin ");
  Serial.println(status_led1Pin);
  Serial.print("led1On ");
  Serial.println(led1On);


//if (digitalRead(button2Pin) == LOW)    led1On = false;

if (digitalRead(button2Pin) == HIGH && lastButton == LOW){
    timer = true;
    led2OnTime = millis();
    lastButton = HIGH;
    ledOff = true;
  }

  if(timer)
  if (millis() - led2OnTime >= 1000){
      digitalWrite(led2Pin, HIGH);
      digitalWrite(led1Pin, LOW);
      led2On = true;
      led1On = true;
      led2OnTime = millis();
      timer  = false;  
  }

  if(led2On) 
    if(millis() - led2OnTime >= 1200) {
      digitalWrite(led2Pin, LOW);
      led2On = false;
    }
  if(led1On)
    if(millis() - led2OnTime >= 200) {
      digitalWrite(led1Pin, HIGH && digitalRead(button2Pin) == HIGH);
      if(millis() - led2OnTime >= 5000) {  
      digitalWrite(led1Pin, LOW);
      led1On = false;
      lastButton = LOW;
        

    }
    }
    
}

 

результат 

16:51:23.652 -> led1On 1
16:51:23.652 -> button2Pin 1
16:51:23.686 -> led1On 1
16:51:23.686 -> button2Pin 0
16:51:23.686 -> led1On 1
16:51:23.720 -> button2Pin 0
16:51:23.720 -> led1On 1
 

+ логике в этой строке я не понял))

 

b707
Offline
Зарегистрирован: 26.05.2017

Arduinchlk

Во-первых, значение lastButton кто за вас будет правильно выставлять?

Во-вторых - как подключены кнопки? замыкаются на питание или на GND ? подтяжка есть7

b707
Offline
Зарегистрирован: 26.05.2017

И вообще, вы бы задачу правильно сформулировали... а то сейчас я вам сделаю, что таймер работает только при нажатой кнопке - а вы мне потом скажете. что это не то, что вы хотели.

Чтобы нам не тратить время зря - пишите четко, что должен делать этот код, нафига тут таймер и все булевские переключатели типа led1On и аналогичные

Arduinchlk
Arduinchlk аватар
Offline
Зарегистрирован: 15.03.2021

кнопка замыкается на землю GND. в не нажатом состоянии HIGH

Во-первых, значение lastButton - подскажите получается в setup задать значение неправильно? должно быть считывание кнопки и если оно LOW только тогда присвоить lastButton LOW?

 

b707
Offline
Зарегистрирован: 26.05.2017

Arduinchlk пишет:

кнопка замыкается на землю GND. в не нажатом состоянии HIGH

подтяжку кнопки к питанию включайте. без этого будет нестабильно

Цитата:
подскажите получается в setup задать значение неправильно? должно быть считывание кнопки и если оно LOW только тогда присвоить lastButton LOW?

сетап не трогайте, а вот это верно:

>>> если оно LOW только тогда присвоить lastButton LOW

Arduinchlk
Arduinchlk аватар
Offline
Зарегистрирован: 15.03.2021
const int button2Pin = 9;
const int led2Pin = 8;
const int led1Pin = 7;
#define sensor 5

  
unsigned long led2OnTime;
bool led2On;
bool led1On;
bool ledOff;
bool timer;
bool lastButton;
bool lastButton2;
int status_led1Pin;


void setup() {
  
  Serial.begin(9600);
  pinMode(led2Pin, OUTPUT);
  pinMode(led1Pin, OUTPUT);
  pinMode(sensor, INPUT);

  pinMode(button2Pin, INPUT);
  led2On = false;
  led1On = false;
  ledOff = false;
  timer = false;
//  lastButton = LOW;
//  lastButton2 = LOW;
  

  
}
 
void loop() {
  status_led1Pin = digitalRead(button2Pin);
  Serial.print("button2Pin ");
  Serial.println(status_led1Pin);
  Serial.print("led1On ");
  Serial.println(led1On);


if (digitalRead(button2Pin) == LOW)    lastButton = LOW;

if (digitalRead(button2Pin) == HIGH && lastButton == LOW){
    timer = true;
    led2OnTime = millis();
    lastButton = HIGH;
    ledOff = true;
  }

  if(timer)
  if (millis() - led2OnTime >= 1000){
      digitalWrite(led2Pin, HIGH);
      digitalWrite(led1Pin, LOW);
      led2On = true;
      led1On = true;
      led2OnTime = millis();
      timer  = false;  
  }

  if(led2On) 
    if(millis() - led2OnTime >= 1200) {
      digitalWrite(led2Pin, LOW);
      led2On = false;
    }
  if(led1On)
    if(millis() - led2OnTime >= 200) {
      digitalWrite(led1Pin, HIGH);
      if(millis() - led2OnTime >= 5000 && digitalRead(button2Pin) == HIGH) {  
      digitalWrite(led1Pin, LOW);
      led1On = false;
      lastButton = LOW;
        

    }
    }
    
}

 

монитор

17:05:50.456 -> led1On 1
17:05:50.456 -> button2Pin 0
17:05:50.490 -> led1On 1
17:05:50.490 -> button2Pin 0
17:05:50.490 -> led1On 1
17:05:50.524 -> button2Pin 0
17:05:50.524 -> led1On 1
 
b707
Offline
Зарегистрирован: 26.05.2017

пипец...

Мыслей никаких, да?

if (digitalRead(button2Pin) == LOW)    [led1On = false; lastButton = LOW;}

 

Если вы не будете пытаться думать сами - я ухожу из темы. писать код за вас я не собираюсь. И слушайте внимательно, когда вам говорят. Я вас просил включить подтяжку - игнорируете?

Arduinchlk
Arduinchlk аватар
Offline
Зарегистрирован: 15.03.2021

b707 пишет:

Arduinchlk пишет:

кнопка замыкается на землю GND. в не нажатом состоянии HIGH

подтяжку кнопки к питанию включайте. без этого будет нестабильно

Цитата:
подскажите получается в setup задать значение неправильно? должно быть считывание кнопки и если оно LOW только тогда присвоить lastButton LOW?

 

сетап не трогайте, а вот это верно:

>>> если оно LOW только тогда присвоить lastButton LOW

1. создать процедуру от дребезга кнопки с задержкой?

2. как выполнить подтяжку кнопки правильно в данном случае?

 

Arduinchlk
Arduinchlk аватар
Offline
Зарегистрирован: 15.03.2021

сейчас попробую пару идей реализовать напишу. по замечаниям я выше отписался

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

Что значит остановить участок кода-это значит убрать событие (условие), его вызывающее,

if(led1On)

{

if(условие останова)

{

led1On=!led1On;

}

}

вернуть выходы в нач. состояние, 

счетчики в ноль

 

Arduinchlk
Arduinchlk аватар
Offline
Зарегистрирован: 15.03.2021

упростил код думал найду проблему в итоге имею контакт 12 он же кнопка +5 вольт но условие срабатывает когда замыкаю на землю

if (digitalRead(button2Pin) == HIGH){

в чем может быть проблема или мое упущение (пробовал другой контакт 9 ранее также) пробовал и так  pinMode(button2Pin, INPUT_PULLUP); но все равно происходит инверсия какая то. прошу пояснить знающих условие срабатывает при замыкании на землю/ дабы исключить в моем исполнение дребезг кнопки. перед загрузкой скетча сразу замыкаю кнопку на землю. загружаю скетч функция срабатывает

const int button2Pin = 12;
const int led2Pin = 8;
const int led1Pin = 7;
#define sensor 5

  
unsigned long led2OnTime;
bool led2On;
bool led1On;
bool ledOff;
bool timer;
bool lastButton;
bool lastButton2;
int status_led1Pin;
bool status_led1;
bool status_led2;


void setup() {
  
  Serial.begin(9600);
  pinMode(led2Pin, OUTPUT);
  pinMode(led1Pin, OUTPUT);
  pinMode(sensor, INPUT);

  pinMode(button2Pin, INPUT);
  led2On = false;
  led1On = false;
  ledOff = false;
  timer = false;
//  lastButton = LOW;
//  lastButton2 = LOW;
  

  
}
 
void loop() {
  
  Serial.print("button2Pin ");
  Serial.println(digitalRead(button2Pin));
  Serial.print("led1 ");
  Serial.println(digitalRead(led1Pin));
  Serial.print("led2 ");
  Serial.println(digitalRead(led2Pin));


if (digitalRead(button2Pin) == HIGH){
      led2OnTime = millis();
      digitalWrite(led1Pin, LOW);
      digitalWrite(led2Pin, LOW);
      }
  if (millis() - led2OnTime >= 1000){
      digitalWrite(led1Pin, LOW);
      digitalWrite(led2Pin, HIGH);
      }
  if(millis() - led2OnTime >= 1200) {
      digitalWrite(led1Pin, HIGH);
      digitalWrite(led2Pin, HIGH);
      }
  if(millis() - led2OnTime >= 2200) {
      digitalWrite(led1Pin, HIGH);
      digitalWrite(led2Pin, LOW);
  }
  if(millis() - led2OnTime >= 7200) {
      digitalWrite(led1Pin, LOW);  
      digitalWrite(led2Pin, LOW);
      }
       

    }


    

 

Arduinchlk
Arduinchlk аватар
Offline
Зарегистрирован: 15.03.2021

когда ставлю условие 

if (digitalRead(button2Pin) == LOW){

pinMode(button2Pin, INPUT_PULLUP);

срабатывает при положительно контакте 5+ на кнопке (нормально замкнута на землю)

так и не должно работать я правильно понимаю?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Arduinchlk пишет:

срабатывает при положительно контакте 5+ на кнопке (нормально замкнута на землю)

На схему можно посмотреть?

sadman41
Offline
Зарегистрирован: 19.10.2016

Если плюс на минус замыкать, то ещё и не такие спецэффекты попрут.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вот и я ж про то же. Только, боюсь, схемы нам не увидеть.

Arduinchlk
Arduinchlk аватар
Offline
Зарегистрирован: 15.03.2021

Схему обрисовать завтра могу. Может действительно обвязку спалил

Arduinchlk
Arduinchlk аватар
Offline
Зарегистрирован: 15.03.2021

Мультиметр тоже могу показания снять

Arduinchlk
Arduinchlk аватар
Offline
Зарегистрирован: 15.03.2021

Обвязывать получается в любом случае нужно. Эх ютуб не учебник)

ZXoR
Offline
Зарегистрирован: 14.04.2021

Если можно, выскажу своё дилетантское мнение: комментирование действий очень помогает понять, что должно происходить, за что отвечает каждая переменная. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ZXoR пишет:

Если можно, выскажу своё дилетантское мнение: комментирование действий очень помогает понять, что должно происходить, за что отвечает каждая переменная. 

Можно я тоже выскажу?

Если кнопка 

Arduinchlk пишет:
нормально замкнута на землю
а на неё иногда подают

Arduinchlk пишет:
положительно контакте 5+ на кнопке
То, код уже можно и не комментировать :-)

ZXoR
Offline
Зарегистрирован: 14.04.2021

Ну я надеюсь, просто автор  недосказал и схема такая 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ZXoR пишет:

автор  недосказал

Пока ТС не приведёт схемы, лично я ничего обсуждать не буду.

А то мы тут как-то целый день пальцы об клавиши били, пока из автора клещами не вытащили схему, и не увидели, что на ATiny85 аналоговый сигнал с ADC0 читает.

Нефиг, если ТС в лом привести схему для решения СВОЕЙ проблемы, то мне ещё более в лом разводить кофейную гущу для решения ЕГО проблемы.

Arduinchlk
Arduinchlk аватар
Offline
Зарегистрирован: 15.03.2021

добрался до компа всем привет

готов продолжить поиск ошибки

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ZXoR пишет:

Ну я надеюсь, просто автор  недосказал и схема

Полюбуйтесь на его схему!

А я Вам что говорил?! Не первый день тут время убиваю.

Arduinchlk
Arduinchlk аватар
Offline
Зарегистрирован: 15.03.2021

что скажете доктор?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вам в посте #20 говорил про подтяжку, где она? Почему её нет ни в схеме, ни в коде? Как минимум в строке 26 (по коду из #26) заменяйте INPUT на INPUT_PULLUP.

Где токоограничивающие резисторы у светодиодов? Как Вы могли их вот так поставить? Покажите мне хоть один забор, на котором написано, что так можно!

UPD:
Это сделайте обязательно, потом выложите снова схему и код (тот бред, что Вы называете кодом) в одном посте. Тогда продолжим.

Arduinchlk
Arduinchlk аватар
Offline
Зарегистрирован: 15.03.2021

да в коде поменял на INPUT_PULLUP

по резисторам извиняюсь не указал просто поторопился отправить схему

и условие поменял

 

48 if (digitalRead(button2Pin) == LOW){
49       led2OnTime = millis();
50       digitalWrite(led1Pin, LOW);
51       digitalWrite(led2Pin, LOW);
52       }

теперь корректно работает все и любой оператор прерывает функцию

Спасибо огромное

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Тваюждивизию!

Т.е. вместо актуальной схемы и актуального кода я сидел и разбирался в каком-то фуфле из-за того, что Вы поторопились?

Ну-ну! 

Arduinchlk
Arduinchlk аватар
Offline
Зарегистрирован: 15.03.2021

Быстро поменял просто. условие срабатывания и пин мод кнопки.

 

ничего больше не менял

Arduinchlk
Arduinchlk аватар
Offline
Зарегистрирован: 15.03.2021
const int button2Pin = 12;
const int led2Pin = 8;
const int led1Pin = 7;
#define sensor 5

unsigned long led2OnTime;
bool led2On;
bool led1On;
bool ledOff;
bool timer;
bool lastButton;
bool lastButton2;
int status_led1Pin;
bool status_led1;
bool status_led2;

void setup() {
  Serial.begin(9600);
  pinMode(led2Pin, OUTPUT);
  pinMode(led1Pin, OUTPUT);
  pinMode(sensor, INPUT);
  pinMode(button2Pin, INPUT_PULLUP);
  led2On = false;
  led1On = false;
  ledOff = false;
  timer = false;

//  lastButton = LOW;

//  lastButton2 = LOW;
}

void loop() {
  Serial.print("button2Pin ");
  Serial.println(digitalRead(button2Pin));
  Serial.print("led1 ");
  Serial.println(digitalRead(led1Pin));
  Serial.print("led2 ");
  Serial.println(digitalRead(led2Pin));

if (digitalRead(button2Pin) == LOW){
      led2OnTime = millis();
      digitalWrite(led1Pin, LOW);
      digitalWrite(led2Pin, LOW);
      }
  if (millis() - led2OnTime >= 1000){
      digitalWrite(led1Pin, LOW);
      digitalWrite(led2Pin, HIGH);
      }
  if(millis() - led2OnTime >= 1200) {
      digitalWrite(led1Pin, HIGH);
      digitalWrite(led2Pin, HIGH);
      }
  if(millis() - led2OnTime >= 2200) {
      digitalWrite(led1Pin, HIGH);
      digitalWrite(led2Pin, LOW);
  }
  if(millis() - led2OnTime >= 7200) {
      digitalWrite(led1Pin, LOW); 
      digitalWrite(led2Pin, LOW);
      }
    }

    

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Arduinchlk пишет:

const int button2Pin = 12;

Программа выглядит бредово, но это ладно. Но зачем что-то делать (вычислять), когда кнопка не нажата? Процессор тренировать?

И кроме того строки 42-44 постоянно гасят светодиоды при нажатой кнопке (каждый цикл программы).