val2 was not declared in this scope

Mircucio
Offline
Зарегистрирован: 14.11.2018

Здравствуйте. Помогите, пожалуйста, разобраться в трех соснах. Пишу такой код...

void setup() {
  // initialize both serial ports:
  Serial.begin(19200);    // Инициализация общения компа с Ардуино
  
  Serial1.begin(19200);     // Общение RQ с ардуино
}

void loop() {
    
  Serial1.println("?BS 1");
  if (Serial1.available()) {    // Если есть ответ из RQ, 
    int val1 = Serial1.read();  // Записать ее в переменную val
    
Serial1.println("?BS 2");
  if (Serial1.available()) {    
    int val2 = Serial1.read();

    Serial1.println("?V");}
  if (Serial1.available()) {     
    char val3 = Serial1.read();
  }

  int VELOCITY = (val1+val2) /2;
  }}

В последней строчке хочу расчитать VELOCITY  по несложной формуле, но компиляр пишет:
val2  was not declared in this scope. Что не так? Я деклалировал val2 в void setup(), тот же результат. 

Спасибо!

MaksVV
Offline
Зарегистрирован: 06.08.2015

объявите как глобальную, т.е. в начале скетча. После фигурных скобок, переменные созданные в них уничтожаются

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Mircucio, переменную val2 Вы объявляете в строке 16, которая находится внутри блока между фигурными скобками в строках 15 и 18. Соответственно, в 18-й строке эта переменная уничтожается.

Mircucio
Offline
Зарегистрирован: 14.11.2018

Спасибо за ответы. Не догадался потому что ругается только на val2. Val1 его устраивает... Ладно, вроде разобрался, ещё раз спасибо.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Так val1 используется в том же блоке: открывающая скобка в строке 11, а закрывающая - первая в строке 24.

Olvin
Offline
Зарегистрирован: 01.08.2018

MaksVV пишет:

объявите как глобальную, т.е. в начале скетча. После фигурных скобок, переменные созданные в них уничтожаются

Не давайте плохих советов. Глобальные переменные тоже нужны, но как и все лекарства - строго по показаниям. val2 можно объявить в самой функции (в её начале).

В этом примере, предположим, это не так уж и важно, но не надо вырабатывать плохие привычки.