MIICHALUS Napisano 16 września Udostępnij Napisano 16 września Witam Czy istnieje jakiś sposób wywołania przerwania w momencie wciśnięcia jakiegokolwiek przycisku z klawiatury matrycowej 4x4. Zbudowałem sobie pilota IR na arduino pro mini, ale chce go uśpić biblioteką sleep aby wcinał mniej energii i przerwania potrzebuje do wybudzenia układu. Najlepiej jak by to był jakiś programowy sposób bo sprzętowa ingerencja w układ może być ciężka. 1 Link do komentarza Share on other sites More sharing options...
_LM_ 19 września Udostępnij 19 września Klawiatura na ekspanderze czy sterowana bezpośrednio z gpio. Pokaż schemat i program Link do komentarza Share on other sites More sharing options...
MIICHALUS 1 października Autor tematu Udostępnij 1 października Klawiatura jest bezpośrednio podpięta bez ekspandera(wiem ze jest na ekspanderze pin od przerwania ale juz mam gotowy uklad) Układ jak i program jest podstwowy do testów zmontowany.Testy robilem dla spitych wierszy po przez diody do pinu przerwania.Niestety uklad sie nie budzi wtedy. Są jakies inne sprzetowe lub programowe myki? #include <Keypad.h> #include<avr/sleep.h> // Ustawienia klawiatury 4x4 const byte ROWS = 4; // liczba wierszy const byte COLS = 3; // liczba kolumn const byte pstryczekPrzerwan = 2; // Mapowanie przycisków klawiatury matrycowej char keys[ROWS][COLS] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; // Definicje pinów dla wierszy i kolumn byte rowPins[ROWS] = {10, 9, 8, 7}; // podłącz do pinów Arduino byte colPins[COLS] = {6, 5, 4,}; // podłącz do pinów Arduino // Inicjalizacja klawiatury matrycowej Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); // Flaga wykrycia przerwania volatile bool keyPressed = false; // Funkcja obsługi przerwania void keyInterrupt() { keyPressed = true; } void setup() { pinMode(pstryczekPrzerwan, INPUT_PULLUP); set_sleep_mode(SLEEP_MODE_PWR_DOWN); // Włącz pełne usypianie. sleep_enable(); // Uśpij mikrokontroler Serial.begin(9600); // Ustawienie przerwania sprzętowego na jednym z pinów (np. pin 2) attachInterrupt(digitalPinToInterrupt(2), keyInterrupt, FALLING); } void loop() { char key = keypad.getKey(); if (key) { Serial.print("Przycisk wciśnięty: "); Serial.println(key); } attachInterrupt(0, przerwanie, LOW); // Aktywuj przerwania na kanale 0 niskim poziomem. sleep_mode(); } void przerwanie() // Gdy poziom niski pojawi się na kanale 0 (czyli na wejściu "przerwania"), obudź mikrokontroler. { detachInterrupt(0); // Wyłącz obsługę przerwań. delay(5); // Zaczekaj 5 ms na pobudkę. } 1 Link do komentarza Share on other sites More sharing options...
ethanak 1 października Udostępnij 1 października Się nie da. 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_ 1 października Udostępnij 1 października (edytowany) Te diody powinny być w drugą stronę anodą do rezystora. Co do zmniejszenia poboru prądu możesz usypiać mikrokontroler i cyklicznie wybudzać podczas wybudzenia testować stan klawiatury, na przykład w cyklu 500ms snu 10ms na sprawdzenie. Jeśli podczas testowania cos jest naciśnięte - uruchomić nadawanie Edytowano 1 października przez _LM_ Link do komentarza Share on other sites More sharing options...
MIICHALUS 2 października Autor tematu Udostępnij 2 października 15 godzin temu, _LM_ napisał: Te diody powinny być w drugą stronę anodą do rezystora. Co do zmniejszenia poboru prądu możesz usypiać mikrokontroler i cyklicznie wybudzać podczas wybudzenia testować stan klawiatury, na przykład w cyklu 500ms snu 10ms na sprawdzenie. Jeśli podczas testowania cos jest naciśnięte - uruchomić nadawanie Jak to programowo dobrze rozwiązać? I czy to będzie miało duzy wpływ na pobór prądu? 17 godzin temu, ethanak napisał: Się nie da. Dzięki za wyczerpującą wypowiedz poparta licznymi wyjaśnieniami. Jak masz tak pisać to może w ogóle nie pisz. Link do komentarza Share on other sites More sharing options...
ethanak 2 października Udostępnij 2 października A co tu wyjaśniać? Zadałeś pytanie, dostałeś odpowiedź. Dla mnie taka odpowiedź oznacza "aha, trzeba szukać innego rozwiązania". Nie wiem co chciałeś jeszcze... Link do komentarza Share on other sites More sharing options...
MIICHALUS 2 października Autor tematu Udostępnij 2 października 17 minut temu, ethanak napisał: A co tu wyjaśniać? Zadałeś pytanie, dostałeś odpowiedź. Dla mnie taka odpowiedź oznacza "aha, trzeba szukać innego rozwiązania". Nie wiem co chciałeś jeszcze... Może jakiejś minimalnej argumentacji.Tak to możesz kosić 90 % wątków na forum. I co mam ślepo zarzucić szukanie dociekanie bo ktoś z czapy rzucił jedno zdanie. Mówię taką pomoc na forum to sobie daruj. Link do komentarza Share on other sites More sharing options...
ethanak 2 października Udostępnij 2 października 4 minuty temu, MIICHALUS napisał: Może jakiejś minimalnej argumentacji. Zdroworozsądkowego myślenia... Masz tu argumentację: odczyt klawiatury matrycowej wymaga działania procesora. W uśpieniu procesor nie działa. Czy to wystarczająca argumentacja? Mogłem się rozpisywać na temat różnych innych płytek na których to zadziała ale o to nie pytałéś. Link do komentarza Share on other sites More sharing options...
_LM_ 2 października Udostępnij 2 października (edytowany) Nie wiem o co się rzucasz @MIICHALUS masz przecież notę katalogową mikrokontrolera możesz sprawdzić co i jak. Przede wszystkim sprawdziłbym w jakim stanie znajdują się gpio podczas snu i wtedy rozważyłbym użycie przerwania (układ z diodami) albo watchdoga cyklicznie budzącego mikrokontroler. Ile to prądu i w jakiej konfiguracji weźmie nie wiem, ale jest to do oszacowania na podstawie noty katalogowej. A więc pdf do ręki/ na monitor i moje lubione RTFM 🙂 Edytowano 2 października przez _LM_ Link do komentarza Share on other sites More sharing options...
_LM_ 2 października Udostępnij 2 października Jako podpowiedź dodam że linie fioletowe muszą być w stanie niskim kiedy mikrokontroler śpi Link do komentarza Share on other sites More sharing options...
KatzePL 2 października Udostępnij 2 października 21 godzin temu, ethanak napisał: Się nie da. Nie ma rzeczy niemożliwych. Link do komentarza Share on other sites More sharing options...
_LM_ 2 października Udostępnij 2 października 4 minuty temu, KatzePL napisał: Nie ma rzeczy niemożliwych. Są, być może znasz powiedzenie z parasolem. Poza tym trzeba znać układ z którym się pracuje nie wygłaszać wyssanych z palca "prawideł" ludowych popartych myśleniem życzeniowym i chłopskim rozumem. Link do komentarza Share on other sites More sharing options...
MIICHALUS 2 października Autor tematu Udostępnij 2 października 3 godziny temu, _LM_ napisał: Nie wiem o co się rzucasz @MIICHALUS masz przecież notę katalogową mikrokontrolera możesz sprawdzić co i jak. Przede wszystkim sprawdziłbym w jakim stanie znajdują się gpio podczas snu i wtedy rozważyłbym użycie przerwania (układ z diodami) albo watchdoga cyklicznie budzącego mikrokontroler. Ile to prądu i w jakiej konfiguracji weźmie nie wiem, ale jest to do oszacowania na podstawie noty katalogowej. A więc pdf do ręki/ na monitor i moje lubione RTFM 🙂 Ja tam się wcale nie rzucam :-) Tylko gotuje się jak widzę na rożnych forach takie zaśmiecanie dyskusji i rzucanie"Nie bo nie" Ty rzeczowo podszedłeś do sprawy kierunkując na pewne aspekty za co dziękuję i przynajmniej wiem gdzie kopać.I tak powinno to wyglądać Link do komentarza Share on other sites More sharing options...
ethanak 2 października Udostępnij 2 października Czyli Twoim zdanie odpowiedź na pytanie "czy się da" powinna zawierać pół książki? Ja się wychowałem na Usenecie i tam odpowiedź na takie pytanie była zawsze ze świętego Mateusza. Czyli: da się (aha, muszę poszukać jak) albo "nie da się" (czyli szukanie innego rozwiązania). Zajrzyj do swojego posta numer jeden i przeczytaj, jakie pytanie zadałeś. Potem usiądź i zastanów się, jaka powinna być odpowiedź. I nie czepiaj się że ktoś ci odpowiedział na pytanie. Do poczytania: http://rtfm.killfile.pl/ 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ę »