Ошибка was not declared in this scope в Arduino IDE
Компилятор встретил имя, которого в этом месте не знает. Ошибка выглядит так:
error: 'pinmode' was not declared in this scopeИмя в кавычках — то, что не нашлось; номер строки стоит перед словом error. Arduino IDE подсвечивает эту строку. Причины — по частоте.
1. Регистр букв или опечатка
Язык скетчей — C++, и в нём pinMode и pinmode — разные имена. Правильно пишутся:
| Неверно | Верно |
|---|---|
pinmode, PinMode | pinMode |
digitalwrite, DigitalWrite | digitalWrite |
analogread | analogRead |
serial.println | Serial.println |
led_builtin, LED_BUILDIN | LED_BUILTIN |
high, low, output | HIGH, LOW, OUTPUT |
Та же история с вашими переменными: объявлена ledPin, а в коде LedPin или ledpin.
2. Не подключена библиотека
Servo, DHT, LiquidCrystal_I2C, Wire — не часть языка, их даёт библиотека. Без строки #include вверху скетча компилятор их не знает:
#include <Servo.h>
Servo servo;
void setup() {
servo.attach(9);
}
void loop() {
}Если библиотека не установлена вовсе, ошибка будет другой — No such file or directory (справка Как установить библиотеку в Arduino IDE).
3. Переменная объявлена в другой функции
Переменная живёт только внутри фигурных скобок, где её объявили. Объявленная в setup() в loop() не видна:
void setup() {
int ledPin = 9;
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, HIGH); // ошибка: ledPin здесь не существует
}Если переменная нужна в обеих функциях, объявите её вне функций, в начале скетча:
const int LED_PIN = 9;
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
digitalWrite(LED_PIN, HIGH);
}4. Лишняя или забытая фигурная скобка
Если где-то выше не закрыта { или закрыта лишняя }, компилятор теряется, и ошибки сыплются в местах, где всё написано верно, — часто вместе с was not declared и expected … before …. Нажмите Tools → Auto Format (Ctrl+T): по отступам после форматирования видно, где скобки разошлись. Arduino IDE подсвечивает парную скобку, если поставить курсор рядом с ней.
5. Имя есть только у другой платы
Некоторые имена определены не для всех плат. Например, Serial1 есть только у плат со вторым аппаратным портом (Mega, Leonardo), а у Uno и Nano его нет. Проверьте, что в Tools → Board выбрана та плата, для которой написан скетч.
Читайте первую ошибку
Одна опечатка часто тянет за собой десяток сообщений. Исправляйте первую ошибку в списке (прокрутите панель Output вверх) и компилируйте снова — остальные нередко исчезают сами. Подробнее об ошибках компилятора C++ — в курсе C++.