Условие if срабатывает два раза

Тема в разделе "Arduino & Shields", создана пользователем Sem, 8 окт 2021.

Метки:
  1. Sem

    Sem Нуб

    Почему условие flag == true срабатывает два раз? Должно же один раз сработать
    Код (C++):

    bool flag = true;

    void setup() {
      // put your setup code here, to run once:
    Serial.begin(9600);

    }

    void loop() {
      // put your main code here, to run repeatedly:
    if(flag == true) {
      Serial.println("flag_begin");
      Serial.println(flag);
       flag = false;
       Serial.println("flag_end");
      Serial.println(flag);
      }
    }
     
    на выходе, в мониторе получаю

    Код (C++):

    flag_begin
    1
    flag_end
    0
    flag_begin
    1
    flag_end
    0
     
     
  2. Asper Daffy

    Asper Daffy Иксперд

    Вставьте печать чего-нибудь (хоть слова "кака") в функцию setup и приведите листинг.

    Заодно скажите, что за ардуина, что за среда разработки, ну, все подробности.
     
  3. Airbus

    Airbus Радиохулиган Модератор

    Проверил ради интереса.Работает как надо-срабатывает один раз
    [​IMG]
     
  4. SergeiL

    SergeiL Оракул Модератор

    Что-то тут не так у ТС.
    Либо код не тот, либо вывод в порт не тот.
     
    Airbus нравится это.
  5. Asper Daffy

    Asper Daffy Иксперд

    Пусть ТС сделает то, что я сказал. Есть подозрение, что по каким-то причинам она у него просто перегружается.
     
    Andrey12 и SergeiL нравится это.
  6. SergeiL

    SergeiL Оракул Модератор

    Согласен!
    Я уже привык к ESP, там перезагрузку сразу видно в мониторе порта, да и в setup() обычно отладочная информация понапихана.
     
  7. Airbus

    Airbus Радиохулиган Модератор

    Дак так и есть! Или по питанию плохой контакт или надо смотреть может что то коротит на плате. У меня даже Wawgat работал. Нормальную Арду лень было искать взял что на столе валялось.
     
  8. Sem

    Sem Нуб

    Появление ошибки не зависит от платы, подключал и Uno и Mega2560 Screenshot_2021-10-08_20-14-18.png
     
  9. Sem

    Sem Нуб

    Screenshot_2021-10-08_20-28-27.png
     
  10. Sem

    Sem Нуб

    Данная проблема появилась сегодня, раньше такого не было. Первый раз с такой проблемой сталкиваюсь.
     
  11. Sem

    Sem Нуб

    Нигде не коротит, менял USB порт, не помогло. В принципе криминального ничего нет, вместо одного раза два раза отрабатывает. Но все же.....
     
  12. Airbus

    Airbus Радиохулиган Модератор

    У Вас Ардуина сама перезагружается почему то. Есть возможность промониторить порт на другом компьютере?Такое ощущение что по порту не хватает напряжения либо оно просаживается. Можно сделать так—в коде после flag = false; зажечь LED-светодиод на 13 пине. Он должен просто зажечься но не мигать. И попробуйте запитать от Повербанка. Посмотрите как реагирует LED
     
    Последнее редактирование: 8 окт 2021
  13. KindMan

    KindMan Гуру

    Порт открывается странно, что то в Linux вы испортили
    DTR дергает два раза.
     
  14. Airbus

    Airbus Радиохулиган Модератор

    Дергает и походу не два
    А все время
     
  15. Sem

    Sem Нуб

    Нет это я ошибся). Микроконтроллер же висит на USB порте. Вот он и шлет данные. ) Сорри.
     
  16. Sem

    Sem Нуб

    Вообще предполагал, что в ардуине soft передача по трем проводам?
     
  17. Sem

    Sem Нуб

    тоже так думаю, но что испортил то? Если канал не настроен, то вместо читаемых символов обычно различные символы появляются. А тут вроде все читаемо, просто два раза отправляются данные.
     
  18. KindMan

    KindMan Гуру

    Если подключитесь с внешним usb-uart по трем проводам, то всё будет хорошо.
    Не данные отправляются, а ардуино перезагружается два раза подряд, а это происходит из-за начала сеанса обмена терминала и дуни.
     
  19. Sem

    Sem Нуб

    Используя переходник usb-com, предварительно закоротив его, настроил канал передачи на 9600 8n1. В консоли без проблем все работает. Канал работает нормально. Но проблема с ардуино осталась.
    Такая проблема наблюдается на двух различных платах Uno и Мега. Почему перегружаются?
     
  20. parovoZZ

    parovoZZ Гуру

    Не открывай консоль - не будет перезагружаться.