val2 was not declared in this scope
- Войдите на сайт для отправки комментариев
Ср, 14/11/2018 - 16:21
Здравствуйте. Помогите, пожалуйста, разобраться в трех соснах. Пишу такой код...
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(), тот же результат.
Спасибо!
объявите как глобальную, т.е. в начале скетча. После фигурных скобок, переменные созданные в них уничтожаются
Mircucio, переменную val2 Вы объявляете в строке 16, которая находится внутри блока между фигурными скобками в строках 15 и 18. Соответственно, в 18-й строке эта переменная уничтожается.
Спасибо за ответы. Не догадался потому что ругается только на val2. Val1 его устраивает... Ладно, вроде разобрался, ещё раз спасибо.
Так val1 используется в том же блоке: открывающая скобка в строке 11, а закрывающая - первая в строке 24.
объявите как глобальную, т.е. в начале скетча. После фигурных скобок, переменные созданные в них уничтожаются
В этом примере, предположим, это не так уж и важно, но не надо вырабатывать плохие привычки.