messu Postat Septembrie 20 Partajează Postat Septembrie 20 Incerc sa conectez un shiled de tipul celui mentionat in titlu, la Arduino 2560 insa fara succes. Acelasi shield, conectat la un Arduino Nano, functioneza perfect. Conectarea la Arduino Nano respectiv Arduino 2560 am facut-o ca in imaginea alaturata. Ideea este ca n-am gasit nicaieri ceva clar despre conectarea pinilor INT si RST in cazul Arduino 2560. De-aia i-am marcat cu ?? La Nano i-am pus la D9 si RST si merge totul brici. Pentru test am folosit, din exemple, fara nico modificare, schita USBHiDBootKbd. Pe Arduino 2560 imi afiseaza pe monitorul serial: OSC din not start. A mai intalnit ciineva problema ? Unde gresesc ? Link spre comentariu
nico_2010 Postat Septembrie 21 Partajează Postat Septembrie 21 Conecteaza-le pe pinii corespunzatori de pe Mega2560, la fel cum le-ai conectat pe Uno. Ai aici pinout-ul Mega2560 si functiile pinilor: https://www.google.com/search?q=arduino+mega2560+pin+interrupt&client=tablet-android-samsung-ss&sca_esv=2b5ce49ea87870d0&sca_upv=1&udm=2&biw=825&bih=1318&sxsrf=ADLYWIJFSrwKnAgbsUi8vuG0TtRygf2yiA%3A1726898096279&ei=sF_uZrrdENG0i-gPvtTIgQU&oq=arduino+mega2560+pin+interrupt&gs_lp=EhNtb2JpbGUtZ3dzLXdpei1zZXJwIh5hcmR1aW5vIG1lZ2EyNTYwIHBpbiBpbnRlcnJ1cHQyCBAAGIAEGKIEMggQABiABBiiBDIIEAAYgAQYogQyCBAAGIAEGKIESIwsUP8IWOkqcAB4AJABAJgBggGgAdgMqgEEMy4xMrgBA8gBAPgBAZgCD6ACwQ3CAgcQABiABBgNwgIGEAAYDRgewgIJEAAYgAQYExgNwgIEECEYCpgDAIgGAZIHBDIuMTOgB6E7&sclient=mobile-gws-wiz-serp#vhid=kXrdmp6LzRAeeM&vssid=mosaic Link spre comentariu
messu Postat Septembrie 21 Autor Partajează Postat Septembrie 21 (editat) Exact asta am făcut. De asta am și pus imaginea cu corespondenta pinilor. Nu merge , din păcate. Suspectez o alocare diferită a pinilor , de la un model de Arduino la altul, în librărie, dar trebuie sa mai investighez... Speram sa mai fi întâlnit cineva problema și să scap mai simplu Editat Septembrie 21 de messu Link spre comentariu
Stefan Postat Septembrie 21 Partajează Postat Septembrie 21 @messu incercati cu RST la 7 și INT la 9. Acum scriu de pe telefon dar o sa verific mai atent când ajung ajung acasă. Link spre comentariu
merck Postat Septembrie 21 Partajează Postat Septembrie 21 (editat) @messu pune codul aici de la Nano, daca nu merge cu pinul 20 -> vrea pinul 52 de la Mega care este folosit si de SCK. Incearca sa vezi in prima faza daca merge cu pinul 20. Editat Septembrie 21 de merck Link spre comentariu
messu Postat Septembrie 21 Autor Partajează Postat Septembrie 21 Am incercat cu cu RST la 7 și INT la 9, dar nu s-a schimbat nimic. Nici CLK pe pinul 20 nu vrea. Am gasit, intr-adevar, in librarie, un fisier de configurare. Se cheama usbcore.h si contine alocarea pinilor SS si INT, pentru fieare tip de placa Arduino suportata de catre USB shield. Problema este ca atat UNO cat si 2560 au aceiasi pini alocati (10 si 9) dar de functionat nu functioneaza decat pe UNO (NANO in cazul meu). Cred ca fac ceva rau, dar nu-mi dau seama ce, in momentul asta. Tre sa mai studiez... Codul care functioneza perfect pe NANO este cel de mai jos. Este un exemplu inclus in librarie la care eu n-am modificat absolut nimic. #include <hidboot.h> #include <usbhub.h> // Satisfy the IDE, which needs to see the include statment in the ino too. #ifdef dobogusinclude #include <spi4teensy3.h> #endif #include <SPI.h> class KbdRptParser : public KeyboardReportParser { void PrintKey(uint8_t mod, uint8_t key); protected: void OnControlKeysChanged(uint8_t before, uint8_t after); void OnKeyDown (uint8_t mod, uint8_t key); void OnKeyUp (uint8_t mod, uint8_t key); void OnKeyPressed(uint8_t key); }; void KbdRptParser::PrintKey(uint8_t m, uint8_t key) { MODIFIERKEYS mod; *((uint8_t*)&mod) = m; Serial.print((mod.bmLeftCtrl == 1) ? "C" : " "); Serial.print((mod.bmLeftShift == 1) ? "S" : " "); Serial.print((mod.bmLeftAlt == 1) ? "A" : " "); Serial.print((mod.bmLeftGUI == 1) ? "G" : " "); Serial.print(" >"); PrintHex<uint8_t>(key, 0x80); Serial.print("< "); Serial.print((mod.bmRightCtrl == 1) ? "C" : " "); Serial.print((mod.bmRightShift == 1) ? "S" : " "); Serial.print((mod.bmRightAlt == 1) ? "A" : " "); Serial.println((mod.bmRightGUI == 1) ? "G" : " "); }; void KbdRptParser::OnKeyDown(uint8_t mod, uint8_t key) { Serial.print("DN "); PrintKey(mod, key); uint8_t c = OemToAscii(mod, key); if (c) OnKeyPressed(c); } void KbdRptParser::OnControlKeysChanged(uint8_t before, uint8_t after) { MODIFIERKEYS beforeMod; *((uint8_t*)&beforeMod) = before; MODIFIERKEYS afterMod; *((uint8_t*)&afterMod) = after; if (beforeMod.bmLeftCtrl != afterMod.bmLeftCtrl) { Serial.println("LeftCtrl changed"); } if (beforeMod.bmLeftShift != afterMod.bmLeftShift) { Serial.println("LeftShift changed"); } if (beforeMod.bmLeftAlt != afterMod.bmLeftAlt) { Serial.println("LeftAlt changed"); } if (beforeMod.bmLeftGUI != afterMod.bmLeftGUI) { Serial.println("LeftGUI changed"); } if (beforeMod.bmRightCtrl != afterMod.bmRightCtrl) { Serial.println("RightCtrl changed"); } if (beforeMod.bmRightShift != afterMod.bmRightShift) { Serial.println("RightShift changed"); } if (beforeMod.bmRightAlt != afterMod.bmRightAlt) { Serial.println("RightAlt changed"); } if (beforeMod.bmRightGUI != afterMod.bmRightGUI) { Serial.println("RightGUI changed"); } } void KbdRptParser::OnKeyUp(uint8_t mod, uint8_t key) { Serial.print("UP "); PrintKey(mod, key); } void KbdRptParser::OnKeyPressed(uint8_t key) { Serial.print("ASCII: "); Serial.println((char)key); }; USB Usb; //USBHub Hub(&Usb); HIDBoot<USB_HID_PROTOCOL_KEYBOARD> HidKeyboard(&Usb); KbdRptParser Prs; void setup() { Serial.begin( 115200 ); #if !defined(__MIPSEL__) while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection #endif Serial.println("Start"); if (Usb.Init() == -1) Serial.println("OSC did not start."); delay( 200 ); HidKeyboard.SetReportParser(0, &Prs); } void loop() { Usb.Task(); } Link spre comentariu
teomishu Postat Septembrie 21 Partajează Postat Septembrie 21 Nu gresesti cumva la alimentarea modulului USB ? Link spre comentariu
messu Postat Septembrie 21 Autor Partajează Postat Septembrie 21 Nu cred. Și cu NANO fac la fel și merge. Conectez Arduino la PC pe port uSB, că sa am și monitorizarea serială și din placa arduino trag 3v3 și 5v pentru usb shield Link spre comentariu
merck Postat Septembrie 21 Partajează Postat Septembrie 21 #include <SPI.h> Adaugi asta: #define INT_PIN 2 // Explicitly define D2 (INT0) for Arduino Mega 2560 ........................... USB Usb; //USBHub Hub(&Usb); HIDBoot<USB_HID_PROTOCOL_KEYBOARD> HidKeyboard(&Usb); KbdRptParser Prs; Adaugi asta: void interruptServiceRoutine() { Serial.println("Interrupt triggered!"); } void setup() { ............ HidKeyboard.SetReportParser(0, &Prs); Adaugi asta: pinMode(INT_PIN, INPUT); // Set D2 (INT0) as input si asta: attachInterrupt(digitalPinToInterrupt(INT_PIN), interruptServiceRoutine, RISING); } Aduaga ce am scris mai sus sa vedem daca merge cu D2 (pinul 2) Link spre comentariu
messu Postat Septembrie 22 Autor Partajează Postat Septembrie 22 Am facut proba cu #define INT_PIN 2 si, din pacate nu este nicio schimbare. Mai mult, am constatat ca pe Arduino NANO functioneaza inclusiv cu pinul INT in aer, neconectat. Nu stiu ce sa mai cred. Stiu ca am un Mega Pro MIni, pe undeva si ma gandesc sa incerc si cu el, poate are ceva placa asta. Link spre comentariu
messu Postat Septembrie 22 Autor Partajează Postat Septembrie 22 Haideti c-am lamurit treaba. Gandul de pe urma, ca de obicei... Placa Arduino Mega, n-are nicio problema. Am gresit "un pic" la pini. Alocarea pinului SS este diferita la cele doua placi fata de ce scrie in librarie. La NANO, pinul SS este este 10 si alocarea in librarie este tot 10. La MEGA pinul SS este 53 si eu am mers direct pe el, desi libraria aloca CLAR pinul 10. De aici greseala. In concluzie, pentru cine se mai loveste de problema, conectarea corecta este cea din imaginea pe care o atasez. Multumesc tuturor pentru ajutor si implicare ! Link spre comentariu
teomishu Postat Septembrie 22 Partajează Postat Septembrie 22 1 hour ago, messu said: Alocarea pinului SS este diferita la cele doua placi fata de ce scrie in librarie. Eu nu cred ca cei care au scris libraria au gresit. Poate nu ai ales corect cipul cand ai compilat. Link spre comentariu
Stefan Postat Septembrie 22 Partajează Postat Septembrie 22 Acum 6 minute, teomishu a spus: Eu nu cred ca cei care au scris libraria au gresit. Poate nu ai ales corect cipul cand ai compilat. În IDE-ul de la Arduino nu îți alegi chipul ci modelul plăcii, astfel se alege în mod automat și modelul chipului care din câte știu eu este unul singur pentru Arduino Mega. Ciudat că au ales pinul respectiv pentru SS/CS, înseamnă că au implementat SPI software. Link spre comentariu
teomishu Postat Septembrie 22 Partajează Postat Septembrie 22 (editat) Oricum SS/CS nu conteaza daca pe magistrala SPI nu este pus si altceva. Adica se poate pune la GND pe modulul USB fara sa mai fie legat la Mega. @messu, merge si asa ? Editat Septembrie 22 de teomishu Link spre comentariu
messu Postat Septembrie 22 Autor Partajează Postat Septembrie 22 O sa încerc și revin cu rezultatul Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum