Ошибка компиляции на 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);
}
}
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
... и, вероятно, только одна правильная. Кроме того, это будет только часть сообщения об ошибке. Дайте сообщение целиком, так как конечный бит не имеет большого значения!
- Как разделить входящую строку?
- Как использовать SPI на Arduino?
- Как сбросить или отформатировать Arduino?
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Arduino Due vs Mega 2560
- Как получить уникальный идентификатор для всех плат Arduino?
- Почему я получаю avrdude: stk500v2_ReceiveMessage(): timeout error when uploading to Arduino Mega?
- Тайм-аут связи Arduino Mega с ошибкой программатора
в чем ошибка? ... вы включили только небольшую часть сообщения об ошибке .... также отформатируйте код так, чтобы он был разборчивым, @jsotola
Если вы запустите автоформатер в среде IDE (Ctrl-T), ваша ошибка должна стать очевидной., @Edgar Bonet