Ошибка компиляции на ATmega2560

У меня есть ошибка. Ошибка отображается как:

статус выхода 1 Ошибка компиляции для платы Arduino Mega или Mega 2560.

Код:

#include <Wire.h>

#include <LCD.h>

#include <LiquidCrystal_I2C.h>

#include <SoftwareSerial.h>

LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7);

SoftwareSerial BT(10,11); // Контакты Tx и Rx для связи BT const int temp_sensor = 0; //pin A0 (датчик температуры) const int fan = 22; // контакт D2 (вентилятор) float temp; //значение температуры

int threshold = 21; //температурный порог

const int LDRsensor = 1; //pin A1 (датчик освещения)

const int LED1 = 6; // контакт D6 (светодиод 1)

const int LED2 = 7; // контакт D7 (светодиод 2)

const int LED3 = 8; // контакт D8 (светодиод 3)

const int LED4 = 9; // контакт D9 (светодиод 4)

int LDRvalue; //значение естественного освещения

const int WL_sensor = 15; //pin A15 (датчик уровня воды)

const int Wpump = 13; // контакт D13 (водяной насос)

float water_level; //значение уровня воды

const int mov_sensor = 3; // контакт D3 (датчик движения)

const int LEDalrm = 4; // контакт D4 (сигнальный светодиод)

const int buzzer = 5; // контакт D5 (зуммер)

int mov_value; //значение движения (true или false)

char state; //данные отправлены из приложения

char mode; //режим, выбранный в соответствии с "состоянием" значение порядка символов; //приказ исполнительным механизмам согласно "состоянию" ценность
void setup() //эта функция выполняется только один раз

{

lcd.begin (16,2);

lcd.setBacklightPin(3,POSITIVE);

lcd.setBacklight(HIGH);

lcd.setCursor(0,0);

lcd.print("TFG");

lcd.setCursor(0,1);

lcd.print("Anna Merino");

delay(4000);

lcd.clear();

pinMode(temp_sensor, INPUT); //режим датчика температуры

pinMode(fan, OUTPUT) ; //режим вентилятора

pinMode(LDRsensor, INPUT); //Режим датчика освещения

pinMode(LED1, OUTPUT); //Режим LED1

pinMode(LED2, OUTPUT); //Режим LED2

pinMode(LED3, OUTPUT); //Режим LED3

pinMode(LED4, OUTPUT); //Режим LED4

pinMode(WL_sensor, INPUT) ; //режим датчика уровня воды

pinMode(Wpump, OUTPUT); //Режим водяного насоса

pinMode(mov_sensor, INPUT); //режим датчика движения

pinMode(LEDalrm, OUTPUT); //режим тревожного светодиода

pinMode(buzzer, OUTPUT); //режим зуммера

BT.begin(9600); // устанавливаем скорость передачи данных в битах в секунду (бод) для передачи данных }
void loop() // функциональный цикл — выполняется непрерывно

{

if(BT.available()>0)

{

state = BT.read(); //передаем данные, отправленные приложением, в локальную переменную

}

if (state == 'Y')

{

mode = 'A';

}

else

if (state == 'Z')

{

mode = 'R';

}

else

if (state == 'X')

{

mode = 'D';

}


if (mode == 'A')

{

automaticmode(); //выполнить автоматическую функцию

}

else

if (mode == 'R')

{

remotemode(); //выполнить удаленную функцию

}

else

if (mode == 'D')

{

alarmmode(); //выполнить функцию будильника

}

}
void alarmmode() // функция будильника

{

water_level = analogRead(WL_sensor); //передача данных датчика уровня воды в локальную переменную

if (digitalRead(mov_sensor)) // оценка захваченного движения {

digitalWrite(LEDalrm, HIGH);

digitalWrite(buzzer, HIGH);

}

else

{

digitalWrite(LEDalrm, LOW);

digitalWrite(buzzer, LOW);

}

if (water_level > 100) // контроль уровня воды

{

digitalWrite(Wpump, HIGH);

}

else

{

digitalWrite(Wpump, LOW);

}

}
void automaticmode() // автоматическая функция

