Функция was not declared in this scope
- Войдите на сайт для отправки комментариев
Пнд, 03/10/2016 - 03:03
Доброго времени суток
При загрузке данного кода возникает ошибка: 'SecurityMode' was not declared in this scope. Почему то не видит данную функцию.
Но если создать новый скетч и вставить в него данный код, при загрузке не сохранять его, то все нормально загружается и работает.
В чем проблема может быть?
const int PIN_SENSOR_1 = 2;
const int PIN_SENSOR_2 = 3;
const int PIN_SENSOR_3 = 4;
const int PIN_SENSOR_4 = 5;
const int PIN_ALARM_1 = 6;
const int PIN_ALARM_2 = 7;
const int PIN_STATUS = 8;
boolean SECURITY = false;
boolean ALARM = false;
void setup() {
Serial.begin(9600);
pinMode(PIN_SENSOR_1, INPUT);
pinMode(PIN_SENSOR_2, INPUT);
pinMode(PIN_SENSOR_3, INPUT);
pinMode(PIN_SENSOR_4, INPUT);
pinMode(PIN_ALARM_1, OUTPUT);
pinMode(PIN_ALARM_2, OUTPUT);
pinMode(PIN_STATUS, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.print("SECURITY: ");
Serial.println(SECURITY);
SecurityMode();
delay(200);
}
void SecurityMode() {
if (digitalRead(12) == HIGH) {
SECURITY = !SECURITY;
delay(100);
}
}
Если перенести функцию выше loop, то тогда все нормально компилируется.
Но почему такая особенность только на сохраненном скетче?
Такая особенность на всех скетчах. Это правило языка: всё должно быть объявлено до использования. В старых версиях IDE разработчики прятали это своими искусственными действиями и тогда можно было располагать фунция после испольхования, а некоторой версии перестали. Теперь всё делается правильно.
возможно нужно создать прототип функции? Учи си, многие вопросы отпадут