Подскажите почему не компилируется?
- Войдите на сайт для отправки комментариев
Вс, 05/07/2015 - 18:13
This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Arduino: 1.0.6 (Windows 7), Board: "Arduino Uno"
In file included from Aquacontroller_ino.ino:4:
C:\arduino-1.0.6\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:81: error: conflicting return type specified for 'virtual void LiquidCrystal_I2C::write(uint8_t)'
C:\arduino-1.0.6\hardware\arduino\cores\arduino/Print.h:48: error: overriding 'virtual size_t Print::write(uint8_t)'
Потому что компилятор выявил две ошибки в исходнике.
Потому что компилятор выявил две ошибки в исходнике.
Кэп?
а вот ты исправь ошибки не видя кода. слабо? :)
А это уже не для КО задача.
Ща ясновидящие подтянутся и сделают всю черновую работу.
:))) извеняюсь что сразу код не выложил, вот выкладываю, помогите найти ошибки пожалуйста
#include <DS1307new.h> // for clock #include <Wire.h> // for i2c protocol #include <OneWire.h> // for DS18B20 #include <LiquidCrystal_I2C.h> // for 1602 #include <SPI.h> #include <Ethernet.h> float maxF=0, minF=212; //переменные для макс и мин температуры отображаемой на страничке int startLight =18; //время включения света int endLight =23; //время выключения света int LCDLightON =16; //время включения подсветки LCD int LCDLightOFF =23; //время выключения подсветки LCD OneWire ds(6); // on pin 10 (a 4.7K resistor is necessary) int ledPin = 8; // pin for LED int LedStatus = 0; int sensorPin = A0; // датчик света unsigned int sensorValue = 0;// цифровое значение фоторезистора LiquidCrystal_I2C lcd(0x20,16,2); // 0x20 is adresss for LCC 16x2 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192,168,2,120); EthernetServer server(80); byte grad[8] = { // рисует значек градуса B01110, B10001, B10001, B01110, B00000, B00000, B00000, }; int ics =0; //count number of sensor //--------------------Переменные для Uptime--------------------- long previousMillis = 0;//переменная для хранения значений таймера int day=0;//значение дней int hour=0;//значение часов int min=0;//значение минут int second=0;//значение сукунд //--------------------Переменные для Uptime КОНЕЦ------------- void setup(){ pinMode(ledPin, OUTPUT); Serial.begin(9600); lcd.init(); lcd.backlight(); //backlight is now ON // set up the LCD's number of columns and rows: lcd.createChar(0, grad); lcd.begin(16, 2); /* Print a logo message to the LCD. lcd.print("AQUACONTROLLER"); lcd.setCursor(0, 1); lcd.print("by iWizard"); delay (2500); lcd.clear(); */ while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } // start the Ethernet connection and the server: Ethernet.begin(mac, ip); server.begin(); } void loop(){ byte i; byte present = 0; byte type_s; byte data[12]; byte addr[8]; float celsius; if ( !ds.search(addr)) { lcd.setCursor(0, 1); ds.reset_search(); ics=0; sensorValue = analogRead(sensorPin); // считываем значение с фоторезистора if (RTC.hour >= startLight && RTC.hour <= endLight) digitalWrite(ledPin, HIGH); //устанавливаем время и зажигаем светодиод else digitalWrite(ledPin, LOW); // тушим светодиод if (RTC.hour >= LCDLightON && RTC.hour <= LCDLightOFF) lcd.backlight(); //устанавливаем время и зажигаем подсветку LCD else lcd.noBacklight(); // тушим подсветку LCD ///--------------------------------КОД ДЛЯ UPTIME-------------------------------/// if (millis() - previousMillis >500) { previousMillis = millis(); //запускаем таймер second++;//переменная секунда + 1 } if(second>59)//если переменная секунда больше 59 ... { second=0;//сбрасываем ее на 0 min++;//пишем +1 в переменную минута } if(min>59)//если переменная минута больше 59 ... { min=0;//сбрасываем ее на 0 hour++;//пишем +1 в переменную час } if(hour>23)//если переменная час больше 23 ... { hour=0;//сбрасываем ее на 0 day++;//пишем +1 в переменную час } ///-----------------------------КОД ДЛЯ UPTIME КОНЕЦ----------------------------/// ///-----------------------------НАЧАЛО КОДА ЧАСОВ------------------------------/// RTC.getTime(); if (RTC.hour < 10) { Serial.println(); Serial.print("0"); Serial.print(RTC.hour, DEC); } else { Serial.print(RTC.hour, DEC); } Serial.print(":"); if (RTC.minute < 10) Serial.print("0"); Serial.print(RTC.minute, DEC); Serial.print(":"); if (RTC.second < 10) Serial.print("0"); Serial.print(RTC.second, DEC); Serial.print(" "); if (RTC.day < 10) Serial.print("0"); Serial.print(RTC.day, DEC); Serial.print("-"); if (RTC.month < 10) Serial.print("0"); Serial.print(RTC.month, DEC); Serial.print("-"); Serial.print(RTC.year, DEC); Serial.print(" "); Serial.print("-"); switch (RTC.dow) { case 0: Serial.print("SUN "); break; case 1: Serial.print("MON "); break; case 2: Serial.print("TUE "); break; case 3: Serial.print("WED "); break; case 4: Serial.print("THU "); break; case 5: Serial.print("FRI "); break; case 6: Serial.print("SAT "); break; } ics++; ds.reset(); ds.select(addr); ds.write(0x44, 1); // start conversion, with parasite power on at the end delay(750); // maybe 750ms is enough, maybe not // we might do a ds.depower() here, but the reset will take care of it. present = ds.reset(); ds.select(addr); ds.write(0xBE); // Read Scratchpad for ( i = 0; i < 9; i++) { // we need 9 bytes data[i] = ds.read(); } // Convert the data to actual temperature // because the result is a 16 bit signed integer, it should // be stored to an "int16_t" type, which is always 16 bits // even when compiled on a 32 bit processor. int16_t raw = (data[1] << 8) | data[0]; if (type_s) { raw = raw << 3; // 9 bit resolution default if (data[7] == 0x10) { // "count remain" gives full 12 bit resolution raw = (raw & 0xFFF0) + 12 - data[6]; } } else { byte cfg = (data[4] & 0x60); // at lower res, the low bits are undefined, so let's zero them if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms //// default is 12 bit resolution, 750 ms conversion time } celsius = (float)raw / 16.0; lcd.setCursor(0,0); lcd.print("Temp"); lcd.print(" = "); lcd.print(celsius); lcd.write(byte(0)); lcd.print("C"); Serial.print(celsius); Serial.print("C, "); //вывод часов на дисплей// lcd.setCursor(0, 1); if(RTC.hour<10)lcd.print(0); lcd.print(RTC.hour); lcd.print(":"); //lcd.print( (RTC.second %2 )?" ":":"); //мигать двоеточием if(RTC.minute<10)lcd.print(0); lcd.print(RTC.minute); lcd.setCursor(10, 1); switch (RTC.dow) // Friendly printout the weekday { case 0: lcd.print("SUN"); break; case 1: lcd.print("MON"); break; case 2: lcd.print("TUE"); break; case 3: lcd.print("WED"); break; case 4: lcd.print("THU"); break; case 5: lcd.print("FRI"); break; case 6: lcd.print("SAT"); break; } lcd.print("-"); lcd.print(RTC.day); // listen for incoming clients EthernetClient client = server.available(); if (client) { Serial.println("new client"); // an http request ends with a blank line boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); Serial.write(c); // if you've gotten to the end of the line (received a newline // character) and the line is blank, the http request has ended, // so you can send a reply //if (c == '\n' && currentLineIsBlank) { // send a standard http response header client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("<head> "); client.println("<meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> "); client.println("<title> Arduino :: Акваконтролеер</title>"); client.println("</head> "); client.println("<body bgcolor=\"#9bbad6\">"); // цвет фона client.println("Connection: close"); // the connection will be closed after completion of the response client.println("Refresh: 10"); // refresh the page automatically every 5 sec client.println(); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<center>"); // output the value of each analog input pin for (int analogChannel = 0; analogChannel < 1; analogChannel++) { int sensorReading = analogRead(analogChannel); client.println("<H1>"); client.print(RTC.hour, DEC); client.print(":"); if (RTC.minute < 10) client.print("0"); client.print(RTC.minute, DEC); client.println("<br>"); client.println("</h1>"); client.println("<h2>"); if (RTC.day < 10) client.print("0"); client.print(RTC.day, DEC); client.print(" "); // if (RTC.month < 10) client.print("0"); // client.print(RTC.month, DEC); switch (RTC.month) { case 1: client.print("Января"); break; case 2: client.print("Февраля"); break; case 3: client.print("Марта"); break; case 4: client.print("Апреля"); break; case 5: client.print("Мая"); break; case 6: client.print("Июня"); break; case 7: client.print("Июля"); break; case 8: client.print("Августа"); break; case 9: client.print("Сентября"); break; case 10: client.print("Октября"); break; case 11: client.print("Ноября"); break; case 12: client.print("Декабря"); break; } client.print(" "); client.print(RTC.year, DEC); client.print(" "); client.print(", "); switch (RTC.dow) { case 0: client.print("Воскресенье"); break; case 1: client.print("Понедельник"); break; case 2: client.print("Вторник"); break; case 3: client.print("Среда"); break; case 4: client.print("Четверг"); break; case 5: client.print("Пятница"); break; case 6: client.print("Суббота"); break; } client.println("</h2>"); client.println("<br>"); client.println("<h3>"); client.print("Температура"); client.print(" = "); client.print(celsius); client.write(byte(0)); client.print("°C"); client.println("</h3>"); // client.print(", "); if (celsius>maxF) {maxF=celsius;} //check for max temp if (celsius<minF) {minF=celsius;} //check for min temp client.print("Макс="); client.print(maxF); client.print("°C "); client.print("Мин="); client.print(minF); client.print("°C "); client.print(", Датчик№"); client.print(ics); //показывает номер датчика client.println("<br>"); if ( digitalRead(ledPin) == HIGH ) { client.print ("Подсветка <font color=’green’>включена</font>"); } if ( digitalRead(ledPin) == LOW ) { client.print ("Подсветка <font color=’red’>выключена</font>"); } client.println("<br>"); client.print("Время включения света: "); client.print(startLight); client.print(" часов."); client.println("<br>"); client.print("Время выключения света: "); client.print(endLight); client.print(" часов."); client.println("<br>"); client.print("Уровень света:"); client.print(sensorValue); client.println("<br>"); client.print("Uptime: "); client.print(day); client.print(" дней "); client.print(hour); client.print(" часов "); client.print(min); client.print(" минут "); client.print(second); client.print(" секунд "); client.println("<br>"); client.print("IP адрес: "); client.print(Ethernet.localIP()); client.println("<br>"); client.print("Ver. v 0.0.9 "); } client.println("</center>"); client.println("</html>"); break; } } delay(500); client.stop(); Serial.println("client disonnected"); } } }Какая-та проблема с библиотекой для дисплея.
а у меня как у новичка нет не какой ошибки)
скетч рабочий не какой ошибки не показывает(
Насколько помню, это может быть связано с версией ArduinoIDE
у меня последняя версия
Спасибо! буду качать оболочку постарше, вечером отпишусь что получится
И по первой ошибке. Присмотритесь. Компилятор указывает на то, что функция write() в библиотеке типа "Статическая" , а у вас в опубликованном скетче пользуется везде метод, как понимаю... оно точно определено как метод, а не статическая процедура? Посмотрите внимательно в библиотеке.
Интересно то что раньше компилировалось все, с полгода назад
возможно что он просто так все методы обозначает, я не вдавался в детали. Тогда, скорее всего ошибка наведенная косяком в типовом print() из-за несовместимости версий ИДЕ и компилятора.
Помогла установка версии оболочки более старой