Marek2115 Napisano Luty 6, 2022 Udostępnij Napisano Luty 6, 2022 Dzień Dobry Mam problem z kompilacją wyskakuje mi taki błąd libraries\VirtualWire\VirtualWire.cpp.o (symbol from plugin): In function `crc16_update(unsigned int, unsigned char)': (.text+0x0): multiple definition of `__vector_11' libraries\Servo\avr\Servo.cpp.o (symbol from plugin):(.text+0x0): first defined here collect2.exe: error: ld returned 1 exit status exit status 1 Błąd kompilacji dla płytki Arduino Uno. powodowany jest on przez zainkludowanie biblioteki servo mógł by mi go ktoś przetłumaczyć? oto kod // receiver #include <Servo.h> #include <VirtualWire.h> Servo myservo; void setup() { Serial.begin(9600); myservo.attach(9); vw_set_ptt_inverted(true); vw_setup(2000); vw_rx_start(); } void loop() { uint8_t buf[VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN; check(); if (vw_get_message(buf, &buflen)) { int i; int lvl; digitalWrite(13, true); if(buf[0] == 68) { up(); } if(buf[0]== 85) { down(); } digitalWrite(13, false); } } void up() { int lvl; if(lvl <= 6) { lvl += 1; check(); } else { lvl = 1; } } void down() { int lvl; if(lvl <= 1) { lvl -= 1; check(); } else { lvl = 6; } } void check() { int lvl; if (lvl == 1) { myservo.write(30); } if (lvl == 2) { myservo.write(60); } if (lvl == 3) { myservo.write(90); } if (lvl == 4) { myservo.write(120); } if (lvl == 5) { myservo.write(150); } if (lvl == 6) { myservo.write(180); } } gdy nie mam dołączonej biblioteki servo to kompilacja przechodzi Proszę po pomoc bardziej doświadczonych użytkowników Link do komentarza Share on other sites More sharing options...
farmaceuta Luty 6, 2022 Udostępnij Luty 6, 2022 (edytowany) Nie znam sie na tych bledach, ale wogole masz zainstalowana biblioteke?? I sprawdz czy sama biblioteka servo przejdzie.. Edytowano Luty 6, 2022 przez farmaceuta Link do komentarza Share on other sites More sharing options...
ethanak Luty 6, 2022 Udostępnij Luty 6, 2022 Wygląda na to że te biblioteki po prostu gryzą się ze sobą - nie wszystkie można stosować razem, a szczególnie biblioteka servo jest pod tym względem kapryśna. Link do komentarza Share on other sites More sharing options...
_LM_ Luty 6, 2022 Udostępnij Luty 6, 2022 Multiple definition vector 11 może sugerować że obie biblioteki korzystają z tego samego przerwania. Trzeba by sprawdzić do czego jest vector11 1 Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
_LM_ Luty 6, 2022 Udostępnij Luty 6, 2022 https://ece-classes.usc.edu/ee459/library/documents/avr_intr_vectors/ 11 jest od icp 2 Link do komentarza Share on other sites More sharing options...
_LM_ Luty 6, 2022 Udostępnij Luty 6, 2022 Ten program i tak niema szans działać, masz błąd w funkcjach check, up, down skąd niby zmienne lvl mają pobierać jakieś wartości? Toż tam zawsze będzie zero. 1 Link do komentarza Share on other sites More sharing options...
Elvis Luty 6, 2022 Udostępnij Luty 6, 2022 @_LM_ dlaczego zero? Link do komentarza Share on other sites More sharing options...
99teki Luty 6, 2022 Udostępnij Luty 6, 2022 (edytowany) - bo int lvl; powinno być globalne a nie lokalne dla podprogramu - jak byś napisał lvl = lvl +1 a potem Serial.println(lvl); - to byś widział czy lvl reaguje na zmiany w przebiegu programu zgodne z założeniami Edytowano Luty 6, 2022 przez 99teki Link do komentarza Share on other sites More sharing options...
Marek2115 Luty 6, 2022 Autor tematu Udostępnij Luty 6, 2022 1 godzinę temu, farmaceuta napisał: Nie znam sie na tych bledach, ale wogole masz zainstalowana biblioteke?? I sprawdz czy sama biblioteka servo przejdzie.. mam zainstalowana bibliotekę servo Link do komentarza Share on other sites More sharing options...
Elvis Luty 6, 2022 Udostępnij Luty 6, 2022 Na razie jest lokalne, a kolega @_LM_ napisał że ma wartość zero. Więc pytam dlaczego akurat zero? Link do komentarza Share on other sites More sharing options...
_LM_ Luty 6, 2022 Udostępnij Luty 6, 2022 10 minut temu, Elvis napisał: dlaczego zero? Racja, ta zmienna będzie miała przypadkową wartość bo nie jest zainicjowana, mój błąd. 3 minuty temu, 99teki napisał: bo int lvl; powinno być globalne a nie lokalne dla podprogramu Powinna być w argumencie funkcji lub static 1 Link do komentarza Share on other sites More sharing options...
Marek2115 Luty 6, 2022 Autor tematu Udostępnij Luty 6, 2022 59 minut temu, _LM_ napisał: Ten program i tak niema szans działać, masz błąd w funkcjach check, up, down skąd niby zmienne lvl mają pobierać jakieś wartości? Toż tam zawsze będzie zero. mam plan taki jak kliknę to za kazdym razem przełączam servo od dana ilosc Link do komentarza Share on other sites More sharing options...
Marek2115 Luty 6, 2022 Autor tematu Udostępnij Luty 6, 2022 @_LM_ dziekuje za zauważenie zaraz zmieniam na globalna Link do komentarza Share on other sites More sharing options...
_LM_ Luty 6, 2022 Udostępnij Luty 6, 2022 (edytowany) Nie rób głupot, weź przerób funckje tak aby dostawały argument. Coś w stylu up(int lvl) Edytowano Luty 6, 2022 przez _LM_ Link do komentarza Share on other sites More sharing options...
_LM_ Luty 6, 2022 Udostępnij Luty 6, 2022 Ale i tak wpierw należałoby się uporać z błędem kompilacji Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »