Функция 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 разработчики прятали это своими искусственными действиями и тогда можно было располагать фунция после испольхования, а некоторой версии перестали. Теперь всё делается правильно.
возможно нужно создать прототип функции? Учи си, многие вопросы отпадут