Изменить/объявить константу в setup и использовать ее в цикле loop
Я хочу изменить или объявить константу в setup()
, а затем я хочу получить к ней доступ в цикле ()
.
Я много искал, но единственные вопросы, которые я нашел, можно было решить, объявив константу в начале программы. У меня это не работает, потому что я использую Adafruit BMP388 и не могу использовать давление перед настройкой ()
.
Я также попытался объявить переменную перед setup()
и изменить ее внутри setup()
, но она не изменилась, когда я использовал ее в цикле ()
.
Как я могу решить эту проблему?
@Vooxe, 👍1
Обсуждение1 ответ
Лучший ответ:
Вы не получите хороших ответов, не показав свой код, но, возможно, это хорошее предположение о том, чего вы хотите:
почему бы не попробовать что-то примерно подобное этому (непроверенное и неполное)?
Adafruit_BMP3XX bmp;
float startPressure;
float difference;
void setup() {
bmp.begin_I2C();
startPressure = bmp.readPressure();
}
void loop() {
difference = startPressure - bmp.readPressure();
}
Или, лучше:
Adafruit_BMP3XX bmp;
void setup() {
bmp.begin_I2C();
}
void loop() {
static const float startPressure = bmp.readPressure();
static float difference;
difference = startPressure - bmp.readPressure();
}
Я не совсем уверен, что это то направление, в котором он движется. Но если это так, вы могли бы переместить float startPressure; в цикл (), выполнить startPressure = bmp.readPressure(); как часть его инициализации и сделать его статическим и постоянным. Как в: static const float startPressure = bmp.readPressure(); Это будет вести себя так же, как у вас, но ограничит startPressure единственной областью, в которой он используется., @timemage
@timemage: Верно, и лучше, но это потребовало бы объяснения "статического", а я не чувствую себя готовым к этому 8-). Однако я добавлю это., @ocrdu
разница
не обязательно должна быть статичной
., @Edgar Bonet
Да, и технически это не является "постоянным" в терминах C ++. Но, насколько я понимаю, это вполне соответствует духу вопроса., @timemage
@Edgar-Bonet: Нет, это не обязательно должно быть в примере, но кто знает, хочет ли он, чтобы это оставалось неизменным в течение нескольких циклов в его коде., @ocrdu
- Объявленная переменная внутри void setup не видится в void loop
- Как использовать SPI на Arduino?
- Библиотека DHT.h не импортируется
- Светодиоды: разница между общим анодом и общим катодом
- Как повторить кусок кода
- контент» не захватывается
- Почему эта программа на C++ не может прочитать Serial.write() моего arduino?
- Получение имени перечисления из экземпляра перечисления
откуда нам знать, что вы действительно изменили его в loop()?, @jsotola
Я не менял его в loop(), я должен получить к нему доступ там. Я хочу изменить это в setup(), @Vooxe
посмотрите на скетч "затухания" в arduino IDE в качестве примера скетчей, @jsotola
откуда нам знать, что вы действительно изменили его в setup()?, @jsotola
Я хочу использовать его в loop(): мне нужно начальное давление (объявленное в setup()) и сравнить его с текущим давлением, @Vooxe
название вашего поста не соответствует содержанию вашего поста ... заголовок спрашивает о
переменной
, содержание спрашивает оконстанте
... я предлагаю вам исследовать разницу, @jsotolaКонстанты по определению не могут быть изменены. Вы имеете в виду переменные?, @Nick Gammon
* Я также попытался объявить переменную перед setup() и изменить ее внутри setup(), но она не изменилась, когда я использовал ее в цикле (). * - Вы можете показать этот код? Переменная, измененная в настройках, останется измененной. Если только вы не объявили об этом дважды (не затеняли его)., @Nick Gammon