Корявое 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(intSLAYD = 0, boolean FLAG = 0, boolean WORK = 0,intData2[0] = 0,intData3[0] = 0)А с каких пор у loop появились аргументы?
Спасибо большое без вас бы не понял!
loop(intSLAYD = 0, boolean FLAG = 0, boolean WORK = 0,intData2[0] = 0,intData3[0] = 0)А с каких пор у loop появились аргументы?