Ошибка "variable" does not name a type

Эй, ребята, я получаю сообщение об ошибке, которое, я уверен, связано с тем, как я инициализирую свои переменные. Это: статус выхода 1 'threshold' не указывает тип

Вот мой код:

//Глобальные переменные для перемещения max:

int analogValues[100];
int ir=0;
int maxA0=0;
int threshold = 0;
//Глобальные переменные для перемещения максимума ^^

//Глобальные переменные для скользящей средней ЭКГ:
const int no_averages = 2; 

unsigned long time = 0, peak1 = 0, peak2 = 0;
int binaryrange, bpm, i=0; // не знаю, что я делаю.
int readings[no_averages]; // показания с аналогового входа
int readIndex = 0; // индекс текущего показания
int total = 0; // промежуточный итог
int average = 0; // среднее значение, которое мы будем отображать в виде ЭКГ


void setup() {
// инициализируем последовательную связь с компьютером:
Serial.begin(115200);
// инициализируем все показания равными 0:
for (int thisReading = 0; thisReading < no_averages; thisReading++) {
readings[thisReading] = 0;
}

// установить максимальное перемещение дерьма на ноль
  for (int is = 0; is < 100; is++) {
analogValues[is]=0;
  }
}

void loop() {
  //целое maxA0=0; // Независимо от того, инициирую ли я переменные здесь или глобально, та же ошибка
  //целое пороговое значение = 0;
time = millis();

average=0;
readings[readIndex] = analogRead(A0);
readIndex++;
for (int ir=0; ir < no_averages; ir++) {
  average = average + readings[ir];
}
if (readIndex >= no_averages) {    // ...переход к началу массива, если он достиг конца:
readIndex = 0;
}
average = average/no_averages;
if (average>1000) {
  average = 600;
}
Serial.print(average);

analogValues[ir]=average;
ir++;
if (ir>=100) {
  ir=0; } //Это откат к началу массива, если он превосходит 100-е место в массиве
for (int is = 0; is < 100; is++) {
 if (analogValues[is]>analogValues[is-1])
 analogValues[is]=maxA0;
  }
}

//******************************

//Эта строка с ошибкой:

threshold=maxA0-40;

//******************************

if (average<threshold){
  binaryrange=0; }
if (average>threshold && binaryrange==0){
  peak1=peak2;
  peak2=time;
  bpm=60000/(peak2-peak1);
  binaryrange=1;
  } 
   Serial.print(" ");
  Serial.println(bpm);
//BPM-код ^^


delay(8); // задержка между чтениями для стабильности
i++; 
}

СПАСИБО!

, 👍0


1 ответ


Лучший ответ:

-1

"Строка с ошибкой" не входит ни в какие функции. В C и C++ мы пишем исполняемый код внутри функций. Вы разместили свой

threshold=maxA0-40;

(и все последующее) вне каких-либо функций. Отсюда и ошибка.

Подобные ошибки обычно возникают из-за неправильного размещения фигурных скобок { и }. Но это то, что вы должны научиться проверять сами. Большинство редакторов кода, ориентированных на C или C++, обычно могут помочь вам в этом. И в этом вам может помочь правильное форматирование кода. То, что у вас есть сейчас, представляет собой такой беспорядок, что простую ошибку практически невозможно увидеть.

,

Ах, чувак, это смущает, только что там была мошенническая "}", которая испортила мой код. Спасибо!, @glebecreator

@glebecreator Вот почему стиль кодирования и отступы так важны. И даже если вы не можете следовать ему, вы можете использовать сочетание клавиш Ctrl+T в Arduino IDE, чтобы переформатировать свой код. Если вы попробуете, вы обнаружите, что часть кода как-то смещена., @KIIV