Problem z kompilacją kodu dla Pro Micro - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Instalacja i rozwiązywanie problemów (https://forum.arduinopolska.pl/dzial-instalacja-i-rozwi%C4%85zywanie-problem%C3%B3w) +--- Wątek: Problem z kompilacją kodu dla Pro Micro (/watek-problem-z-kompilacj%C4%85-kodu-dla-pro-micro) |
Problem z kompilacją kodu dla Pro Micro - DymitrB - 03-08-2018 Dzień dobry wszystkim forumowiczom, Chcieliśmy z bratem stworzyć kontroler do komputera wedle tego poradnika https://www.youtube.com/watch?v=Z7Sc4MJ8RPM Fizycznie powtórzyliśmy wszystko w skali prawie 1:1 ("prawie" tylko dlatego że różnią się same przyciski tj. ilość pinów się zgadza, pozostaje tylko kwestia wyglądu) To nasz pierwszy kontakt z takimi rozwiązaniami. Początkowo kupiliśmy arduino nano, dopiero potem zauważyliśmy, że pomiędzy wersją nano a pro micro występują różnice w pinach (pan w sklepie doradził, że nano w tym przypadku będzie podobne, tak więc poszliśmy za jego radą) Kiedy przyszedł czas na połączenie kabli z arduino okazało się, że brakuje na nim pozycji 15. Nie chcieliśmy kombinować i poszliśmy na łatwiznę, kupiliśmy dokładnie to co on. Co do kodu również skorzystaliśmy z jego pomocy. No i właśnie od tego momentu wszystko zaczęło się psuć. Pierwszy problem pojawił się już na samym początku, kiedy nie znajdowało nam #include <keypad.h> i #include <joystick.h>. Z tym sobie jakoś poradziłem. Pogooglowałem trochę, i doszedłem do wniosku, że trzeba dodać bibliotekę. Tak więc zrobiłem. Natomiast ten błąd nas już przerasta. W załączniku wrzycamy wszystkie pliki jakich używamy. Nie umiemy sobie z tym poradzić, gdyby ktoś z forumowiczów pomógł, bylibyśmy zobowiązani. Pozdrawiamy Kod: Arduino:1.8.5 (Windows Store 1.8.10.0) (Windows 10), Płytka:"Arduino/Genuino Micro" RE: Problem z kompilacją kodu dla Pro Micro - -adamek - 03-08-2018 "#include <joystick.h>. Z tym sobie jakoś poradziłem. Pogooglowałem trochę, i doszedłem do wniosku, że trzeba dodać bibliotekę." Poradziłem sobie chyba nie do końca ? skąd wzięli ten joystick.h ? . Z tego foldera "ArduinoJoystickLibrary-master" trzeba skopiować "Joystick" i wkleić do folderu bibliotek ,nie używam tego systemu więc konkretnie nie podam miejsca. RE: Problem z kompilacją kodu dla Pro Micro - DymitrB - 03-08-2018 (03-08-2018, 14:25)-adamek napisał(a): "#include <joystick.h>. Z tym sobie jakoś poradziłem. Pogooglowałem trochę, i doszedłem do wniosku, że trzeba dodać bibliotekę." Poradziłem sobie chyba nie do końca ? skąd wzięli ten joystick.h ? . Z tego foldera "ArduinoJoystickLibrary-master" trzeba skopiować "Joystick" i wkleić do folderu bibliotek ,nie używam tego systemu więc konkretnie nie podam miejsca. Zrobiłem tak z folderem joystick, w tym moemencie kod błędu wygląda tak: Kod: Arduino:1.8.5 (Windows Store 1.8.10.0) (Windows 10), Płytka:"Arduino/Genuino Micro" RE: Problem z kompilacją kodu dla Pro Micro - kaczakat - 03-08-2018 Jak tu zakładasz post to wklej swój szkic, super również biblioteki. Gość na filmie zrobił dobrze, ale Ty jak nie masz pojęcia co piszesz to tak jakbyś przepisywał skrypt po japońsku, może gdzieś brakuje kropeczki (dla Ciebie niewidzialnej) i działać nie będzie. Pewnie dalej brakuje jakiejś biblioteki, tym razem wygląda na to, że w definicjach i w folderze. Jak ktoś robi poradniki na YouTube to czasami zapomni o tym wspomnieć, bo on ma tę bibliotekę od roku, czyli "od zawsze". RE: Problem z kompilacją kodu dla Pro Micro - DymitrB - 03-08-2018 (03-08-2018, 17:20)kaczakat napisał(a): Jak tu zakładasz post to wklej swój szkic, super również biblioteki. Gość na filmie zrobił dobrze, ale Ty jak nie masz pojęcia co piszesz to tak jakbyś przepisywał skrypt po japońsku, może gdzieś brakuje kropeczki (dla Ciebie niewidzialnej) i działać nie będzie. Pewnie dalej brakuje jakiejś biblioteki, tym razem wygląda na to, że w definicjach i w folderze. Tak się składa, że wszystkie pliki jakich użyłem wgrałem w pierwszym poście, skoro ten człowiek zrobił wszystko dobrze, niemożliwym jest żebym przepisał coś źle z tego powodu, że nic nie przepisywałem, kliknąłem tylko w plik o rozszerzeniu .ino i cały kod otworzył się w programie do kodowania. Z tego co czytałem w komentarzach ludzie mieli problemu z tą liniją keypad.h, w wyjaśnieniach dostali taką instrukcję [color=rgba(255, 255, 255, 0.88)]Sketch > Include library > Manage Library > search for Keypad.h Może problem leży w miejscu znajdowania się plików na dysku ? (chodzi mi o biblioteki)[/color] RE: Problem z kompilacją kodu dla Pro Micro - -adamek - 03-08-2018 A keypad jest ten ? http://playground.arduino.cc/uploads/Code/keypad.zip jak nie to usuwamy tamten a kopiujemy ten . Bo z ciekawości kompilowałem to i nie mam żadnych błędów . RE: Problem z kompilacją kodu dla Pro Micro - DymitrB - 03-08-2018 (03-08-2018, 20:21)-adamek napisał(a): A keypad jest ten ? http://playground.arduino.cc/uploads/Code/keypad.zip jak nie to usuwamy tamten a kopiujemy ten . TAK ! O to chodziło. Dzięki wielkie. Już wyjaśniam o co chodzi. Nie użyłem biblioteki o podanej przez Ciebie nazwie, tylko stockowej Keyboard. Teraz wszystko działa oprócz jednego encodera, nie wiem tylko czy to przez kod czy raczej chodzi tu o fizyczne uszkodzenie przez moje lutowanie. Klik enkodera działa ale na obracanie gałką program nie wyłapuje. Do przypisania klawiszy używam JoyToKey RE: Problem z kompilacją kodu dla Pro Micro - kaczakat - 03-08-2018 Gość w opisie filmu dawał link do joystick.h także nie trzeba było nic googlować. Natomiast jest istotne gdzie wgrałeś ten KATALOG Joystick, lokalizacja pewnie zależy od systemu, na Windowsie ma być katalog "../Moje Dokumenty/Arduino/libraries/Joystick". Na Nano to nie miało prawo działać, nawet nie chodzi o piny, ale o to że MICRO i LEONARDO (DUE) mają wbudowany USB w procesor i to jest używane w tym programie. UNO/NANO/PRO MINI/MEGA mają USB tylko do zasilania i komunikacji UART. Nie ja wymyślam zasady jak należy zadawać pytania, szkic ma być w formie do czytania a nie do ściągania, bo ktoś może Ci udzielić odpowiedzi jadąc pociągiem, nie ściągnie, nie rozpakuje i nie wczyta INO w telefonie. Biblioteki w załączniku - super, od razu można sprawdzić czy np. ja nie mam innej. Kod: //BUTTON BOX Niestety masz zapewne złą wersję biblioteki keypad, szukaj innej, u mnie się skompilowało po dodaniu biblioteki Joystick.h. Kod: Sketch uses 9402 bytes (32%) of program storage space. Maximum is 28672 bytes. RE: Problem z kompilacją kodu dla Pro Micro - bathonuk - 23-06-2019 Witam Wszystkich serdecznie. Nie chcę zakładać nowego wątku, ponieważ mój problem jest zbliżony do tego, który miał założyciel tego wątku. Otóż zbudowałem sobie ten sam box z guzikami i przełącznikami do symulatorów jazdy, który można było zobaczyć na filmie powyżej. Zrobiłem wszystko według planów, które kupiłem od AMStudio. Problem zaczyna się przy kompilacji. Cały czas wyskakują mi błędy i jak tylko coś zmienię to one się zmieniają. Zanim wkleję tutaj kod to dodam, że mam już inne Arduino ProMicro, które odpowiada za hamulec ręczny oraz Arduino Uno z dwiema płytkami Motorshield V2, które odpowiadają za silniki wibracyjne. Napisałem to na wszelki wypadek, gdyby coś miało się ze sobą gryźć. Próbowałem już bawić sie bibliotekami, wgrywać nowe, jak również te podane przez twórcę kodu. Pogrzebałem w internecie, ale nie znalazłem rozwiązania mojego problemu. Dodam jeszcze, że totalnie nie znam się na elektronice oraz programowaniu. O to moj kod: #include <Joystick.h> //BUTTON BOX //USE w ProMicro //Tested in WIN10 + Assetto Corsa //AMSTUDIO //20.8.17 #include <Keypad.h> #include <Joystick.h> #define ENABLE_PULLUPS #define NUMROTARIES 4 #define NUMBUTTONS 24 #define NUMROWS 5 #define NUMCOLS 5 byte buttons[NUMROWS][NUMCOLS] = { {0,1,2,3,4}, {5,6,7,8,9}, {10,11,12,13,14}, {15,16,17,18,19}, {20,21,22,23}, }; struct rotariesdef { byte pin1; byte pin2; int ccwchar; int cwchar; volatile unsigned char state; }; rotariesdef rotaries[NUMROTARIES] { {0,1,24,25,0}, {2,3,26,27,0}, {4,5,28,29,0}, {6,7,30,31,0}, }; #define DIR_CCW 0x10 #define DIR_CW 0x20 #define R_START 0x0 #ifdef HALF_STEP #define R_CCW_BEGIN 0x1 #define R_CW_BEGIN 0x2 #define R_START_M 0x3 #define R_CW_BEGIN_M 0x4 #define R_CCW_BEGIN_M 0x5 const unsigned char ttable[6][4] = { // R_START (00) {R_START_M, R_CW_BEGIN, R_CCW_BEGIN, R_START}, // R_CCW_BEGIN {R_START_M | DIR_CCW, R_START, R_CCW_BEGIN, R_START}, // R_CW_BEGIN {R_START_M | DIR_CW, R_CW_BEGIN, R_START, R_START}, // R_START_M (11) {R_START_M, R_CCW_BEGIN_M, R_CW_BEGIN_M, R_START}, // R_CW_BEGIN_M {R_START_M, R_START_M, R_CW_BEGIN_M, R_START | DIR_CW}, // R_CCW_BEGIN_M {R_START_M, R_CCW_BEGIN_M, R_START_M, R_START | DIR_CCW}, }; #else #define R_CW_FINAL 0x1 #define R_CW_BEGIN 0x2 #define R_CW_NEXT 0x3 #define R_CCW_BEGIN 0x4 #define R_CCW_FINAL 0x5 #define R_CCW_NEXT 0x6 const unsigned char ttable[7][4] = { // R_START {R_START, R_CW_BEGIN, R_CCW_BEGIN, R_START}, // R_CW_FINAL {R_CW_NEXT, R_START, R_CW_FINAL, R_START | DIR_CW}, // R_CW_BEGIN {R_CW_NEXT, R_CW_BEGIN, R_START, R_START}, // R_CW_NEXT {R_CW_NEXT, R_CW_BEGIN, R_CW_FINAL, R_START}, // R_CCW_BEGIN {R_CCW_NEXT, R_START, R_CCW_BEGIN, R_START}, // R_CCW_FINAL {R_CCW_NEXT, R_CCW_FINAL, R_START, R_START | DIR_CCW}, // R_CCW_NEXT {R_CCW_NEXT, R_CCW_FINAL, R_CCW_BEGIN, R_START}, }; #endif byte rowPins[NUMROWS] = {21,20,19,18,15}; byte colPins[NUMCOLS] = {14,16,10,9,8}; Keypad buttbx = Keypad( makeKeymap(buttons), rowPins, colPins, NUMROWS, NUMCOLS); Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_JOYSTICK, 32, 0, false, false, false, false, false, false, false, false, false, false, false); void setup() { Joystick.begin(); rotary_init();} void loop() { CheckAllEncoders(); CheckAllButtons(); } void CheckAllButtons(void) { if (buttbx.getKeys()) { for (int i=0; i<LIST_MAX; i++) { if ( buttbx.key[i].stateChanged ) { switch (buttbx.key[i].kstate) { case PRESSED: case HOLD: Joystick.setButton(buttbx.key[i].kchar, 1); break; case RELEASED: case IDLE: Joystick.setButton(buttbx.key[i].kchar, 0); break; } } } } } void rotary_init() { for (int i=0;i<NUMROTARIES;i++) { pinMode(rotaries[i].pin1, INPUT); pinMode(rotaries[i].pin2, INPUT); #ifdef ENABLE_PULLUPS digitalWrite(rotaries[i].pin1, HIGH); digitalWrite(rotaries[i].pin2, HIGH); #endif } } unsigned char rotary_process(int _i) { unsigned char pinstate = (digitalRead(rotaries[_i].pin2) << 1) | digitalRead(rotaries[_i].pin1); rotaries[_i].state = ttable[rotaries[_i].state & 0xf][pinstate]; return (rotaries[_i].state & 0x30); } void CheckAllEncoders(void) { for (int i=0;i<NUMROTARIES;i++) { unsigned char result = rotary_process(i); if (result == DIR_CCW) { Joystick.setButton(rotaries[i].ccwchar, 1); delay(50); Joystick.setButton(rotaries[i].ccwchar, 0); }; if (result == DIR_CW) { Joystick.setButton(rotaries[i].cwchar, 1); delay(50); Joystick.setButton(rotaries[i].cwchar, 0); }; } } A oto błąd który wyskakuje w tej chwili: ARDUINO_BUTTON_BOXV2:97:20: error: 'JOYSTICK_DEFAULT_REPORT_ID' was not declared in this scope Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID, ^ ARDUINO_BUTTON_BOXV2:98:3: error: 'JOYSTICK_TYPE_JOYSTICK' was not declared in this scope JOYSTICK_TYPE_JOYSTICK, 32, 0, ^ exit status 1 'JOYSTICK_DEFAULT_REPORT_ID' was not declared in this scope Z góry dziękuję za pomoc. RE: Problem z kompilacją kodu dla Pro Micro - kaczakat - 23-06-2019 Szkic wkleja się w znaczniki <> CODE w pełnej edycji. W poprzednim moim poście jest kod, który się skompilował u mnie, oczywiście płytką dla której robisz kompilację ma być Leonardo lub PRO MICRO. Skopiuj go i skompiluj. Jeśli się nie skompiluje szukaj dalej bibliotek, jak się skompiluje szukaj błędu w swoim programie. |