Witam, ad.1) .... a dioda IR to aż tak bardzo się różni od diody LED? czy może twoja ma wbudowany jakiś rezystor w swojej strukturze??? - tak samo jak dla diod LED i tu dobiera się rezystory ad.2) ... wystarczy co nieco poczytać elektrodę ile już było takich śmiałków ;) którzy się wciąż dopytują czy trzeba do wszystkich wyprowadzeń dołączać VCC i GND...
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...
Chodzi mi o napisanie: DDRC = Wyjscie; PORTC = Micro_2 | Micro_1 | Przycisk_0 | Przycisk_1; Mam nadzieję, że przyciski są włączone pomiędzy wejścia uC i masę - nie napisałeś tego. Komentarz niezgodny z działaniem kodu. Ten if() wykona się, jeśli oba są zwolnione lub oba wciśnięte. Z delay() nie chodzi o dokładność pomiaru, a o brak reakcji na zdarzenie...
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...
Zrób sobie jakąś dodatkową flagę, której stan zmienisz po wciśnięciu przycisku. Z drugiej strony jeśli po naciśnięciu ma to już stale działać to wystarczy zapętlić te dwa fory.
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)
uruchomienie: sei(); zatrzymanie: cli();
Okazało się że w teorii na PCF8574 nie można ustawić jednocześnie 3 wejść i 4 wyjść, przez co nie jesteśmy w stanie odczytać który guzik na klawiaturze został kliknięty (tak wynika z datasheeta). Ustaw PCF'a jako wejścia a resztę wystawiaj z wyjść procka i sprawdzaj. Są inne układy, które w chwili naciśnięcia generują przerwanie.
Witam, mam klawiaturkę 2x2 podłączoną jak na rys: http://obrazki.elektroda.net/47_12731741... Po włączeniu działa chwilę prawidłowo, potem zaczyna wykrywać nieistniejące naciśnięcia przycisków. Działa prawidłowo jak trzymam palec na +5v na płytce z przyciskami. Co może być przyczyną?
Hej, Czy podłączyłeś zasilanie portu C? Pozdrowienia
[syntax=pseudokod] while(key1 and !key2) { while(key1 and key2) { zadanie; //ciezko powiedziec co masz na mysli mowiac operacja, tu moze byc np. petla for, wtedy ponizszego ifa musisz do niej przeniesc if(!key1 or !key2) goto etykieta; } } etykieta: [/syntax] jak się brzydzisz instrukcją goto możesz pomyśleć nad zmienną bool pamiętającą wejście do drugiej...
1. Jak mówił tmf, poczytaj o tym czym są przerwania i timery, za ich pomocą odmierzaj czas, a programy pisz tak, aby nie zatrzymywały się w pętli głównej ani na moment, jeśli nie jest to rzeczywiście konieczne - taki dobry nawyk (oczywiście czasem można dla prostoty użyć jakichś funkcji _delay_xx();, ale zwykle ich unikamy) 2. Czytelność Twojego kodu...
Witam wszystkich. Zaprojektowałem i uruchomiłem zegarek z wyświetlaczami LED(SA10-21GWA) i układem PCF8583 współpracującym z mikroprocesorem Atmega8 oraz układami PCF8574AP na szynie TWI(i2c). http://obrazki.elektroda.net/21_12497604... http://obrazki.elektroda.net/58_12497606... http://obrazki.elektroda.net/95_12497605...
Wstęp Modelarstwo rakietowe to piękny sport uprawiany przez nielicznych. Jego piękno tkwi w modelach rakiet oraz wielu silników rakietowych które tworzą amatorzy tego sportu. Elektroniczne moduły zapalające silniki są nieodzownym elementem stanowiącym bezpieczeństwo tego sportu. Moja propozycja timera (spark ignition system) do silników rakietowych...
Witam !!! Wszyscy chyba zapomnieli o problemie pojemności baterii. Jeżeli będziecie badać przerwania to procek musi być conajmniej uśpiony a to zawsze jakiś prąd. Trzeba go maksymalnie ograniczyć. Ja zawsze robie to na wydzielonym przycisku klawiatury (mogę wysłać schemat z opisem). Jeżeli jednak włączać ma dowolny klawisz matrycy to wydaje się że najlepiej...
Dorzucam wersję z porządnym debouncingiem. Ten z BASCOMa jest zbyt uproszczony i nie nadaje się do profesjonalnych zastosowań. Po wciśnięciu jednego przycisku naciśnięcia innych przycisków są ignorowane do czasu puszczenia tego pierwszego. Zauważ autorze, że nie ma już nigdzie w kodzie czekania na cokolwiek (brak wywołań funkcji WaitMs()). Wszystko...
To wszystko to jedna wielka prowizorka. Możesz dołożyć do pętli while () oczekującej na zwolnienie przycisku sprawdzenie naciśnięcia drugiego i odpowiednią reakcję. To powinno być zrobione zupełnie inaczej, w przerwaniu timera, z notowaniem stanu przycisków w oddzielnych zmiennych.
Dodałem resetowanie po delay 2 post powyżej ten czas wysterowania wyjścia w zupełności mi wystarczy chyba dobrze to zrobiłem? Co do tego przycisku to program ma być wykonywany jeśli przycisk jest nie naciśnięty w przypadku naciśnięcia dioda bezczynności mruga i układ oczekuje na położenie klocka i zbadanie jego barwy. Krańcówkę mogę podłączyć NC lub...
Witam Do wyjść klawiatury wpinasz równolegle bramkę NAND 4-wejściową (zakładam klawiatura 4x4), a wyjście bramki do wejścia z przerwaniem zewnętrznym (INT0, INT1). W momencie naciśnięcia przycisku z klawiry na wyjściu bramki będzie "1" które wykrywasz (lub zbocze) na INTx. W obsłudze przerwania sprawdzasz klawisz jak normalnie.
Witam, Mam pewien problem z Rc5 w bascomie, chodzi mi o to, że instrukcje odpowiedzialne za rc5 są wykonywane tylko kilka razy a później, kaplica coś się zapycha:) i pilot nie działa. Cała sytuacja ma charakter nieliniowy tzn. że raz wykryje 3 naciśnięcia przycisku na pilocie a raz np. 5. Po zresetowaniu procka znowu RC5 działa przez parę cykli uP....
[quote="Paweł Es."]Ad. 3 Jeżeli dana nóżka wchodzi na jeden z kanałów przetwornika analogowo-cyfrowego procesora (jeżeli on ma) to do takiego wejścia można podłączyć więcej przełączników czy przycisków (odczytujemy napięcie z dzielnika i tłumaczymy je na numer przycisku). Rozwiązanie jest często stosowane w urządzeniach fabrycznych. Oszczędza ilość...
Witam serdecznie - jestem początkującym jeśli chodzi o programowanie uP. Postanowiłem zrobić układ w/g schematu, działanie jego jest następujące: Po naciśnięciu dowolnego klawisza np. S2 zapala sie odpowiednia dioda D3 (S1-D2...S4-D5...S6-D7)i jednocześnie dioda D1 miga określoną ilość razy, czyli np. Naciskamy S2 zapala się D3 a D1 miga 2 razy, przerwa...
Witam, jako że niedawno rozpocząłem swoją przygodę z programowaniem i mikrokontrolerami i dostałem zlecenie na wykonanie pewnego urządzenia potrzebuje się was poradzić. Jak w temacie chciałbym wykonać na procesorze atmega8 minutnik który, będzie zliczał w dół na przykład 60 minut po tym czasie ma się wyłączyć pewne urządzenie zasilane z sieci , czas...
$regfile = "m8def.dat" 'Procek ATMEGA8 $crystal = 1000000 '1MHz - Kwarc 1MHz Dim A As Integer Config Lcd = 16 * 2 Dim Zmienna As Bit Dim Setki As Integer Config Lcdpin = Pin , Db4 = Portb.6 , Db5 = Portb.7 , Db6 = Portd.5 , Db7 = Portd.7 , E = Portd.2 , Rs = Portd.0 Zmienna = 0 A = 0 Setki = 0 Cls Locate 1 , 1 Lcd "L " ; A Locate 2 , 1 Lcd "x100 " ;...
Przepraszam Forumowiczów za treść i składnię programu ale jestem początkującym w tej dziedzinie i stąd takie a nie inne moje "poukładanie" programu. Faktycznie nie jest to cały program, bo nie zawiera tutaj obsługi wyświetlacza LCD. Problem mam taki, że do atmegi8 podłączony jest wyświetlacz LCD, który działa poprawnie. Dodatkowo podłączone są dwie...
Chciałbym napisać program w C dla ATMEGA8. Będzie to mój pierwszy program, myślałem że będzie bardzo prosty a tu już problemy. Chodzi mi o to żeby przy wciskaniu jednego przycisku, kolejno po sobie zapalały się diody, za pierwszym wciśnięciem jedna, za drugim dwie, itd. Ale funkcja której użyłem - while(PINC & 0x01) {} - nie czeka za wciśnięciem przycisku....
Chciałem zrobić aby po wciśnięciu przycisku zaczynał się program. Jeśli przycisk jest nie naciśnięty to świeci dioda. Ten program ma jakiś błąd nie mam pojęcia jaki. PS Mam mikrokontroler atmega8 taktowany zegarem 8Mhz [syntax=c]#include <avr/io.h> #include <util/delay.h> int main (void) { DDRB |= (1<<PB0); DDRB |= (1<<PB1);...
Jak rozumie pytasz nadal o pierwotny problem? Możesz na przykład zastosować zmienną, która będzie pamiętała aktualny stan klawisza (że był naciśnięty) i dopóki klawisz nie zostanie puszczony, nie dopuści do ponownego zapalenia diody. Wykorzystaj do tego na przykład instrukcję if. hmmm, ten program ktory podalem dziala bez problemu, chodzi mi tylko...
Co do toru odbiornika: Jednak potrzeba by było odbiornik tonów DTMF (może MT8870). Kod w Bascomie uwzględnia tylko nadawanie. Hm niech Ktoś zaproponuje jakieś inne kostki z wyjściem BCD. Co do wyłączania: Jakiekolwiek rozwiązanie elektroniczne, będzie ciągle pobierało energię. Oczywiście zwykły przełącznik to bzdura. Co do pamięci: Zgoda, jest to konkretne...
#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...
Witam ponownie z kolejnym problemem! Otóż zabrałem się za budowę zegara na wyświetlaczach LED i szło mi dobrze, dopóki nie utknąłem przy obsłudze przycisku do ustawiania czasu. Przycisk podłączony jest do wyprowadzenia PB0 i podczas przyciskania, zwiera je do masy. Kod programu: int main(void) { // tu odbywa się inicjacja zegara, konfiguracja...
1. Do portuD podpięta jest tylko klawiatura 4x3 bez rezystorów. W deklaracjach CONFIG ...=INPUT, czy CONFIG ...=OUTPUT nie mam żadnych odniesień do portu D. Żadnych też ustawień SET/RESET pinów portu D. 2. Teraz myślę, że kolejny raz klawiaturę 4x3 obsługiwałbym własną procedurą na nie używałbym GetKBD(). Procedura wymaga całego portu; parametry CONFIG...
Mam taki problem ,że po kilkukrotnym przyjęciu rozkazów z pilota program mi się wiesza. Przez kilka naciśnięc przycisku pilota pokazuje mi kod i adres i przestaje, na wyświetlaczu jest ostatnia wartość i nie reaguje na kolejne naciśnięcia pilota. Wcześniej nie miałem takich problemów. Czy to jest wina procka?? Dodam że jest to wersja 16PI i jest taktowany...
Z dyskusją jest tak, jak z grą na boisku. Bronisz się, gdy atakują, bronią się, gdy atakujesz. Może to być ciekawa gra, ale nie musi. Wszystko zależy od rangi i poziomu graczy. Stawiam na konkrety nie na samozachwyt. Cenne mienie odpowiednio bym zabezpieczył i na pewno nie w piwnicy. Temat zabezpieczenia mienia znam i nie będę się wymądrzał, powiem,...
Witam, ............ Kiedy wentylator jest wyłączony, klikam szybko 2 razy przycisk, wtedy wentylator załącza się na 20 min. Tylko tyle umiem :) Jeżeli komuś nie chciałoby się mi pomagać to chociaż prosiłbym o wskazówkę jak Wiem że układy czasowe w uC są nie dokładne ale mi nie potrzebna dokładoność co do 1 sek :). Jeżeli zamiast 10 min będzie 9 albo...
Witam, chcę zrobić na procesorku Atmega8 urządzenie działające na zasadzie przekaźnika bistabilnego tzn. po naciśnięciu przycisku podłączonego np. do nogi PC6 procka chcę uzyskać stan wysoki na wyjściu PC5 aż do ponownego naciśnięcia przycisku, i naciśnięcie następnego przycisku załącza stan wysoki na kolejnym wyjściu. Napisałem sobie program ale nie...
Witam Robie pierwsze kroki w programowaniu w języku bascom. Stanąłem przed problemem zdefiniowania w tym języku pewnych warunkowych komend dla procka atmega8. Jeśli ktoś może mnie nakierować to z góry dziękuję. O to moje problemy: 1. Konkretnie chodzi o to by układ reagował np poprzez zapalenie diody led w chwili gdy przycisk podłączony do tego układu...
Jestem w trakcie tworzenia sobie menu swietlnego, pomysl gdzies tam podpatrzylem w internecie , spodobal mi sie i chcialem go zrealizowac a przy okazji lepiej poznac C. Ale napotkalem pewien problem. Otoz program ma dzialac tak by po przycisnieciu s1 mozna by bylo wybrac konkretna funkcje programu. Przycisk s2 mialby uruchamiac i zatrzymywac dana funkcje...
Witam Problem zapewne dla wielu z Was banalny. Pracuję nad projektem, który wymaga bardzo krótkich czasów sygnałów, rzędu kilkudziesięciu ms. Opracowałem program, który co prawda poprawnie wysyła impuls, jednak jest on "bezpieczny" tylko dla długich czasów sygnałów. W moim przypadku istnieje duże ryzyko, że guzik zostanie przyciśnięty dłużej i urządzenie...
Witam, piszę program na Atmega8 i mam problem z przyciskiem. Część kodu zaprezentowałem poniżej. Po przyciśnięciu przycisku na wyświetlaczu pojawiają się kolejne cyfry. Jednak musze przytrzymać przycisk z 2 sekundy żeby zmienna licznik wzrosła o jeden. Jeśli usunę tą druga pętlę if (sprawdzającą czy zmienna sprawdz = 1) wówczas przycisk działa normalnie....
Uczę się programować mikrokontrolery z książki Pawła Borkowskiego: "AVR&ARM7. Programowanie mikrokontrolerów dla każdego" . Ćwiczenie, które mam do wykonania, wygląda tak: To ćwiczenie należy do trudnych, gdyż wiedzę konieczną do jego wykonania należy zdobyć samodzielnie. Na rysunku 7.9 widać schemat z podłączoną tylko jedną diodą. Należy układ obsłużyć...
Poniżej moje rozwiązania kontroli przycisku. Przede wszystkim są niezawodne i nieomylne ;) Jedyna wada (o ile można to tak nazwać) to sytuacja gdy w jednym czasie wciśniesz więcej niż jeden guzik - po prostu będzie wolniej badać te przyciski. Oczywiście można to łatwo obejść przenosząc timer z obsługi klawisza do pętli głównej tuż przed blok kontroli...
Witam. Zacząłem sobie programować uC w C i już na początku mam problem. Może mi ktoś wyjaśnić czemu pierwszy program działa, a drugi nie? Ten działa int main(void) { // Wszystkie linie portu D będą wyjściami DDRD = 0xFF; // 0xFF binarnie 1111 1111 PORTD = 0x03; DDRC = 0x00; // Linie portu C będą wejściami PORTC = 0xFF; // z podciąganienm-...
Witam, napisałem program, w którym chciałem użyć przerwania do zliczania ilości naciśnięć, ale program nie działa prawidłowo, nie zlicza równomiernie, tak jakbym za jednym naciśnięciem naliczało po 2 czy 3 razy, oto kod programu: /* Program obsługujący przerwania, po naciśnięciu przycisku podpiętego pod PD2 (INT0) Diody zapalają się kolejno...
Jak na początkującego programistę błahy problem jest dużym problemem. Próbuje napisać taki program Opracowanie programu realizującego sekwencyjne zapalanie się diod LED w kolejności: LED0, LED1, LED2, LED3, LED0 itd. dla stanu logicznego „0” na wejściu SW0 oraz LED3, LED2, LED1, LED0, LED0 itd. w przeciwnym przypadku. Zmiana kierunku zapalania...
Witam. Chcę zaprogramować procesor Atmega 8, tak aby po przyciśnięciu przycisku1 zapaliła się dioda i świeciła do momentu zwarcia przycisku2. (przyciski zwierane do masy) Napisałem taki program, lecz w efekcie dioda cały czas świeci. Nie wiem co jest źle, może ktoś zauważy jakiś błąd: [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 1000000 Config...
Witam. Chcę nauczyć się programować micro switch'a. Napotkałem na typowe "drgania styków" i korzystając z poradnika: [url=http://mirekk36.blogspot.com/2012/1... Zauważyłem, że podciąga On klawisz do VCC i stąd moje pytanie: Dlaczego tak się robi i czy musi być ten klawisz w stanie wysokim. [syntax=c] #include...
Witam serdecznie, Mam pewien problem. Podczas naciśnięcia klawisza(INT0 podciągnięty zewnętrznym rez do 5V) procesor się resetuje. Uprościłem kod maksymalnie (bez funkcji LCD i to samo. I nie mogę dociec przyczyny . Z góry dziękuję za jakiekolwiek sugestie. Dodam że nie grzebałem nic w fusebit'ach (procek chodzi na wewnętrznym rezonatorze RC 1MHz)....
bo teraz wysyłając dane poleceniem Printbin i tak nadawane są one jako ramka transmisji szeregowej (UART) i występują tu takie same problemy jak w rozwiązaniu przedstawionym przeze mnie. Myślałem, że jak dane będą zakodowane wewnątrz ramki to będzie lepsza jakość łącza. Jeśli chcesz robić manchester to musisz ręcznie sterować pinem i ręcznie próbkować...
To jak sprawdzasz to sprawdzaj w rejestrze PIND, a nie PORTD, w którym jest to co do niego zapisałeś.
Nastepnym razem napisz jaki masz blad, na moje to zapis powinien byc i=i+1 oraz i=i-1
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...
Mam podobne zadanie i zrobiłam tak: [syntax=vbnet] Do Incr Czas1 If Czas1 >= 2000 Then : Czas1 = 2000 : Led = 0 : End If Incr Czas2 If Czas2 >= 2000 Then : Czas2 = 2000 : Led = 0 : End If Debounce K1 , 0 , Guzik1 , Sub Debounce K2 , 0 , Guzik2 , Sub Waitms 1 Loop Guzik1: Czas1 = 0 If Czas2 < 200 Then Led = 1 Return Guzik2: Czas2 = 0 If Czas1...
Jeszcze raz powtarzam. Nie znasz zasad pisania funkcji: http://www.java2s.com/Tutorial/C/0160__F... i dlatego: ... na ekranie następuje apokalipsa.
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...
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);...
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...
Pierwsze co się rzuca w oczy to użycie złego operatora. Przy konfiguracji rejestrów używasz operatora negacji logicznej (!) a powinna być negacja bitowa (~).
Może to zły kierunek podpowiedzi: Tak napisany program powoduje przerwanie na każde drganie przycisku podczas jego naciśnięcia. Może w tym jest przyczyna? Aby to sprawdzić albo zmień program albo dodaj kondensator do przycisku + zmień wywołanie INT1 na wywołanie poziomem nie zboczem.
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.
atmega8 tanie? Poza tym nie do końca jasno rozumiem ideę działania. Jeśli chodzi o zapamiętywanie pozycji i potem oscylowanie po naciśnięciu switcha między pozycją neutralną i zapamiętaną to jeszcze musisz określić rodzaj silnika (krokowy, DC, BLDC, ...). Moim zdaniem atmega8 to za dużo jak na taki projekt, choć wtedy zawsze masz zapas pamięci FLASH.
Chodzi Ci o zapalanie diody stanem niskim? Musisz ustawić kierunek pinu na wyjście i wpisać do niego 0. Tylko tyle:) P.S. Sprecyzuj, czy chodzi Ci o zapalanie diody, czy obsługę jakiegoś przycisku, po naciśnięciu którego dioda ma się zapalić.
symulacja naciśnięcia atmega naciśnięcia atmega8 nestor
piekarnik mastercook wymiana termostatu zelmer mikser kondensator podłączyć układ miękki start
Jak zainstalować Linux na tablecie Acer Iconia Tab 8 W810 Pasywny regulator barwy dźwięku o niedużym zakresie regulacji