Почему меняется значение переменной
- Войдите на сайт для отправки комментариев
Чт, 02/04/2020 - 23:20
Не могу понять, почему меняется значение переменной в коде:
FlashFlag = 2; if (FlashFlag == 3) // срабатывает при третьем проходе { brightness = temp; FlashFlag = 1; Serial.println(temp); } if (FlashFlag == 0) // срабатывает при втором проходе { brightness = 1; FlashFlag = 3; Serial.println(temp); } if (FlashFlag == 2) // срабатывает при первом проходе { temp = brightness; brightness = 255; FlashFlag = 0; Serial.println(temp); }
в мониторе порта появляются значения temp
22:07:47.093 -> 175
22:07:47.093 -> 255
22:07:47.194 -> 1
в то время, как temp не должно менять своё значение.
мне нужно запомнить текущее значение яркости ленты, включить на максимум, потом на минимум, потом вернуть обратно на ту яркость, какая была. а у меня переменная, которая должна помнить это значение, почему то его теряет.
почему это происходит? часа 2 уже сижу голову ломаю, не могу разобраться.
вы все врете!
в строке 19 temp меняется однозначно!
а вот чему на тот момент равна brightness для нас загадка.
в 19 строке temp присваивается значение brightness, оно равно 175 и я бы хотел рассчитывать, что оно таким и останется при втором и третьем проходе, после чего, значение temp обратно я присвою для brightness.
но в мониторе порта видно, что temp меняется, а не должно.
при этом, не выше в программе, ни ниже значение temp нигде больше не используется.
какой смысл мне вам врать, чтобы вы надо мной потроллили?
Попробуйте добавить вывод Serial.println(FlashFlag); перед каждым Serial.println(temp);
Это может помочь вам проследить последовательность вызовов.
добавил. вызовы работают корректно, но это не объясняет, почему temp меняется 3 раза, когда должно присвоиться 1 раз и больше не изменяться.
логически я понимаю, что пишу правильно, но возможно не учитываю какие то особенности работы Ардуино или глюки.
По приведенному куску трудно сказать как оно ДОЛЖНО работать.
У вас в первой строчке FlashFlag = 2;
Т.е. каждый раз в цикле FlashFlag = 2;
FlashFlag = 2
выставляется выше по нажатию на сенсор и это не объясняет почему меняется temp.
весь код выложите
я сёдня в тонусе, давайте..
из того что вы воложили/наложили
поэтттомууу условие в строке 17 будет выполнятся всегда и безукоснительно ))*&^%^
а затем, как и пи..сал выше, в строке 19 temp примет значение brightness
его значение из вашего куска не понятно, что вы хотите черт возьми?
я так думаю ща будет - это не тот скеч, это отладка, и че вы все такие тупые, не можете объяснить...
я так думаю ща будет - это не тот скеч, это отладка, и че вы все такие тупые, не можете объяснить...
зачем вообще отвечать что-то человеку, который выложил отрывок кода без начала и конца? - пусть выкладывает скетч полностью или пусть разбирается сам.
короче, это был глюк. я нашел, что влияет на его появление и устранил кусок кода, на первый взгляд, никак не связанный с этими переменными.
выше был объявлен массив, а в setup он инициализировался в цикле нулями.
компилятор ругался, что так делать не надо. почему, я не понял.
спасибо всем, кто откликнулся
выше был объявлен массив, а в setup он инициализировался в цикле нулями.
компилятор ругался, что так делать не надо. почему, я не понял.
скорее всего выход за границы массива. Выложили бы полный код - разгадали бы вашу загадку.
весь код выложите
Мужики, давайте вот с такого начинать и, пока не выполнено, не писать ничего!
Ну, чего мы как мартышки трём хрустальные шары, а потом узнаём, что "поциент в ресета аналогридом читает"?