Ошибка "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++;
}
СПАСИБО!
@glebecreator, 👍0
1 ответ
Лучший ответ:
"Строка с ошибкой" не входит ни в какие функции. В C и C++ мы пишем исполняемый код внутри функций. Вы разместили свой
threshold=maxA0-40;
(и все последующее) вне каких-либо функций. Отсюда и ошибка.
Подобные ошибки обычно возникают из-за неправильного размещения фигурных скобок {
и }
. Но это то, что вы должны научиться проверять сами. Большинство редакторов кода, ориентированных на C или C++, обычно могут помочь вам в этом. И в этом вам может помочь правильное форматирование кода. То, что у вас есть сейчас, представляет собой такой беспорядок, что простую ошибку практически невозможно увидеть.
- Как вызвать функции C из скетча ардуино?
- max7219 связанный дисплей, показывающий зеркальный текст
- Пиринговая коммуникация
- Запуск С для ардуино
- Как связаться с ESP8266 ESP01, отправив данные через программный сериал на Arduino Uno?
- Прерывание ардуино при смене контакта
- GSM-модуль IOT-GA6 Arduino + ошибка CME 58
- Разница между массивом char и массивом unsigned char
Ах, чувак, это смущает, только что там была мошенническая "}", которая испортила мой код. Спасибо!, @glebecreator
@glebecreator Вот почему стиль кодирования и отступы так важны. И даже если вы не можете следовать ему, вы можете использовать сочетание клавиш Ctrl+T в Arduino IDE, чтобы переформатировать свой код. Если вы попробуете, вы обнаружите, что часть кода как-то смещена., @KIIV