{

LDRvalue = analogRead(LDRsensor); //данные о пропускании естественного света в локальную переменную water_level = AnalogRead(WL_sensor); //передача данных датчика уровня воды в локальную переменную

temp = analogRead(temp_sensor); //данные передачи датчика температуры в локальную переменную temp = temp*0.4883; //корректировка значения температуры digitalWrite(LEDalrm, LOW);

digitalWrite(buzzer, LOW);

lcd.setCursor(0,0);

lcd.print("Temperature");

lcd.setCursor(0,1);

lcd.print(temp); //ЖК-дисплей – показывает значение температуры

lcd.setCursor(7,1);

lcd.print("ºC");


if (water_level > 100) // контроль уровня воды

{

digitalWrite(Wpump, HIGH);

}

else

{

digitalWrite(Wpump, LOW);

}


if ((LDRvalue < 1023) & (LDRvalue >= 822)) // управление освещением {

digitalWrite(LED1, LOW);

digitalWrite(LED2, LOW);

digitalWrite(LED3, LOW);

digitalWrite(LED4, LOW);

}

else if ((LDRvalue < 821)& (LDRvalue >= 617))

{

digitalWrite(LED1, HIGH);

digitalWrite(LED2, LOW);

digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);

}

else if ((LDRvalue < 616)& (LDRvalue >= 412))

{

digitalWrite(LED1, HIGH);

digitalWrite(LED2, HIGH);

digitalWrite(LED3, LOW);

digitalWrite(LED4, LOW);

}

else if ((LDRvalue < 411)& (LDRvalue >= 206))

{

digitalWrite(LED1, HIGH);

digitalWrite(LED2, HIGH);

digitalWrite(LED3, HIGH);

digitalWrite(LED4, LOW);

}

else if (LDRvalue < 205)

{

digitalWrite(LED1, HIGH);

digitalWrite(LED2, HIGH);

digitalWrite(LED3, HIGH);

digitalWrite(LED4, HIGH);

}


if (temp >= threshold) // контроль температуры

{

digitalWrite(fan, HIGH);

}

else if (temp < threshold)

{

digitalWrite(fan, LOW);

}

}

 

void remotemode() // удаленная функция

{

digitalWrite(LED1, LOW);

digitalWrite(LED2, LOW);

digitalWrite(LED3, LOW);

digitalWrite(LED4, LOW);

digitalWrite(fan, LOW);

digitalWrite(Wpump, LOW);

digitalWrite(LEDalrm, LOW);

digitalWrite(buzzer, LOW);


if(BT.available()>0)

{

state = BT.read(); //передаем данные, отправленные приложением, в локальную переменную

}


if (state == 'D') //работа исполнительных механизмов в соответствии с полученными приказами {

digitalWrite(LED1, LOW);

}

else

if (state == 'C')

{

digitalWrite(LED1, HIGH);

}

else

if (state == 'F')

{

digitalWrite(LED2, LOW);

}

else

if (state == 'E')

{

digitalWrite(LED2, HIGH);

}

else

if (state == 'H')
{

digitalWrite(LED3, LOW);

}

else

if (state == 'G')

{

digitalWrite(LED3, HIGH);

}

else

if (state == 'J')

{

digitalWrite(LED4, LOW);

}

else

if (state == 'I')

{

digitalWrite(LED4, HIGH);

}

else

if (state == 'L')

{

digitalWrite(fan, LOW);

}

else

if (state == 'K')

{

digitalWrite(fan, HIGH);

}

else

if (state == 'N')

{

digitalWrite(Wpump, LOW);

}

else

if (state == 'M')

{

digitalWrite(Wpump, HIGH);

}
if (state == 'O')

{

digitalWrite(LED1, HIGH);

digitalWrite(LED2, HIGH);

digitalWrite(LED3, HIGH);

digitalWrite(LED4, HIGH);

}

else

if (state == 'P')

{

digitalWrite(LED1, LOW);

digitalWrite(LED2, LOW);

digitalWrite(LED3, LOW);

digitalWrite(LED4, LOW);

}


}

, 👍0

Обсуждение

в чем ошибка? ... вы включили только небольшую часть сообщения об ошибке .... также отформатируйте код так, чтобы он был разборчивым, @jsotola

Если вы запустите автоформатер в среде IDE (Ctrl-T), ваша ошибка должна стать очевидной., @Edgar Bonet


1 ответ


1

Основная проблема с вашим кодом — форматирование. Похоже, вам удалось «закомментировать» некоторые из необходимых { или } для некоторых функций и/или блоков if/else, следовательно, не удалось скомпилировать .

например

BT.begin(9600); // устанавливаем скорость передачи данных в битах в секунду (бод) для передачи данных }

} в конце этой конкретной строки является закрывающей фигурной скобкой для функции void setup()... но поскольку она стоит после // для комментария, компилятор его не увидит, поэтому он фактически отсутствует.

