ten układ na płytce (U2) to stabilizator? (nie dałeś schematu wiec musze się domyślać na podstawie wzoru płytki). atmega8 powinna teoretycznie od 4,5-5,5 działać. (chyba że masz atmege8L, wtedy moze być mniej), sprawdz jakie napięcie masz bezpośrednio na procku. na wyświetlaczu Vo powinno być na potencjometrze pomiedzy Vcc i GND. Niektóre wyświetlacze...
Nie rozumiem po co dioda LED ukazująca stan nawiewu jest podłączona do osobnego pinu. Nie ma takiej potrzeby, a nawet jest to nie wskazane. Stan wejściowy pinu portu D, nawet kiedy w DDRD jest on ustawiony jako wyjście, można odczytać z rejestru PIND, natomiast wyjściowy z PORTD - tak, ten rejestr można również odczytywać. Nie programuję w Bascom, ale...
Pokazałeś fragment kodu , a my mamy zgadywać co zawiera reszta :?: Pokaż całe źródło , albo ... :D Piotrek
Metoda jest taka ze w momencie nadejscia przerwania od przycisku odpalasz timer, ktory odmierza kilka milisekund, po czym sprawdza czy przycisk nadal jest wcisniety. Jesli tak, to znaczy ze impuls pochodzi od faktycznego nacisniecia a nie od drgania po nacisnieciu. Dla pewnosci mozna zamiast 2 dokonywac 3 sprawdzen. Czas timera musisz dobrac doswiadczalnie.
próbuje programować w języku C i do niego tylko mam programator. Chyba kompilator :P A co do programowania atmegi w C, to: http://www.kursc.dioda.com.pl/
Niestety w Bascom'ie nie pomogę. Pamiętaj, że przycisk gdy będzie wciśnięty to na pinie będzie 0. No i nie zapomnij włączyć pull-up dla pinów przycisków.
seja4321 Napisałem kilka linii kodu ,jest to jedno z możliwych rozwiązań twojego problemu z przyciskiem . program przetestowałem. Moja rada to testuj program na kilku kilkunastu sekundach. powodzenia. Dodano po 46 Nie rozumiem dlaczego seja4321 został skarcony przez LordBlick, przecież pisze w dziale początkujący? Co do kodu, to jest dziwny, Piszesz...
Tak, podciągnij pind.5 do plusa zasilania rezystorem 10K i wtedy dla przykładu sprawdź czy działa robiąc zwarcie Pind.5 do masy zamiast mikroprzycisku jak zadziała prawidłowo to podłącz przycisk
Wejście (pin procka PORTB.0) programujesz jako wejście . Ustawiasz wysoki poziom tego wejścia , tak aby naciśnięcie przycisku (zwarcie do masy) wymusiło niski poziom na tym wejściu , wykrywany przez program jako If PINB.0 = 0 Then ' coś do wykonania (naciśnięty przycisk)
Robisz sobie dwie zmienne: blokada i aktywność. Blokada jako prosta wartość 0 lub 1: jeśli blokada jest założona i wykryjesz, że oba przyciski są naciśnięte, to ustawiasz blokadę na 0 (i aktywność na 0, dodatkowo można dać opóźnienie, aby nie uwzględniać naciśniętych przycisków dalej). Jeśli blokada jest zdjęta, to robisz wszystkie testy, dodatkowo...
1. Komentuj bogato swój własny kod, bo sam się w nim pogubisz, a i nam trudniej analizować, nie wiedząc co chcesz w danym fragmencie zrobić. 2. deklarujesz zmienną globalną cod , w przerwaniu nadajesz jej wartość cod=code : 2a. ale jej nie używasz w pętli głównej i nigdzie indziej - do czego więc jest? 2b. aby ją wykorzystać w pętli głównej cod musi...
Na pewno musisz zrozumieć jak działają operatory: 1. Na początek ~ i & 2. || w następnej kolejności. Albert no to analiza krok-po-kroku: No niestety milisz się bo owszem jest robiona operacja PIND & 0b11111100 ale da ona 1 gdy któryś z przycisków od PD7 do PD3 nie będzie wciśnięty (więc jego bit w rejestrze PIND będzie ustawiony) żeby to poprawnie...
[syntax=cpp]while(1) { if((PIND&0x06)=0x06) { PORTB^=0x04; while((PIND&0x06)=0x06) _delay_ms(t); } }[/syntax] lub: [syntax=cpp] unsigned char currstate,nextstate; for(currstate=0;;_delay_ms(t)) { nextstate=((PIND&0x06)=0x06); if(currstate!=nextstate) { currstate=nextstate; PORTB^=0x04; } }[/syntax]
To były zamierzchłe czasy - assembler królował wtedy ;) Tu jest pomysł na LM317: http://www.elektroda.pl/rtvforum/topic18... ------------- edit: Dorzucam pliki, które obiecałem. Jest tu wszystko co potrzebne, czyli sterowanie LM317 przez PWM z procesora. Układ rozbudowany, ale napewno coś da się uprościć.
Program masz całkowicie źle napisany. Zacznij od sterowania serwami, ale tak, żeby nie używać delay. Czyli całe sterowanie musisz zrobić w przerwaniach. Najlepiej tak, że w procedurze obsługi przerwania inkrementujesz jakąś zmienną i porównujesz ją ze zmiennymi określającymi szerokość impulsu dla konkretnego serwa (skoro masz 10 to będziesz miał tablicę...
Po co ustawiasz "set s2" ? Skonfigurowałeś pin jako wejscie Z PODCIĄGANIEM DO PLUSA, więc puszczenie przycisku automatycznie powoduje odczyt logicznej "1" z tego pinu. Co do pinb.4 - Nie jest to zaden specjalny pin, tyle że to WEJSCIE danych SPI. Mi ten pin działał zawsze jak trzeba, ale zaproponuje inny kod (moze bedzie działać :) ) If S2 = 0 Then...
Masz namieszane z nawiasami {} Fragment Twojego kodu wygląda tak: Dodano po 1 Obsługa klawisza wyłącz była w obsłudze klawisza zmniejsz. Nawias } zamykający obsługę klawisza zmniejsz był dopiero po obsłudze klawisza wyłącz. Aby zadziałał klawisz wyłącz musiałeś jednocześnie wcisnąć wyłącz i zmniejsz. Sprawdź to. Dodano po 1 Ale to i tak do końca nie...
Co do pytaniń 1 i 2 to wszystko zależy od przeznaczenia. Jeśli np budujesz generator na kwarcu o odpowiedniej częstotliwości to potrzebujesz odpowiedni rezonator. Wszystko zależy od przeznaczenia. Elementy dobiera się do układu w którym mają działać. A co do 3 pytania to możesz podłączyć równolegle dwa przyciski. Tylko że będą one realizowały to samo.
Jeśli chcesz mieć kilka przycisków na jednej linii musisz skorzystać z ADC. Poszukaj schematu ZL11ARM - tam jest takie rozwiązanie.
Przyciski powinny zwierać do masy i mieć ustawione wewnętrzne pull-upy lub w aktualnym układzie (czego się nigdy nie robi) mieć zewnętrzne rezystory pull-down.
odczytujemy stan przycisku np : instrukcją IF pinc.4 = 0 then ( tu wstawiamy co ma program zrobić ) najlepiej wstawić jakiś podprogram który zadziała jako stoper zadeklaruj sobie podprogram np: stoper po naciśnięciu przycisku wywołasz podprogram stoper w podprogramie stoper umieścisz jak ma działać stoper declare sub stoper do IF pinc.4 = 0 then call...
Albo po ludzku, jeden timer od wyśw. w ramie trzymane zmienne do wyswietlenia, po drodze dekoder bin->bcd -> 7seg i hopa.:) No i przyciski gdziekolwiek...ale na boga... nie na licznik:>
Nie podałeś na których portach ma przyciski i domniemam że na PC2 i PC5 Jeśli tak to wszystkie warunki powinny wyglądać mniej więcej w ten sposób: [syntax=c]if( !( PINC & (1<<2))) { Send_Packet(w7w); } if( !( PINC & (1<<5))) { Send_Packet(w8w); }[/syntax] A problem może wynikać z wysokiego stany PC7 przy odczycie.
tak
Zgadzam się z krzychS. Mikrokontroler np. ATMEGA8, 2 przyciski i program.
Możesz podłączyć, programator okupuje te linie tylko w stanie resetu procka, kiedy jest programowany. ...Aczkolwiek, dmuchając na zimne, to jak już to na tych pinach daję wejścia, jakieś przyciski itp.
Ehh, przycisk zwiera Ci do zasilania (logiczne 1), natomiast jeśli jest puszczony to na pinie panuje stan nieustalony (oczekujesz, że wtedy będzie tam zero woltów -> logiczne 0 - tak nie jest co możesz zweryfikować mierząc napięcie na tym pinie względem GND i VCC - paradoksalnie za każdym razem przy puszczonym przycisku otrzymasz pomiar zbliżony do...
Spróbuj ten kod /nietestowany/ [syntax=c]unsigned int m; while(1) { switch( GetKeys() ) { case KEY_UP: if(!m ) { m = KEY_UP; } break; case KEY_DOWN: if(!m ) { m = KEY_DOWN; } break; case KEY_UP | KEY_DOWN: if( m == KEY_UP ) { // Operacje po nacisnięciu KEY_UP + KEY_DOWN PORTC ^= LED_PIN1; } if( m == KEY_DOWN ) { // Operacje po nacisnięciu KEY_DOWN +...
Dokładnie tak jak kolega mankinen napisał. To jest jedna z pułapek przy stosowaniu aliasów. Zazwyczaj z tego powodu nie stosuję aliasów, a jak już to zawsze daję aliasy podwójnie np. [syntax=basic4gl]OPrzycisk alias pinb.0 Zprzycisk alias portb.0 [/syntax] Pierwszy kiedy mam coś odczytać z pinu, a drugi gdy zapisuję jego stan.
Tak na szybko: Nie: If Portd.2 = 0 Then Liczba = Liczba + 1 Tylko: If Pind.2 = 0 Then Liczba = Liczba + 1 Zamiast tej plątaniny: If Liczba = 0 Then Reset Portb.0 Set Portb.1 Reset Portb.2 Reset Portb.3 Reset Portb.4 Reset Portb.5 Reset Portd.0 Elseif Liczba = 1 Then Reset Portb.0 Set Portb.1 Reset Portb.2 Set Portb.3 Reset Portb.4 Reset Portb.5 Reset...
Najłatwiej to zrób tak: Wszystkie przyciski podłacz do pinów procka, daj podciągnięcie za pomocą rezystorów wewnętrznych ,oprócz tego za pomocą diod zsumuj te sygnały ,a nastęnie zsumowane sygnały daj na wejście przerwania np INT0. Musisz to zrobić tak że przyciśnięcie któregokolwiek przycisku spowoduje zmiane (spadek napięcia ) na wejściu przerwania...
Piszesz, że masz doświadczenie z LCD i Atmega8. Więc mogę Ci pomóc to zrobić.
Funkcja odpowiedzialna za usuwanie drgań. if(!(PINB & 1<<0)) { // usuwanie drgań styków g_bDelay = 15; //50ms while(g_bDelay != 0) {} if(!(SWPIN & 1<<SW1)) { ++g_Licznik; g_bDelay = 120; //1s while(!(SWPIN & 1<<SW1)) { WyswietlDEC(g_Licznik);...
Za mało kodu, ale proponuję usunąć wszystkie _delay_ms() i wstawić jedno, bezpośrednio przed return. O ile w ogóle jest potrzebne.
W jaki sposób zrobić menu uruchamiane po włączeniu zasilania układu z wciśniętym przyciskiem?
Gdy przycisnąłeś przycisk ale trzymałeś go mniej niż 70 okresów to zmienna Opoznienie_odczytu dochodziła do powiedzmy 65. Ale po puszczeniu przycisku nie resetowałeś zmiennej. Czyli miała ona dalej 65. I kolejne przyciśnięcie było obsługiwane za 5 cykli, a nie za 70 cykli tak jak chciałeś. Bo zmienna musiała doliczyć do 70 a już miała 65 czyli brakowało...
#define WAIT_P while( !(PIND & 0x01) && !(PIND & 0x02) ) {} Wypadało by pamiętać o klamrach... Jeżeli nie będzie klamer pierwsza instrukcja która znajdzie się zaraz za tym zostanie potraktowana jako wnętrze pętli...
Proponuję przy aliasach przycisków wpisać nie port a pin, bo to są wejścia. No i faktycznie aby stany na wejściach nie szalały podciągnąć wejścia do plusa. Moze być np. tak: regfile = "m8def.dat" $crystal = 1000000 Config Portd = Output Portd = &B00000000 Config Pinb.0 = Input Config Pinb.1 = Input Led1 Alias Portd.1 Led2 Alias Portd.2 S1...
Trzeba mieć nóż aby ją przeciąć albo zwinne palce, żeby rozplątać. użyj słowa kluczowego break; I poczytaj jakąś książkę/manual od biedy tutorial do C
Proszę oto poprawiony schemat. Przycisk resetu znów robi zwarcie.
zamontuj zworkę na czas programowania przepinaj ... programator z przyciskiem
jak masz podłączony przycisk?
Po co ustawiasz portd.4 na wejscie Hi-Z? Ustaw tak: PORTD = PORTD or &h10 Wtedy podsiągasz ten pin do plusa i nie musisz ustawiać tam jedynki w podprogramach. Przerób A na BIT, po czym Program: Portc.4 = 0 'jedna dioda zapalona Portc.5 = 1 'druga dioda zgaszona toggle a Return Program2: Portc.4 = 1 ' dioda zgaszona Portc.5 = 0 ' dioda zapalona...
Jakieś źródło jak to można najprościej zrobić ? I czy nie dało by się tego zrobić jak z przyciskiem ?
Źle to rozrysowałeś, bajty są 4. Wygląda to tak: http://obrazki.elektroda.pl/7021420800_1...
U mnie twój program działa bez problemu :D . Może to wina zakłóceń.
Jak najprościej? Wstaw licznik dziesiętny 4017. CLK podłącz do cykacza z cylindrów. RST połącz z sygnałem oznaczającym 1 cylinder. ENABLE do GND. Z licznika sygnały 0-3 podciągnij do cewek. Pamiętaj tylko że 4017 daje na wyjściu ze 2mA. Dla cyfrówki to wystarczające, ale nie wiem jak steruje się te cewki. Tu masz przykład użycia: [url=http://www.doctronics.co.uk/4017.ht...
Witam, tu w Zegarek docelowo będzie używany przez dziewczynę, więc musi być przejrzysty. - to już szowinizm...
nie umiem tego zrobić więc proszę o fragment kodu do obsługi choćby jednego przycisku
Witajcie, W oparciu o Atmegę8 zrobiłem sobie prosty sterownik. Odczytuję temp. z dwóch czujników ds18b20 i na jej podstawie steruje elektrozaworem. Chciałbym dodatkowo wprowadzić obsługę 3 przycisków. Problem w tym, że sam odczyt temp. z czujek powoduje pewne opóźnienia np. czas konwersji jest dosyć spory bo 750ms w związku z tym reakcja na przyciśnięcie...
Podłącz do GND. W programie ustaw podciąganie wejścia do "1" logicznej. 1 - przycisk nie wciśnięty natomiast po wciśnięciu przycisk zewrze wejście do masy, czym samym 0 to będzie oznaczać wciśnięty przycisk.
Masz problem z drganiem styków przełącznika. Możesz go wyeliminować programowo, np. porównaj dwa razy dokonany odczyt PD7 i uznaj że jest prawidłowy jeśli 2x się potwierdził (przy naciskaniu i zwolnieniu) możesz jeszcze dodać małą pętlę w której kilka razy sprawdzisz stan tego wejścia, a za prawidłowy uznasz dopiero gdy kilkukrotny odczyt da taki sam...
Zaznaczasz "Zapis" w "Operacje AVR", obok textboxu "Flash" wciskasz przycisk "..." i wybiersz plik .HEX a potem wykonaj. Program powinien ci się wgrać. Przed tym możesz jeszcze wcisnąć przycisk "Sprawdź podłączony AVR"
Nastepnym razem napisz jaki masz blad, na moje to zapis powinien byc i=i+1 oraz i=i-1
W C to bym ci nawet pokazał jak to zrobić, o BASCOMie nie mam pojęcia i nie chcę mieć :) Swoją drogą lepiej porzuć tą ciemną stronę mocy i przejdź na stronę światła :)
A skąd wytrzasnąłeś ten programator ? NIe ma do niego instrukcji żadnej ? Do czego służy ten przycisk ?
Może zrób to inaczej. Podam sam pomysł bo osobiście nie programuję w C więc nie chcę głupot pisać, a podejrzewam że asembler Cię nie interesuje ;) Po naciśnięciu dowolnego przycisku wygeneruj opóźnienie. Po tym opóźnieniu sprawdź jakie przyciski są wciśnięte. Ale zwróć uwagę żeby przy każdej instrukcji if sprawdzać oba piny 1 i 2 portu B. Więc warunek...
Użyj przerwania timera do migania diodą, a najlepiej do wszystkiego (czyli również do sprawdzania stanu przycisków).
Czy rezonator 16 MHz jest niezbędny do zadziałania układu? Oczywiście że nie jest potrzebny. Musisz tylko fusy ustawić na np 8MHz a w pliku boards.txt w arduino utworzyć płytkę z atmega8 8MHz.
masz żle zasilone AVss i AGnd , GND to zawsze masa , ponadto zasila się z napiecia po stabilizatorze , nadal masz brak kondensatorów przy stabilizatorze , zastosuj również kondesatory elektrolityczne , sterownie przyciskami masz również żle , była o tym mowa podciągnij wejścia do plusa przez opornik 4,7 - 10 KΩ , a przyciski mają zwierać bezpośrednio...
Drgania styków i ich eliminacja - poszukaj, poczytaj. Domniemam że impulsy nie pochodzą z innego układu cyfrowego ale z przycisku;-)
Witam Przycisk włącza zasilanie a uP podaje stan niski na bramkę mosfeta P, który jest równolegle z przyciskiem. Mosfet i przycisk muszą być oddzielone diodami, aby można było sczytywać stan przycisku.
Czy podłączyłeś VCC, AVCC i wszystkie GND? Jeśli tak, to sprawdź miernikiem działanie przycisku - napięcia na porcie wejściowym przy wciśniętym i zwolnionym przycisku.
do odczytu portów służą rejestry PIN
Chodzi Ci o to, że normalnie podpinasz przyciski pod gnd, lecz teraz chcesz podpiąć je pod vcc. Nie ma żadnego problemu, lecz musisz ustawić w programie aby domyślnie był podciągnięty pod gnd i w chwili zwarcia do uC wchodzi vcc. W sofcie sprawdzasz, czy jest stan 1 (zamiast jak wcześniej 0).
Cześć. Poszukuję przycisku (button), który współpracowałby z Atmegą8(L). Istnieje przycisk cyfrowy, który po prostu po przyciśnięciu puści jedyneczkę na wejście cyfrowe mikrokontrolera? Wybaczcie, jestem trochę zielony w tym temacie. Dziękuję za odpowiedź, pozdrawiam :)
Nie ma opcji byś utrafił obydwa przyciski na raz. A nawet jeśli jakimś cudem utrafisz to wykona się ten, który akurat będzie nadchodził w pętli głównej. Możesz także wszystko co masz w podprogramie wpisać w instrukcję IF..END IF sprawdzając czy przypadkiem drugi pin nie ma stanu wciśniętego przycisku.
A czytasz co napisałem wyżej ? Problem polega zapewne na tym, że przyciski nie są podciągnięte ani fizycznie ani programowo do + , czyż nie o to chodzi kolego piotrva? PS. Napisałem 'podciągnie' -literówka
Grala1 - Nie wiem czy ta wersja spełni oczekiwania : '$prog &HFF , &HE1 , &HD9 , &H00 ' Fusebity fabryczne !!! $sim ' dyrektywa opuszczania zwłoki (usunąć ten wiersz przy wgrywaniu w chip) $regfile = "m8def.dat" ' dyrektywa kompilatora o rodzaju procka ATMega 8 $crystal = 16000000 ' określenie kwarca 16 MHz Config Pinb.1 = Output...
A jak ci powiem że jeżeli wciskam przycisk co pół minuty to mi śmiga całość ?... i to bez pomyłki ? Jak masz podłączony ten przycisk?
Dawno temu zrobiłem układ w którym uruchamiało się jakąś funkcję przez 2 przyciski na raz. Dałem mu max. czas 0,3 sekundy między jednym przyciskiem a drugim. W praktyce okazało się że wciśnięcie dwóch przycisków na raz w odstępie 0,3 sekundy to nie lada wyczyn ;) Udawało mi się w 50% przypadków, w pozostałych 50% układ wykrywał tylko jeden przycisk....
Shemat nieczytelny, bo nie widać na nim, która linia uC jest połączona z którym stykiem headera. Tę płytkę da się zrobić jako jednowarstwową. Z grubsza jest poprawna, ale pożytek z niej żaden. Co za różnica, czy włożysz procesor w tę płytkę, czy w "stykówkę", skoro i tak do uzyskania czegokolwiek działającego musisz dołożyć sporo elementów na zewnątrz?...
OK, Pierwsza uwaga-pytanie: Nie masz zewnętrznych pull-upów na przyciskach, a jednocześnie nie widzę, abyś w kodzie włączał pull-upy wewnętrzne - no chyba, że przeoczyłem. Podciągnąłem programowo, lecz dalej brak reakcji na przycisk.
schemat: http://obrazki.elektroda.net/11_12162297... Powodem jednak były błędy w lutowaniu. Teraz tylko nie działają przyciski.
Ale z drganiami prawdopodobnie poradze sobie odpowiednim zaprogramowaniem (chce cyklicznie sprawdzac przyciski i zaleznie od tego jaka okres sprawdzania uzyskam, to doprogramuje cos co bedzie sprawdzac czy stan jest staly... wyjdzie w praniu). A moze warto kondensatorek do masy przy przyciskach? Ceramiczny? Czestotliwosc drgan pewnie zalezy od konkretnego...
A teraz tak na chłopski rozum dla lukisio Port - jesli dany port ma pracowac jako wyjscie czyli np. gasic i zaswiecac diode Pin - jako wejscie czyli np. jak chcesz sprawdzic stan przycisku
Cóż, nie jest to znana mi metoda obsługi enkodera, ale chyba ciekawsza... Natomiast nie widzę tu operacji na przerwaniach.... To prawdopodobnie powoduje błędy, chyba, że się mylę. Ale enkodery to zawsze zagadka dla mnie były więc wiele nie pomogę.. Pozdrawiam.
Miałem kiedyś jakąś potrzebę na taki 8-o przyciskowy program dla attiny2313. Zamieszczam go w całości z komentarzami, może Ci się przyda: [syntax=basic4gl]$regfile "attiny2313.dat" $crystal = 1000000 '-- Config Portb = Input Portb = &B11111111 Config Portd = Output Portd = &B00000000 Config Porta.0 = Output Porta.0 = 0 Dim Nr As Byte 'licznik...
Na początku nauki programowania warto rozpisać krok po kroku problem oraz algorytm rozwiązania. Późniejsze przełożenie tego na kod jest już sprawą prostszą. Problem (o ile dobrze zrozumiałem) przedstawia się następująco: - wykrycie momentu wciśnięcia przycisku, - wykonanie jednorazowej akcji (włącz led), - odczekanie określonego czasu, - wykonanie jednorazowej...
Jaka jest aktualna częstotliwość zegara? Jak często uruchamiane jest przerwanie? Ile trwa naciśnięcie przycisku? Musisz zmieniać opcje tylko kiedy przycisk został naciśnięty, nie przytrzymany. Dodaj do przerwania warunek sprawdzający poprzedni stan przycisku. Pomyśl nad wyeliminowaniem delay.
Kod jest już poprawiony. Ten działa w 100% Na pewno nie będzie działał brak zakończenia dwóch warunków w pętli Do -Loop oraz coś bardzo ciekawego : [syntax=basic4gl]Config Rc5 = Pind.2 If Command = 16 Then Portd.2 = 1 [/syntax] Najpierw deklarujesz jako RC5 a potem zmieniasz na nim stan ? . Coś mi się wydaje że za bardzo nie wiesz jak się do tego zabrać...
Inaczej projektuje się zegar dla zasilania z baterii, a zupełnie inaczej dla zasilania z zasilacza. Jeżeli mikrokontroler ma być zasilany z baterii, to projekt musi drastycznie zminimalizować zużycie energii. Aby to zrobić należy zmniejszyć radykalnie napięcie zasilania i zmniejszyć częstotliwość zegara F_CPU. Należy także usypiać mikrokontroler ......
Witam ! do dioda1 = 1 If przycisk1 = 1 and prycisk4 = 0 then dioda1 = 1 waitms 2 dioda1 = 0 waitms 20 end if loop itp. to początek resztę spróbuj sam Powodzenia życzę Stefan . GG6293398
Wiec zrobiłem to tak: [syntax=vbnet] Dim Piloty As Byte Dim Old_piloty As Byte Dim Klawisze As Byte Dim Old_klawisze As Byte Dim Licznik_kasuj As Byte Dim Flaga_kasuj As Bit Zeruj_klawisze Alias 250 Zeruj_piloty Alias 0 Klawisze_1 Alias Klawisze.0 Klawisze_2 Alias Klawisze.1 Klawisze_3 Alias Klawisze.2 Klawisze_4 Alias Klawisze.3 Klawisze_5 Alias Klawisze.4...
To piszczenie ma być tylko wtedy gdy czujnik temperatury nie będzie odpowiadał tzn gdy np zostanie uszkodzony lub odłączony od magistrali 1-wire. To miało być jako taka informacja że coś się dzieje z czujnikiem. To w takim razie jak to zadeklarować jako podprogram lub tą funkcję do obsługi przycisków??
Przyjęło się, że przyciski w µC wyzwalane są zwieraniem do GND.
I tu jest moje pytanie, gdzie jest błąd w moim myśleniu? Nie masz żadnej zmiennej, która by stanowiła część niezbędnego w tym przypadku "programowego przerzutnika RS". Obecnie opierasz się tylko na stanie pinów wejściowych. Każdy przycisk powinien mieć swój licznik, pomniejszany w przerwaniu; oraz zmienną pamiętającą ostatni stan wejścia i wyjścia....
Pewnie po jednym naciśnięciu następowało zwiększanie/zmniejszanie wartości OCR1A do us***ia. Czyli do wartości 17600/19400. Masz to w pętli więc podczas naciśnięcia przyciksu nawet na 1ms mogło nastapić zwiększenie o jakieś 1000. Musisz dodać blokadę zwiększania wartości OCR1A podczas trzymania przycisku. Czyli zwiększenie ma zadziałać raz a później...
Klikasz na link prawym przyciskiem i dajesz zapisz element docelowy jako... Zaprogramujesz go programatorem np. stk200.
Wszytko zależy od tego jak masz zbudowany program i co mikrokontroler ma równolegle robić w momencie, gdy przycisk jest trzymany, a czas 5 sekund odliczany. Dlatego powinieneś opisać dokładnie co robi Twój program. Istotne może być także to, do którego pinu mikrokontrolera ten przycisk podłączyłeś. ... rozwiązań Twojego problemu jest wiele.
uruchomienie: sei(); zatrzymanie: cli();
Nie patrze na Twój kod ale zapytam czy dobrze rozmiem. Bo tak myślę że dwóch jedynek nie masz więc dwóch na raz nie wciśniesz..wiec może chodzi o to że naciskasz po kolei 1 i 1 i A ? i to ma wysterowac serwo 1 w pierwszym module na pozycję A. Czyli dopiero po sekwencji trzech naciśnietych po sobie przycisków?
W stanie rozwartych przycisków układ nie posiada połączenia z masą czyli prąd nie popłynie przez kontroler czyli kontroler nie działa. Przy wciśniętym przycisku diody również skutecznie zapobiegną umownemu przepływowi prądu w kierunku masy czyli kontroler również nie działa. Zaiste skąd taki pomysł, że to zadziała? Może lepszym rozwiązaniem byłoby normalne...
Najpierw wklep mój kod. Problem miałeś w braku podciągania PinB2 do VCC, i w tym że najpierw gasiłeś diodę a potem ją zapalałeś w ifie i tak w kółko. Więc jak już to by CI bardzo szybko migała.
Na schemacie masz gniazdo oznaczone jako Stacyjka . Czy nie powinno tam być jakieś zabezpieczenie (tłumik) wejścia przed wyższym napięciem, czy tylko to wyjście jest łączone z masą (stycznik, krańcówka, itp)? Zastosowane przyciski są już docelowe czy mogą być zastosowane typowe przyciski 6x6mm
Biblioteka jest płatna, ale jak dobrze poszukać. (Użyj przycisku szukaj.)
A w obsłudze przycisku w timerze nie uświadczę drgań styków? To fizyczne zjawisko. Jak obsłużyć przycisk w timerze? Podobnie jak z przykładu poniżej? Obsługę przerwania robiłem w ten sposób: [syntax=cpp]SIGNAL(SIG_INTERRUPT1) { przycisk++; _delay_ms(20); } [/syntax] Delay załatwił drganie styków. W while-u sprawdzałem ile było wciśnięć i zapalałem diodki....
Witam. Mam takie pytanie. Chciałbym sobie zrobić załączanie światła w pokoju za pomocą przycisku na atmega8, jednak z racji, że nie chciałbym pruć instalacji to czy istnieje jakaś możliwość, aby wpiąć się w przełącznik ścienny i stamtąd zasilać atmega8, oraz jednocześnie włączać swiatło? Na obrazku zaznaczone czerwonymi liniami gdzie chciałbym podłączyć...
Tzn. chciałeś "przypisać" zmiennej x operację PORTB ^= 1<<PB0 ? Jeśli tak to: pomysł sensowny, ale niestety gwałcący zasady języka C ;) Mignięcie diody miało być w funkcji, która będzie kilka razy wywoływana w pętli, czyli chodziło mi o coś takiego:[syntax=c]//Funkcja migająca diodą void blink(void){ // Zapal diodę PORTB |= 1<<PB0; _delay_ms(300);...
Na c sie nieznam. Myśle ze kolega wie że pilot nadaje najpierw kod pilota potem dopiero kod klawisza może twój program po odczytaniu pierwszego bajtu konczy juz odczyt. Kiedyś miałem program na 8051 pokazywał na lcd pełny kod każdego klawisza ale chyba mnie gdzies zapodziało to
atmega8 przyciski bascom atmega8 przyciski atmega8 bascom przyciski
akumulator tesco channel mosfet sterowanie chlorek amonu
Nierówność kanałów we wzmacniaczu WS432 - przyczyny i rozwiązania Szybkie miganie czerwonej diody w ładowarce Stanley - przyczyny i rozwiązania