Непонятный для меня баг

Kryptonnn
Offline
Зарегистрирован: 23.04.2022
#define ButtHigh 10
#define ButtLow 11
#define RelHigh 7
#define RelLow 8
#define R 5
volatile int count=0;
bool FlagHigh=0;
bool FlagLow=0;

void setup(){
  pinMode(ButtHigh,INPUT);
  pinMode(ButtLow,INPUT);
  digitalWrite(R,HIGH);
  digitalWrite(RelHigh,HIGH);
  digitalWrite(RelLow,HIGH);
  pinMode(RelHigh,OUTPUT);
  pinMode(RelLow,OUTPUT);
  pinMode(R,OUTPUT);
  pinMode(2,INPUT);
  attachInterrupt(0,EncF,RISING);
}

void EncF(){
  count++;
}

void loop(){
  if(digitalRead(ButtLow)==LOW&&FlagLow==0){
    FlagLow=1;
    for (count=0; count<5;) {
      digitalWrite(RelLow,LOW);
      digitalWrite(R,LOW);
    }
    digitalWrite(RelLow,HIGH);
    digitalWrite(R,HIGH);
    delay(1000);
  }
  if(digitalRead(ButtLow)==HIGH&&FlagLow==1){
    FlagLow=0;
  }
//00000000000000000000000000000000000000000000
  if(digitalRead(ButtHigh)==LOW&&FlagHigh==0){
    FlagHigh=1;
    for (count=0; count<10;) {
      digitalWrite(RelHigh,LOW);
      digitalWrite(R,LOW);
    }
    digitalWrite(RelHigh,HIGH);
    digitalWrite(R,HIGH);
    delay(1000);
  }
  if(digitalRead(ButtHigh)==HIGH&&FlagHigh==1){
    FlagHigh=0;
  }
}

 

Вот такой мой кривой код аномально ведет себя в эмуляторе https://wokwi.com/projects/new/arduino-mega Вот линк на схему https://dropmefiles.com/BzWDN А суть в том что одна и та же кнопка в случайном порядке включает любую лампочку, при том это происходит при любых комбинациях нажатий. Баг я сам найти не смог. Подскажите, пожалуйста, где я ошибся

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Вы в Wokwi нажмите Save и скопируйте сюда итоговую ссылку ?!

Kryptonnn
Offline
Зарегистрирован: 23.04.2022
Kryptonnn
Offline
Зарегистрирован: 23.04.2022

Решено. Можете не ломать голову, в железе все работает как часы. Эмулятор - багованное гавно. Хоть он и помог мне поймать один мелкий баг в более ранней версии моего кода, а может и не баг, а может это был баг исключительно эмулятора. Не верьте эмуляциям с этого эмулятора, они могут врать!

Green
Offline
Зарегистрирован: 01.10.2015

Ну, никогда не нужно рассчитывать на то что эмулятор это образец. Иногда случается что в нём всё хорошо, а в реале плохо, и наоборот. То бишь, это чисто помощник. Если делаешь стандартные вещи, то с эмулятором проблем нет. Как правило. Только и эмуляторы разные бывают.)

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

Вообще скорее этот код оно самое..."багованое говно".

Kryptonnn
Offline
Зарегистрирован: 23.04.2022

Да, но факт в том что код работает, а эмулятор пи... врет

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

Kryptonnn пишет:
Да, но факт в том что код работает

да вот сомнительно как-то он работает...

зачем. например. 5 раз подряд посылать на пины одно и то же значение?

for (count=0; count<5;) {
      digitalWrite(RelLow,LOW);
      digitalWrite(R,LOW);
    }

ардуина не чета программисту, она понимает с первого раза :)

В коде куча бредятины и логических нелепостей...