Этот код должен теперь компилироваться в вашей системе... как только все отсутствующие { и } будут раскомментированы.

#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7);
SoftwareSerial BT(10, 11); // Контакты Tx и Rx для связи BT const int temp_sensor = 0; //pin A0 (датчик температуры) const int fan = 22; // контакт D2 (вентилятор) float temp; //значение температуры

int threshold = 21; //температурный порог

const int LDRsensor = 1; //pin A1 (датчик освещения)
const int LED1 = 6; // контакт D6 (светодиод 1)
const int LED2 = 7; // контакт D7 (светодиод 2)
const int LED3 = 8; // контакт D8 (светодиод 3)
const int LED4 = 9; // контакт D9 (светодиод 4)
const int WL_sensor = 15; //pin A15 (датчик уровня воды)
const int Wpump = 13; // контакт D13 (водяной насос)
const int mov_sensor = 3; // контакт D3 (датчик движения)
const int LEDalrm = 4; // контакт D4 (сигнальный светодиод)
const int buzzer = 5; // контакт D5 (зуммер)

int LDRvalue; //значение естественного освещения
float water_level; //значение уровня воды
int mov_value; //значение движения (true или false)

char state; //данные отправлены из приложения
char mode;   //режим, выбранный в соответствии с "состоянием" значение порядка символов; //приказ исполнительным механизмам согласно "состоянию" ценность

void setup() //эта функция выполняется только один раз
{
    lcd.begin(16, 2);
    lcd.setBacklightPin(3, POSITIVE);
    lcd.setBacklight(HIGH);

    lcd.setCursor(0, 0);
    lcd.print("TFG");
    lcd.setCursor(0, 1);
    lcd.print("Anna Merino");

    delay(4000);

    lcd.clear();

    pinMode(temp_sensor, INPUT); //режим датчика температуры
    pinMode(fan, OUTPUT); //режим вентилятора
    pinMode(LDRsensor, INPUT); //Режим датчика освещения
    pinMode(LED1, OUTPUT); //Режим LED1
    pinMode(LED2, OUTPUT); //Режим LED2
    pinMode(LED3, OUTPUT); //Режим LED3
    pinMode(LED4, OUTPUT); //Режим LED4
    pinMode(WL_sensor, INPUT); //режим датчика уровня воды
    pinMode(Wpump, OUTPUT); //Режим водяного насоса
    pinMode(mov_sensor, INPUT); //режим датчика движения
    pinMode(LEDalrm, OUTPUT); //режим тревожного светодиода
    pinMode(buzzer, OUTPUT); //режим зуммера

    BT.begin(9600); //установить скорость передачи данных в битах в секунду (бод) для передачи данных
}

void loop() // функциональный цикл — выполняется непрерывно
{
    if (BT.available() > 0)
    {
        state = BT.read(); //передаем данные, отправленные приложением, в локальную переменную
    }

    if (state == 'Y')
    {
        mode = 'A';
    }
    else if (state == 'Z')
    {
        mode = 'R';
    }
    else if (state == 'X')
    {
        mode = 'D';
    }

    if (mode == 'A')
    {
        automaticmode(); //выполнить автоматическую функцию
    }
    else if (mode == 'R')
    {
        remotemode(); //выполнить удаленную функцию
    }
    else if (mode == 'D')
    {
        alarmmode(); //выполнить функцию будильника
    }
}

void alarmmode() // функция будильника
{
    water_level = analogRead(WL_sensor); //передача данных датчика уровня воды в локальную переменную

    if (digitalRead(mov_sensor)) //оценка захваченного движения
    {
        digitalWrite(LEDalrm, HIGH);
        digitalWrite(buzzer, HIGH);
    }
    else
    {
        digitalWrite(LEDalrm, LOW);
        digitalWrite(buzzer, LOW);
    }
    if (water_level > 100) // контроль уровня воды
    {
        digitalWrite(Wpump, HIGH);
    }
    else
    {
        digitalWrite(Wpump, LOW);
    }
}

