Корявое IDE либо мои руки, помогите с проблемой

Ya debich
Offline
Зарегистрирован: 19.02.2020
вот мой код:
#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.

помогите с решением, я второй день не могу понять что тут не так.

sadman41
Offline
Зарегистрирован: 19.10.2016

У лупа не должно быть параметров, думаю.

rkit
Онлайн
Зарегистрирован: 23.11.2016

loop(int SLAYD = 0, boolean FLAG = 0, boolean WORK = 0, int Data2[0] = 0, int Data3[0] = 0)

А с каких пор у loop появились аргументы?

Ya debich
Offline
Зарегистрирован: 19.02.2020

Спасибо большое без вас бы не понял!

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

rkit пишет:

loop(int SLAYD = 0, boolean FLAG = 0, boolean WORK = 0, int Data2[0] = 0, int Data3[0] = 0)

А с каких пор у loop появились аргументы?

  Как только чел забывает волшебное слово static