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...
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...
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...
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ć.
[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]
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...
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...
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...
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.
Zgadzam się z krzychS. Mikrokontroler np. ATMEGA8, 2 przyciski i program.
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.
no teraz zauważyłem, że nie masz potencjometru do kontrastu przy LCD
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.
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 +...
Pokazałeś fragment kodu , a my mamy zgadywać co zawiera reszta :?: Pokaż całe źródło , albo ... :D Piotrek
a w czym dokladnie tkwi problem? szukasz pomocy, czy wyreczenia? (at)\/3!!
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/
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.
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...
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.
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
Piszesz, że masz doświadczenie z LCD i Atmega8. Więc mogę Ci pomóc to zrobić.
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...
#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...
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...
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...
Źle to rozrysowałeś, bajty są 4. Wygląda to tak: http://obrazki.elektroda.pl/7021420800_1...
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...
Witam, tu w Zegarek docelowo będzie używany przez dziewczynę, więc musi być przejrzysty. - to już szowinizm...
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 ......
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
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...
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...
Nastepnym razem napisz jaki masz blad, na moje to zapis powinien byc i=i+1 oraz i=i-1
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...
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...
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...
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.
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...
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 :)
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.
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.
Jeśli chcesz mieć kilka przycisków na jednej linii musisz skorzystać z ADC. Poszukaj schematu ZL11ARM - tam jest takie rozwiązanie.
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)
tak
U mnie twój program działa bez problemu :D . Może to wina zakłóceń.
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ę...
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
do odczytu portów służą rejestry PIN
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....
Za mało kodu, ale proponuję usunąć wszystkie _delay_ms() i wstawić jedno, bezpośrednio przed return. O ile w ogóle jest potrzebne.
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.
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...
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);...
Ja bym proponował podłączyć równolegle z tym przyciskiem kondensatorek 100nF i wtedy nie będzie już 'iskrzyć'.
ja bym to zrobił inaczej, bo Twoje rozwiązanie według mnie nie zadziała. Według mnie najpierw wszystkie porty ustawisz jako wyjścia a zaraz potem jako wejścia. Ja bym to zrobił tak, utworzył dodatkową zmienną <code> dim kierunek_portu as bit do if pinc.1 = 0 then toggle kierunek_portu endif if kierunek portu = 1 then config porb = output else...
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).
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.
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ć...
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...
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
Dziekuj. Pomogło. Wcześniej skorzystałem z szukacza, ale nie mogłem znaleść nic konkretnego.
Jeszcze raz powtarzam. Nie znasz zasad pisania funkcji: http://www.java2s.com/Tutorial/C/0160__F... i dlatego: ... na ekranie następuje apokalipsa.
W jaki sposób zrobić menu uruchamiane po włączeniu zasilania układu z wciśniętym przyciskiem?
Witam! Piszę w codevision program na ATmega8. Mam 4 przyciski podłączone odpowiednio do PORTC.5, PORTC.6, PORTB.6 i PORTB.7. Mają one służyć do regulacji dwóch parametrów. Problem jest taki, że te na PORTC działają OK, a te na PB nie. Podejrzewam że nie za dobrze napisany mam ten problem. Będę wdzięczny jeśli ktoś powie mi, jak pisać program obsługujący...
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....
Proszę oto poprawiony schemat. Przycisk resetu znów robi zwarcie.
Witam Chcę zrobić sobie termostat :) ale jak na razie udało mi się tylko napisać termometr, a termostatu nie umiem ;( http://obrazki.elektroda.pl/2811600200_1... http://obrazki.elektroda.pl/9802204300_1... Chcę zrobić tak, że jak naciśnie się trzeci przycisk to wtedy wchodzi się w ustawienia temperatury i jak już się...
uruchomienie: sei(); zatrzymanie: cli();
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.
Napisałem program, który po naciśnięciu przycisku zaczyna migać diodami lub je wyłącza, do tego dwa przyciski do sterowania (wolniej i szybciej) Wszystko działa prawie jak należy, jedynie czas reakcji jest irytujący, przyciski nie zawsze łapią za pierwszym razem i myślę, że to wina pętli i opóźnień, które ustawiłem [syntax=c]/* * ledy.c * * Created:...
Witam, Udalo mi sie uruchomic, okazalo sie ze pc6 to reset i nie mozna go uzywac jako portu po podlaczeniu do segmentu, wylaczal pozostale. Po zmianie pc6 na I/O. Nie moge juz programowac procka. Czlowiek uczy sie na bledach. Czy mozna skonfigurowac port wirtualny aby np portv byl czescia pinow z kilku portów? Pozdrawiam Robert
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
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"
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);...
Witaj. Pokaż co już zrobiłeś - schemat + program.
Generalnie program ma za zadanie obsługiwać za pomocą procesora dwa scalaczki jak poniżej sterujące diodami POWERLED. Czy będzie miał jeszcze coś do roboty? "małe" zadania jak sterowanie kontrolkami, kilka dodatkowych przycisków. Jedno z źródeł światła powinno włączać/wyłączać się z częstotliwością np. 0,5Hz (myślałem żeby zrealizować to za pomocą wejścia...
Witam ;) Może w pętli która sprawdza stan przycisku (do..loop programu głównego, albo np w etykiecie obsługi przerwania od licznika) zastosować warunek i inkrementację zmiennej pomocniczej, która podczas gdy przycisk będzie przytrzymany będzie zwiekszać swoja wartość. Można zastosować póniej warunek sprawdzający jej wartość, jeżeli jest taka jaką zadamy...
nie umiem tego zrobić więc proszę o fragment kodu do obsługi choćby jednego przycisku
Witam od kilku godzin siedzę i rozmyślam jak miało by wyglądać zaprogramowanie przycisków tak aby wciśnięcie pierwszego odblokowało działanie 2 a dopiero wtedy 2 przycisk mógł by aktywować diodę zapalić/zamrugać nią to już mało istotne. Doszedłem do wniosku że można to zrobić na 2 sposoby: 1. Miedzy procesorem a przyciskiem zapalającym diodę wstawić...
przerobiłem trochę program i zadziałało :/
Witam wszystkich Mam takie dziwne pytanie. Czy w µC z tematu można zrobić coś takiego że powiedzmy klikając na przycisk mikrokontroler zrobi między swoimi innymi nogami obwód zamknięty, czyli generalnie klikam przycisk z obrazka a obwód powiedzmy czerwony zamyka się, klikam 2 raz obwód zielony zamyka się. A może opisze mój problem i podpowiecie...
Witam, potrzebuję programu w Bascomie za pomocą którego będę mógł sterować 3 przekaźnikami: -jedno naciśnięcie - PB1 stan wysoki przez np. 1 sekundę -dwa naciśnięcia jedno po drugim - PB2 stan wysoki przez np. 1 sekundę -dłuższe przytrzymanie przez np. 2 sekundy - PB3 stan wysoki przez np. 1 sekundę Zależy mi właśnie by sterowanie było realizowane wyłącznie...
To są linie RxD, TxD od portu szeregowego. Jeżeli port szeregowy jest włączony, to nie ma możliwości korzystania z tych linii jak ze zwykłych we-wy.
Witam. Mam urządzenie zbudowane na Attiny2313 które jest sterowane za pomocą przycisków, poniżej zdjęcie : http://img389.imageshack.us/img389/8693/... Chciałbym zamiast tych switch'y użyć Atmegi8 do sterowania urządzeniem, lecz nie wiem za bardzo jak podłączyć i skonfigurować porty. Punkt A (patrz zdjęcie) podłączyłem do PD.1 Atmegi. Jak widać,...
Przyjęło się, że przyciski w µC wyzwalane są zwieraniem do GND.
LED5W - ciekawe podejście do kwestii menu. Ja zwykle CASEm robiłem płaskie, przechodzenie jednym przyciskiem a wartości (zwiększ, zmniejsz) ustalałem kolejnymi dwoma. Może pokusić się o napisanie uniwersalnego menu dwu lub trzy przyciskowego?
Klikasz na link prawym przyciskiem i dajesz zapisz element docelowy jako... Zaprogramujesz go programatorem np. stk200.
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...
Dzieki,taki banał ze aż wstyd jeszcze raz wielkie dzieki
Po pierwsze pozbądź się waitów, po drugie przerwania. Podam hasła do opracowania: Timery - odmierzanie czasu, przerwania, timing zdarzeń Przyciski - podciąganie, odczyt z rejestru PINn
czy mozna podlaczyc przycisk i diode na jednej nozce portu mikroprocesorka? np atmega8? tak by przycisk zaswiecal diode i a mikroprocesor odczytywal stan przycisku pozdrawiam Grzesiek
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.
http://www.elektroda.pl/rtvforum/topic21...
Podpowiem: poszukaj przycisków tact-switch i informacji na temat ich współpracy z ATmega8 ;) W razie pytań pisz w temacie.
Witajcie, otóż mam mały problem z podłączeniem przycisków do mikrokontrolera. Mam zrobiony panel przycisków 10x4, problem polega na tym, że nie bardzo mam jak je podłączyć do mikrokontrolera dosyć łatwym sposobem. Myślałem na początku o zamontowaniu 3 multiplekserów, jednak ostatecznie zrezygnowałem z tego ponieważ mam do dyspozycji tylko jedno wejście...
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?...
zamontuj zworkę na czas programowania przepinaj ... programator z przyciskiem
przyciski atmega8 bascom atmega8 przyciski atmega8 bascom przyciski
przykleić magnes przesunięcie wydruku chlorek amonu
Hitex HT-8000: Specyfikacja, Gry, Problemy Techniczne Rozkład pinów w komputerze ECU Chevrolet Aveo