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 Cytuj 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 Cytuj 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. Cytuj 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 Cytuj 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 Cytuj 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 Cytuj Link do komentarza Share on other sites More sharing options...
Elvis Luty 6, 2022 Udostępnij Luty 6, 2022 @_LM_ dlaczego zero? Cytuj 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 Cytuj 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 Cytuj 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? Cytuj 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 Cytuj 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 Cytuj 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 Cytuj 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_ Cytuj 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 Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!