void automaticmode() // автоматическая функция
{
    LDRvalue = analogRead(LDRsensor); //данные о пропускании естественного света в локальную переменную water_level = AnalogRead(WL_sensor); //передача данных датчика уровня воды в локальную переменную
    temp = analogRead(temp_sensor); //данные передачи датчика температуры в локальную переменную temp = temp*0.4883; //корректировка значения температуры digitalWrite(LEDalrm, LOW);

    digitalWrite(buzzer, LOW);

    lcd.setCursor(0, 0);
    lcd.print("Temperature");

    lcd.setCursor(0, 1);
    lcd.print(temp); //ЖК-дисплей – показывает значение температуры

    lcd.setCursor(7, 1);
    lcd.print("ºC");

    if (water_level > 100) // контроль уровня воды
    {
        digitalWrite(Wpump, HIGH);
    }
    else
    {
        digitalWrite(Wpump, LOW);
    }

    if ((LDRvalue < 1023) & (LDRvalue >= 822)) //управление освещением
    {
        digitalWrite(LED1, LOW);
        digitalWrite(LED2, LOW);
        digitalWrite(LED3, LOW);
        digitalWrite(LED4, LOW);
    }
    else if ((LDRvalue < 821) & (LDRvalue >= 617))
    {
        digitalWrite(LED1, HIGH);
        digitalWrite(LED2, LOW);
        digitalWrite(LED3, LOW);
        digitalWrite(LED4, LOW);
    }
    else if ((LDRvalue < 616) & (LDRvalue >= 412))
    {
        digitalWrite(LED1, HIGH);
        digitalWrite(LED2, HIGH);
        digitalWrite(LED3, LOW);
        digitalWrite(LED4, LOW);
    }
    else if ((LDRvalue < 411) & (LDRvalue >= 206))
    {
        digitalWrite(LED1, HIGH);
        digitalWrite(LED2, HIGH);
        digitalWrite(LED3, HIGH);
        digitalWrite(LED4, LOW);
    }
    else if (LDRvalue < 205)
    {
        digitalWrite(LED1, HIGH);
        digitalWrite(LED2, HIGH);
        digitalWrite(LED3, HIGH);
        digitalWrite(LED4, HIGH);
    }

    if (temp >= threshold) // контроль температуры
    {
        digitalWrite(fan, HIGH);
    }
    else if (temp < threshold)
    {
        digitalWrite(fan, LOW);
    }
}

void remotemode() // удаленная функция
{
    digitalWrite(LED1, LOW);
    digitalWrite(LED2, LOW);
    digitalWrite(LED3, LOW);
    digitalWrite(LED4, LOW);

    digitalWrite(fan, LOW);
    digitalWrite(Wpump, LOW);
    digitalWrite(LEDalrm, LOW);
    digitalWrite(buzzer, LOW);

    if (BT.available() > 0)
    {
        state = BT.read(); //передаем данные, отправленные приложением, в локальную переменную
    }

    if (state == 'D') //работа приводов в соответствии с полученными приказами
    {
        digitalWrite(LED1, LOW);
    }
    else if (state == 'C')
    {
        digitalWrite(LED1, HIGH);
    }
    else if (state == 'F')
    {
        digitalWrite(LED2, LOW);
    }
    else if (state == 'E')
    {
        digitalWrite(LED2, HIGH);
    }
    else if (state == 'H')
    {
        digitalWrite(LED3, LOW);
    }
    else if (state == 'G')
    {
        digitalWrite(LED3, HIGH);
    }
    else if (state == 'J')
    {
        digitalWrite(LED4, LOW);
    }
    else if (state == 'I')
    {
        digitalWrite(LED4, HIGH);
    }
    else if (state == 'L')
    {
        digitalWrite(fan, LOW);
    }
    else if (state == 'K')
    {
        digitalWrite(fan, HIGH);
    }
    else if (state == 'N')
    {
        digitalWrite(Wpump, LOW);
    }
    else if (state == 'M')
    {
        digitalWrite(Wpump, HIGH);
    }

    if (state == 'O')
    {
        digitalWrite(LED1, HIGH);
        digitalWrite(LED2, HIGH);
        digitalWrite(LED3, HIGH);
        digitalWrite(LED4, HIGH);
    }
    else if (state == 'P')
    {
        digitalWrite(LED1, LOW);
        digitalWrite(LED2, LOW);
        digitalWrite(LED3, LOW);
        digitalWrite(LED4, LOW);
    }
}

В будущем при публикации вопроса также указывайте, КАКИЕ библиотеки вы используете. например, существует более одной библиотеки LiquidCrystal_I2C... и, вероятно, только одна правильная. Кроме того, это будет только часть сообщения об ошибке. Дайте сообщение целиком, так как конечный бит не имеет большого значения!

,