Корявое IDE либо мои руки, помогите с проблемой
- Войдите на сайт для отправки комментариев
Ср, 19/02/2020 - 20:26
вот мой код:
#include <Wire.h> // Подключаем библиотеку для работы с шиной I2C #include <LiquidCrystal_I2C.h> // Подключаем библиотеку для работы с LCD дисплеем по шине I2C #include <OneWire.h> #include <DallasTemperature.h> //подключение библеотек для DS18B20 #include <iarduino_RF433_Transmitter.h> // подкючаем библиотеку для работы с приёмником LiquidCrystal_I2C lcd(0x27,24,4); // Объявляем объект библиотеки, указывая параметры дисплея (адрес I2C = 0x27, количество столбцов = 16, количество строк = 2) iarduino_RF433_Transmitter radio(4); #define ONE_WIRE_BUS 3 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); // Если надпись не появилась, замените адрес 0x27 на 0x3F void setup() { lcd.begin(20,4); // Инициируем работу с LCD дисплеем sensors.begin(); // Запуск термодатчика Serial.begin(9600); pinMode(A1, INPUT); // указываем порт потенцеометра как вход pinMode(1, INPUT); // указываем порт датчика CO2 как вход pinMode(A2, INPUT_PULLUP); // указываем порт кнопки для переключения слайдов как вход и использование резистора ардуино pinMode(2, OUTPUT); // указываем порт передатчика как выход pinMode(A3, INPUT_PULLUP); // указываем порт кнопки для выбора как вход и использование резистора ардуино } void fillBar0(byte start_pos, byte row, byte bar_length, byte fill_percent) { // постройка графиков byte infill = round((float)bar_length * fill_percent / 100); lcd.setCursor(start_pos, row); if (infill == 0) lcd.write(16); else lcd.write(255); for (int n = 1; n < bar_length - 1; n++) { if (n < infill) lcd.write(255); if (n >= infill) lcd.write(16); } if (infill == bar_length) lcd.write(255); else lcd.write(16); } void fillBar1(byte start_pos1, byte row1, byte bar_length1, byte fill_percent1) { // постройка графиков byte infill = round((float)bar_length1 * fill_percent1 / 100); lcd.setCursor(start_pos1, row1); if (infill == 0) lcd.write(16); else lcd.write(255); for (int n1 = 1; n1 < bar_length1 - 1; n1++) { if (n1 < infill) lcd.write(255); if (n1 >= infill) lcd.write(16); } if (infill == bar_length1) lcd.write(255); else lcd.write(16); } void loop(int SLAYD = 0, boolean FLAG = 0, boolean WORK = 0, int Data2[0] = 0, int Data3[0] = 0){ unsigned long TIME; int CO2INFO = digitalRead(1); int BUTTONSLAYD = !digitalRead(A2); if (BUTTONSLAYD == 1 and FLAG == 0) { FLAG = 1; SLAYD += 1; if (SLAYD == 4) { SLAYD = 0; } } if (BUTTONSLAYD == 0 and FLAG == 1) { FLAG = 0; } if (SLAYD == 0 and millis() - TIME > 100000) { TIME = millis(); int CO2INFO = digitalRead(1); sensors.requestTemperatures(); // Отправляем команды для получения температуры int temp = (sensors.getTempCByIndex(0)); lcd.clear(); lcd.setCursor(0, 1); lcd.print(temp, ' C°'); lcd.setCursor(1, 1); lcd.print(CO2INFO, ' CO2'); }else if (SLAYD == 1) { lcd.clear(); fillBar0(0, 0, 10, CO2INFO); fillBar0(0, 1, 16, CO2INFO); delay(50); }else if (SLAYD == 2) { lcd.clear(); int temp = (sensors.getTempCByIndex(0)); fillBar1(0, 0, 10, temp); fillBar1(0, 1, 16, temp); delay(50); }else if (SLAYD == 3) { int POT = analogRead(A1); map(POT, 0, 1023, 0, 2); constrain(POT, 0, 1); boolean VIBOR = !digitalRead(A3); boolean Conn = 0; boolean ON = 0; boolean PULT = 0; if (VIBOR == 1 and POT == 1 and Conn == 1 and ON == 1 and PULT == 0) { int data1[1]; data1[0] = 0; radio.write(&data1, sizeof(data1)); }else if (VIBOR == 1 and POT == 1 and Conn == 1 and ON == 0 and PULT == 0) { int data1[1]; data1[0] = 1; radio.write(&data1, sizeof(data1)); } if (VIBOR == 1 and POT == 0 and Conn == 0) { radio.begin(); // Инициируем работу передатчика radio.setDataRate(i433_1KBPS); // Указываем скорость передачи данных radio.openWritingPipe (5); // Открываем 5 трубу для передачи данных Conn = 1; } lcd.setCursor(0, 0); lcd.print('System: '); if (POT == 0 and PULT == 0) { lcd.setCursor(1, 1); lcd.print('<--'); }else if (POT == 1 and PULT == 0) { lcd.setCursor(1, 2); lcd.print('<--'); }else if (POT == 2) { lcd.setCursor(1, 2); lcd.print('<--'); } if (Conn == 0) { lcd.print('OFLINE'); }else if (Conn == 1) { lcd.print('ONLINE'); } lcd.setCursor(0, 1); lcd.print('Activate the AUTOSENTRYTUREL'); lcd.setCursor(0, 2); lcd.print('Connect to AUTOSENRTYTUREL'); if (POT == 2 and ON == 1 and VIBOR == 1) { PULT = 1; lcd.setCursor(0, 0); lcd.print('Please turn potentiometer to position 90'); lcd.setCursor(0, 1); map(POT, 0, 1023, 0, 180); if (POT != 79) { lcd.print('Potentiometer position ', POT); if (POT == 79) { WORK = 1; } } if (WORK == 1) { Data2[0] = 11; Data3[0] = POT; radio.write(&Data2[0], sizeof(Data2[0])); radio.write(&Data3[0], sizeof(Data3[0])); } } } }
А вот ошибка:
C:\Users\User\AppData\Local\Temp\cc8LD65m.ltrans0.ltrans.o: In function `main':
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/main.cpp:46: undefined reference to `loop'
collect2.exe: error: ld returned 1 exit status
exit status 1
Ошибка компиляции для платы Arduino Uno.
помогите с решением, я второй день не могу понять что тут не так.
У лупа не должно быть параметров, думаю.
loop
(
int
SLAYD = 0, boolean FLAG = 0, boolean WORK = 0,
int
Data2[0] = 0,
int
Data3[0] = 0)
А с каких пор у loop появились аргументы?
Спасибо большое без вас бы не понял!
loop
(
int
SLAYD = 0, boolean FLAG = 0, boolean WORK = 0,
int
Data2[0] = 0,
int
Data3[0] = 0)
А с каких пор у loop появились аргументы?