Непонятный для меня баг
- Войдите на сайт для отправки комментариев
Сб, 23/04/2022 - 17:23
#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 А суть в том что одна и та же кнопка в случайном порядке включает любую лампочку, при том это происходит при любых комбинациях нажатий. Баг я сам найти не смог. Подскажите, пожалуйста, где я ошибся
Вы в Wokwi нажмите Save и скопируйте сюда итоговую ссылку ?!
https://wokwi.com/projects/329754111725535828
Решено. Можете не ломать голову, в железе все работает как часы. Эмулятор - багованное гавно. Хоть он и помог мне поймать один мелкий баг в более ранней версии моего кода, а может и не баг, а может это был баг исключительно эмулятора. Не верьте эмуляциям с этого эмулятора, они могут врать!
Ну, никогда не нужно рассчитывать на то что эмулятор это образец. Иногда случается что в нём всё хорошо, а в реале плохо, и наоборот. То бишь, это чисто помощник. Если делаешь стандартные вещи, то с эмулятором проблем нет. Как правило. Только и эмуляторы разные бывают.)
Вообще скорее этот код оно самое..."багованое говно".
Да, но факт в том что код работает, а эмулятор пи... врет
да вот сомнительно как-то он работает...
зачем. например. 5 раз подряд посылать на пины одно и то же значение?
for (count=0; count<5;) { digitalWrite(RelLow,LOW); digitalWrite(R,LOW); }ардуина не чета программисту, она понимает с первого раза :)
В коде куча бредятины и логических нелепостей...