Sterownik 2 diodami za pomocą drabinki rezystorowej - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica) +--- Wątek: Sterownik 2 diodami za pomocą drabinki rezystorowej (/watek-sterownik-2-diodami-za-pomoc%C4%85-drabinki-rezystorowej) Strony:
1
2
|
Sterownik 2 diodami za pomocą drabinki rezystorowej - dawidd - 29-01-2017 Witam Chce zrobić proste urządzenie sterujące Ma to być pilot z dwoma przyciskami i 2 rezystorami w środku. Połączone do masy i do wejścia A0( + rezystor podciągający) . Przycisk 1 ma zapalać diodę nr 1 na 3 sekundy, przycisk 2 ma zapalać diodę nr 2 na 3 sekundy. Potem dioda ma zgasnąć. I do tego punktu sobie poradziłem. Dalej proszę Was o pomoc. Kolejnym warunkiem jest to ze jeśli dioda nr 1 sie świeci(te 3 sekundy), a w pilocie wciśnięty zostanie drugi przycisk od diody 2 to ta pierwsza ma natychmiast zgasnąć, a druga zapalić się na 3 sekundy A druga sprawa to jeśli któryś z przycisków jest wciśnięty dłużej niż 3 sekundy np 10 to dana dioda ma zgasnąć jak tylko przycisk zostanie puszczony, czyli po 10 sekundach a nie 13 Jak to zrobić? moj kod: int RED=10; int GREEN=11; void setup() { pinMode(RED, OUTPUT); pinMode(GREEN, OUTPUT); Serial.begin(9600); }; void loop() { int a=analogRead(A0); Serial.println(a); delay(100); if(a>200 && a<300) { // PRZYCISK 1 digitalWrite(RED, HIGH); delay(3000); } if(a>500 && a<600) { // przycisk 2 digitalWrite(GREEN, HIGH); delay(3000); } else { digitalWrite(GREEN, LOW); digitalWrite(RED, LOW); } }; RE: Sterownik 2 diodami za pomocą drabinki rezystorowej - ryro.glw - 29-01-2017 jesli ma dzialac tak jak zakladasz to zapomnij o DELAY, w czasie 3s swiecenia diody delay(3000) zatrzymuje wykonywanie innych polecen w tym rowniez sprawdzanie czy zostal wcisniety przycisk2, zrobisz to na funkcji millis, znajdziesz bez problemu na forum Wysłane z mojego ALE-L21 przy użyciu Tapatalka RE: Sterownik 2 diodami za pomocą drabinki rezystorowej - dawidd - 29-01-2017 Moja przygoda z arduina zaczęła sie kilka dni temu i jeszcze nie wiem o czym piszesz, dlatego jak byś mógł cos więcej o tej funkcji millis napisać albo wstawić ja w ten mój kod - jak to powinno wygladac RE: Sterownik 2 diodami za pomocą drabinki rezystorowej - ryro.glw - 29-01-2017 http://forum.arduinopolska.com/showthread.php?tid=353 zobacz sobie to, tego szukasz wlasciwie Wysłane z mojego ALE-L21 przy użyciu Tapatalka RE: Sterownik 2 diodami za pomocą drabinki rezystorowej - dawidd - 29-01-2017 Dzięki za link. Przeczytałem ten artykuł ale mimo to dalej nie wiem jak zastosować ta wiedzę w praktyce. Wiem ze może trochę proszę o "przeprowadzenie za reki" ale to mój pierwszy "samodzielny" projekt i jeszcze potrzebuje pomocy. Czy mógłbyś mi to wkleic w mój kod, ewentualnie łapotologicznie wytłumaczyć jak to zrobic RE: Sterownik 2 diodami za pomocą drabinki rezystorowej - namok - 29-01-2017 Działanie millis() jest wytłumaczone praktycznie w każdym kursie arduino. Przerób dowolny a życie od razu stanie się prostsze. Np: http://forbot.pl/blog/artykuly/programowanie/kurs-arduino-0-zapowiedz-cyklu-id5290 RE: Sterownik 2 diodami za pomocą drabinki rezystorowej - Smaczek - 30-01-2017 Witam, Moim skromnym zdaniem to biblioteka Timers nie będzie za bardzo przydatna w tym projekcie. Jakbym miał zrealizować zamierzenia projektu to z pewnością program oparłbym o przerwania i funkcję millis(). UNO obsługuje przerwania na dwóch pinach, czyli w tym przypadku, dokładnie na tylu ile potrzeba (dwa przyciski). W przypadku zmiany stanu na którymkolwiek z tych pinów, odczytałbym czas za pomocą millis(), a następnie w każdym wykonaniu pętli loop, ponownie odczytywałbym czas wspomnianą funkcją. Na podstawie różnicy czasu oraz obecnego stanu układu podejmował odpowiednie działania: nie robię nic lub zmieniam stan układy. Pozdrawiam. RE: Sterownik 2 diodami za pomocą drabinki rezystorowej - namok - 30-01-2017 (30-01-2017, 12:21)Smaczek napisał(a): Witam,A moim skromnym zdaniem nadaję się tyle że początkujący mogą mieć problemy z jej wykorzystaniem bo jest zbyt słabo opisana. Cytat:Jakbym miał zrealizować zamierzenia projektu to z pewnością program oparłbym o przerwania i funkcję millis(). UNO obsługuje przerwania na dwóch pinach, czyli w tym przypadku, dokładnie na tylu ile potrzeba (dwa przyciski). W przypadku zmiany stanu na którymkolwiek z tych pinów, odczytałbym czas za pomocą millis(), a następnie w każdym wykonaniu pętli loop, ponownie odczytywałbym czas wspomnianą funkcją. Na podstawie różnicy czasu oraz obecnego stanu układu podejmował odpowiednie działania: nie robię nic lub zmieniam stan układy.Przyciski obsługuje się w przerwaniu timera a nie wejścia(z wiadomych względów). Dlatego millis() bez przerwań dobrze sobie z tym poradzi. Oczywiście cykl programu nie może być zbyt duży. RE: Sterownik 2 diodami za pomocą drabinki rezystorowej - Smaczek - 30-01-2017 Witam, @namok, każdy problem można rozwiązywać na co najmniej dwa sposoby. Ty skorzystalbys z Timets, a ja nie. Ja podałem propozycję rozwiązania, Ty napisałeś, że millis () "dobrze sobie z tym poradzi". Pewnie bardzo tym stwierdzeniem koledze pomogles, a przecież o to głównie w Piaskownicy chodzi. Pozdrawiam. RE: Sterownik 2 diodami za pomocą drabinki rezystorowej - namok - 30-01-2017 (30-01-2017, 19:40)Smaczek napisał(a): Witam,Oczywiście. Cytat:Ty skorzystalbys z Timets, a ja nie.Nigdzie nie napisałem że skorzystałbym lecz że się do tego nadaje. Cytat:Ja podałem propozycję rozwiązania, Ty napisałeś, że millis () "dobrze sobie z tym poradzi". Pewnie bardzo tym stwierdzeniem koledze pomogles, a przecież o to głównie w Piaskownicy chodzi.Mój post to "krytyka" Twojego rozwiązania. To forum techniczne i należy zwracać uwagę na szczegóły. Obsługa przycisków w przerwaniu od wejścia jest zła i nie należy jej stosować(pomijam sytuacje "podbramkowe"). Po naciśnięciu przycisku początkujący będzie się spodziewał jednego przerwania a otrzyma kilka/kilkanaście przerwań. Oczywiście można sobie z tym poradzić ale po co wyważać otwarte drzwi. Przyciski obsługuje się przez cykliczne "odpytywanie". W arduino najłatwiej to zrobić z użyciem funkcji millis()(nie potrzeba dodatkowych bibliotek). Biblioteka Timers obsługuje cykliczne wywołanie funkcji więc się do tego nadaje. |