Arduino Polska Forum

Pełna wersja: Problem przy kompilacji: collect2.exe: error: ld returned 5 exit status
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam Kolegów.

Arduino 1.8.1 (było też na 1.6.12) 
System: XP sp3

Mam prosty projekt który ma na celu mierzyć temperaturę NTC i wysiedlać na LCD.
Ma tez pokazywać jej wartość minimalną i maksymalną.
Zrobiłem pomiar i wyświetlanie temperatury i wszystko działało poprawnie.
Kompilator zgłaszał że wszystko jest dobrze:


Szkic używa 3902 bajtów (12%) pamięci programu. Maksimum to 30720 bajtów.
Zmienne globalne używają 101 bajtów (4%) pamięci dynamicznej, pozostawiając 1947 bajtów dla zmiennych lokalnych. Maksimum to 2048 bajtów.

Gdy zacząłem dopisywać kolejne zmienne kompilator zaczął głupieć i nie mam już pomysłu co może być tego powodem. Dopisanie jakiekolwiek linii powoduje wywalenie błędu przy kompilacji:

collect2.exe: error: ld returned 5 exit status
exit status 1
Błąd kompilacji dla płytki Arduino Nano.

Jestem początkujący i może błąd jest jakiś prosty. Ale nie mam pomysłu skąd i dlaczego on się pojawia Sad


Kod:
#include <LiquidCrystal.h> //Dołączenie bilbioteki
#include <math.h>

LiquidCrystal lcd(7, 6, 2, 3, 4, 5); //Informacja o podłączeniu nowego wyświetlacza (RS), (Enable), (D4), (D5), (D6), (D7)

double TempNTC;
word Temp;
word Tmin=24;
word Tmax=24;
//word Td=0;

void setup() {
 lcd.begin(16, 2); //Deklaracja typu
 lcd.setCursor(0, 0); //Ustawienie kursora
 lcd.print("    Termomet"); //Wyświetlenie tekstu
 lcd.setCursor(0, 1); //Ustawienie kursora
 lcd.print("   do Zelazek"); //Wyświetlenie tekstu
 delay(3000); //Odczekanie 1 sekundy
 lcd.clear();
 lcd.begin(16, 2); //Deklaracja typu
 lcd.setCursor(0, 0); //Ustawienie kursora
 lcd.print("   ROBOS s.c."); //Wyświetlenie tekstu
 lcd.setCursor(0, 1); //Ustawienie kursora
 lcd.print("     V0.01"); //Wyświetlenie tekstu
 delay(3000); //Odczekanie 1 sekundy
 lcd.clear();
}

double Thermister(int RawADC) {

 // See http://en.wikipedia.org/wiki/Thermistor for explanation of formula
 TempNTC = log(((10240000 / RawADC) - 10000));
 TempNTC = 1 / (0.001129148 + (0.000234125 * TempNTC) + (0.0000000876741 * TempNTC * TempNTC * TempNTC));
 TempNTC = TempNTC - 273.15;           // Convert Kelvin to Celcius
 return TempNTC;
}



void loop() {
 lcd.clear();
 Temp = Thermister(analogRead(0));  // Read sensor

 lcd.setCursor(0, 0); //Ustawienie kursora
 lcd.print (Temp); //Wyświetlenie tekstu
 lcd.print ("C");



 delay(500);
}
Usuń //word td=0
Chyba że funkcja to ma być wyłączona
Zmienna Td nie jest dalej wykorzystywana w programie.
Jak ją odblokujesz i spróbujesz skompilować program to wywala mi błąd kompilacji.
Podobnie jak dopiszesz jakąkolwiek inna linie z obliczeniami lub z obsługa LCD.
Witam,
W setup () masz dwa razy lcd.begin (16,2).
Pozdrawiam.
"Jak ją odblokujesz i spróbujesz skompilować program"

To się kompiluje bezbłędnie .
http://www.mm.pl/~adamp74/arduino/p1a
Podaj całość błędu.
Również wydaje mi się że podwójna inicjalizacja lcd.begin() w funkcji setup() może być powodem tych błędów.