http://obrazki.elektroda.pl/5302716200_1... Witam! Chciałbym wam przedstawić mojego drugiego robota klasy linefollower. Teraz jest on na trochę większym poziomie niż Wolverine. Ogólnie koncepcja nowego robota powstała po zawodach T-Bot, na których zobaczyłem po raz pierwszy robota Botland Teamu. Decyzja padła szybko i była jednoznaczna....
https://obrazki.elektroda.pl/9170570400_... Witajcie. Dziś chciałbym razem z Wami zajrzeć do wnętrza przekaźnika bistabilnego BIS-411. Dla osób które nie znają tematu i nie wiedzą czym owe urządzenie jest przytoczę opis ze strony producenta: Elektroniczny przekaźnik bistabilny umożliwia załączenie oświetlenia lub innego urządzenia...
Witam. Od kilkunastu godzin próbuję coś zrobić z tym programem i nie mogę... Może ktoś z Was na coś wpadnie. Procesor: ATmega8 Kompilator: avr-gcc Chcę zrobić obsługę klawiatury złożonej z 5 przycisków. Podłączyłem je do portu C, włączyłem pull-up'y, przyciski przywierają wejście do masy. Chcę ( koniecznie ) zrobić to tak, żeby przycisk reagował tylko...
https://obrazki.elektroda.pl/5391511100_... To pięknie pomalowane cudo, które możemy podziwiać na zdjęciach to zegar szachowy. Służy do odmierzania czasu dla każdego z graczy podczas gry w szachy. Dodatkowe opcje zaimplementowane w nim opiszę poniżej. Ostatnio na nowo odkryłem ciekawą rozrywkę jaką niewątpliwie są szachy. Niestety...
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/
Pokazałeś fragment kodu , a my mamy zgadywać co zawiera reszta :?: Pokaż całe źródło , albo ... :D Piotrek
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ę...
Może zrób tak: If Pind.2 = 0 Then 'i jest wciśnięty przycisk PIND.2 Incr Opoznienie_odczytu 'no bo przycisk ma drgania dłużej niż 237us- niech zwiększy 'to sprawdzanie powtórne do 17ms If Opoznienie_odczytu >= 70 Then 'dajmy mu na wygaszenie drgań 17ms If Temp0 = 0 Then ' i jest zezwolenie na zmianę stanu Gosub Ustawianie Temp0 = 1 ' zablokuj zezwolenie...
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...
bateria / zasilacz 12v przez przetwornicę, zegar korzysta z rtc, chociaż nie wiem czy robi to różnicę. A i jeszcze jedno pytanie a konkretnie czy jeżeli zrobię obsługę zegara w timerze to zmienne przechowujące czas będą globalne i czy powinny być typu volatile?
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...
Czyli że na tym układzie co ja mam zrobiony to nie będzie działało ??? To co napisałem nie znaczy "czyli" .. Oczywiście, silnik będzie pracował w układzie dwóch przekaźników przy konfiguracji mostka ' H '; ale, ponieważ są to łączniki mechaniczne załączające i wyłączające obciążenie indukcyjne to musisz liczy się z towarzyszącymi zakłóceniami (BEMF)...
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...
Sorry, skoro jesteś początkującym to daj sobie spokój z tymi bitami... Masz ustawione fabrycznie 1 MHz, normalny reset itd. To Ci wystarczy w zupełności do poznania Atmegi (czyli standardowa obsługa diód i przycisków - od tego większość zaczyna(ła) ) Później najwyżej przestawisz na 8 MHz albo na zewnętrzny kwarc.
co napisaliscie jako swoj pierwszy program na dany uC w danym jezyku (rozbudowy sie licza, byle by wciaz byla to ta sama baza) n. n. - literka, cyferke z przodu dodam sam. zachowujcie chronologie w swoich dokonaniach na roznych platformach jezykowych i sprzetowych, tak aby to mialo sens! ____________________ 0x1-a. Freddie Chopin - migacz diodkami o...
Witam, mam problem z opanowaniem przycisków w pisanym/przerabianym przezemnie programie znalezionym na elektrodzie :( Zasada działania ma wyglądać tak: Pojawia się ekran z napisem "ustaw zegar" Gdy nacisnę przycisk podłączony do PD1 ma przejść do odliczania lat. Gdy pojawi się miesiąc o który mi chodzi naciskam przycisk podłączony do PD0 Program odlicza...
Witam. Jestem nowym użytkownikiem tego forum. Z mikrokontrolerami dopiero zaczynam swoja przygodę. Piszę ponieważ napisałem program wyłącznika schodowego z regulowanym czasem działania i gdy programuje mikrokontroler to nie wykazuje on zadnych oznak zycia. Mikrokontroler ma być sterowany czterema przyciskami. Dwoma przyciskami niestabilnymi typu microswitch...
Witam A więc jestem początkujący w świecie mikrokontrolerów. I mam problem!!! W świecie elektroniki miałem już do czynienia więc to nie problem. Dokładnym problemem jest programowanie, tak pierwszy program mi się udał czyli migająca dioda, ale gdy chciałem już przyciski do tego dołączyć to jest coś nie tak:( To jest program taki najprostszy: $regfile...
Witam wszystkich fachowców, Z programowaniem uC w języku Bascom dopiero zaczynam wiec bardzo proszę o wyrozumiałość. Chodzi mi o wstawienie obsługi przycisku. Całość ma działać w następujący sposób -jeśli wciskam i cały czas trzymam przycisk, podając stan niski "0" na pind.1, to zaczyna działać pierwsza część programu. Natomiast w momencie kiedy puszczam...
Witam serdecznie- ponizej przedstawiam program (przerobiony z jednej ze znanych stron), prosze podpowiedziec jak i gdzie napisac aby o przycisniecie przyciskow podlaczonych do atmegi8 uzyskac odpowiednio sygnaly na wyjciach (+5V) w momencie nacisniecia przelacznika. #include <avr/io.h> /***************************************... Definicje...
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...
Witam. Poraz kolejny proszę o pomoc. Tak to już jest z początkującymi :D Napisałem program który ma w prosty sposób sterować serwonapędem. Oto on: #include "avr/io.h" int main() { DDRB=0xff; DDRC=0x00; PORTC=0xff; OCR1A=17600; ICR1=20000; TCCR1A|=(1<<COM1A1) | (1<<COM1A0) | (1<<WGM11); TCCR1B|=(1<<CS10) | (1<<WGM13) | (1<<WGM12);...
Poproszę o sprawdzenie kodu. W gruncie rzeczy działa, tak jak powinien: jeden z przycisków diodę zapala (czy też "zaświeca"), ale po zwolnieniu go ona gaśnie. Naciśnięcie drugiego zapala inną diodę, którą wyłącza ponowne naciśnięcie tego samego przycisku. Chodzi mi głównie o wytknięcie ewentualnych mankamentów, możliwości, kiedy ten kod się mógłby nie...
Witam już od jakiegoś czasu próbuję zrobić na ATmega8 wykryła mi naciśnięcie guzika i nic. próbowałem już według wielu instrukcji, z podciąganiem, bez i nic. teraz próbuję na kodzie prtzepisanym z książki "mikrokontrolery AVR w praktyce", z rezystorem podciągającym 1kΩ. jest kompletny brak reakcji w przypadku zaciśnięcia lub rozwarcia zworki. może...
Witam Chciałem poćwiczyć obsługę przycisków, sprawdzanie stanów portów i wystawianie odpowiedniej odpowiedzi na wyświetlaczu LCD. W ramach ćwiczeń napisałem krótki program: $regfile = "m8def.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5...
Napisałem program do sterowania serwami z wykorzystaniem PWM oraz wszystkim ma sterować klawiatura podpięta tylko do przerwania INT0 (wciśnięcie klawisza na klawiaturze powoduje odpalenie przerwania oraz zmienia stan jednego portu. Poniżej zamieszczam kod. #include <avr/io.h> //#include <avr/signal.h> #include <avr/interrupt.h> #define...
$regfile = "m8def.dat" $crystal = 1000000 Config Portc.5 = Input Config Portc.4 = Output Config Portb.0 = Output Portb.0 = 1 Portc.5 = 0 Portc.4 = 0 Do If Pinc.4 = 1 Then Portb.0 = 0 Else Portb.1 = 1 End If Loop End Portb.0 to dioda która ma gasnąć jeżeli naciśnie się przycisk (portc.4). Przycisk(krańcówka) podłączony jest z jednej strony...
Poniżej zamieszczam program. Nie mogę wymyślić w jaki sposób po naciśnięciu kombinacji dwóch przycisków np 1 i 2, wyświetlacz się wyczyścił, ale też żeby funkcje tych przycisków zostały zachowane czyli jak nacisnę klawisz 1 to ma się wyświetlić "1", jak drugi "2" jak wcisnę pierwszy potem drugi i je puszczę to wyświetlacz ma się wyczyścić (LCD_CLEAR;)...
"Zbyt dużo" - to może być 200 linii, ale nie 10 czy dwie, jak w Twoim przypadku. Ja bym raczej radził nie pakować kodu do pętli głównej, o ile potrafisz zrobić obsługę DS18xx w przerwaniu.
Przeszukałem dokładnie każdy temat dotyczący obsługi przycisków pod ATmegą8, ATmegą16 czy ATmegą32 jednak w żadnym z nich nie znalazłem instrukcji, która krok po kroku wyjaśniłaby schemat działania tej prostej klawiatury. .... Piny kolumn K1, K2, K3 i K4 klawiatury łączę kablami odpowiednio z pinami PC0, PC1, PC2 i PC3 portu C mikroprocesora. Piny...
Piszesz, że masz doświadczenie z LCD i Atmega8. Więc mogę Ci pomóc to zrobić.
Witam, tu w Zegarek docelowo będzie używany przez dziewczynę, więc musi być przejrzysty. - to już szowinizm...
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...
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...
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??
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.
To jest przykład obsługi przycisków- zresztą bardzo prosty. Dlatego napisałem o help-ie.
Chcesz wyzwalać przerwanie w chwili naciśnięcia klawisza ? Tak zrozumiałem, jeśli nie masz za wiele tych klawiszy w układzie np. 2 to możesz je po prostu podłączyć wprost na końcówkę odpowiedzialną za wyzwolenie przerwania INT0, INT1. Pamiętaj tylko o tym aby przełącznik spolaryzować do plusa zasilania opornikiem oraz równolegle do niego podłaczyć kondensator...
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ć.
nie umiem tego zrobić więc proszę o fragment kodu do obsługi choćby jednego przycisku
Fnkcja LOAD robi przeliczenia za ciebie. Jeżeli użyjesz Timerx = y to będziesz musiał sam poodejmować. Najlepiej przenieś zmianę stanu portu do przerwania, a w pętli głównej daj tylko wyświetlanie i obsługę przycisków.
Nic sobie nie robi z naciskania guzika bo właśnie obsługuje przerwanie. Ja bym to zrobił w ten sposób. Przerwanie od czujki uruchamia jakiś timer i kończy się obsługa przerwania. Timer odmierza czas i po jego upłynięciu sprawdza jakąś zmienną i w zależności od niej uruchamia alarm bądź nie. I tak jeśli przed przyjściem przerwania z tego timera naciśnięty...
Ja nie używam debounce. Zazwyczaj stosuje konstrukcję: If PINX.x = 0 then waitms 20 if PINX.x = 0 then 'obsługa przycisku end if end if Zajmuje mniej.
Zadanie jest proste, naprawdę. Zadanie można podzielić na 4 podzadania: - obsługa i odczyt temperatury - obsługa i odczyt klawiatury - obsługa wyświetlacza - zapalanie diody Każde z tych zadań jest w miarę proste. Na sieci jest mnóstwo przykładów. Wystarczy w głównej pętli programu sprawdzać klawiaturę, w zależności od sytuacji odczytywać temperaturę,...
Mikrokontrolery to także jak najmniejsze zużycie prądu. Gdzie tylko to możliwe należy je usypiać. W Twoim przypadku możesz wykorzystać co najwyżej uśpienie 'cpu', ponieważ potrzebujesz działających 'timer'ów( przydatna tabela znajduje się w notach przy 'Power Management and Sleep Modes', np. 'atmega8' str.33) Zalecana przez twórców 'avr-libc' sekwencja...
O i dzięki schematowi od razu widać błąd: http://obrazki.elektroda.pl/6463515500_1... Przyciski podłącz do GND, a nie Vcc, a w programie włącz pull-up, i ustaw reakcję INT na zbocze opadające. Tylko czy wiesz dlaczego Twój układ nie działał? Osobna sprawa do drgania styków przycisku: http://mikrokontrolery.blogspot.com/2011...
Jakoś nie widzę żebyś tu korzystał z przerwania od Timera... Bo nie musisz ;p mogłbyś pokazać jakiś przykład obsługi przycisku w przerwaniu timera ? Nawet jakiś URL do innego projektu. Więc chyba oczywistym jest że ten fragment kodu należy umieścić w przerwaniu od Timera.
Być może bascom'owe instrukcje obsługi lcd nie patrzą na kierunek w jakim działa port, tzn. w w funkcja "Config Lcdpin" ustawia wybrane porty jako wyjścia a pozostałe instrukcje obsługi lcd nie sprawdzają czy to się nie zmieniło. Spróbuj przed instrukcjami od lcd czyli przed obydwoma "cls" ręcznie przestawić wyprowadzenia uC jako wyjścia. Druga sprawa...
Enkoder to mechanicznie zwykły przycisk. Ma też wszystkie wady przycisku, czyli np. drgania styków. Wiele enkoderów na jeden "przeskok" generuje 2-4 impulsów i oczywiście czasy trwania poszczególnych faz zależą od szybkości kręcenia. Przejrzyj darmowe przykłady do książek w mojej stopce - masz tam przykłady obsługi enkoderów w oparciu o ATMega i XMEGA.
Do obsługi przycisków w Bascomie służy "DEBOUNCE"
Zainteresuj się układem PCF8574 działa na I2C.
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.
Do atmegi8mki Ci może nie wejść obsługa FATu. Poszukaj na elektrodzie FAT SD Atmega i coś znajdziesz gotowego. - Napewno nie Bascom :D Potem jakieś przerwanie i mierzyć czas i robić systematyczne opróżnianie buffora na drabinke R2R albo DAC.
Poszukaj kompilatora dla C, z procesorków polecam ATMEGA8 16,32 Ja pisze w FASTAVR, jest demo w sieci i taki program spokojnie w nim skompilujesz, a jak piszesz w C, to w tym kompilatorze spokojnie napiszesz taki program, skompilujesz i wgrasz do procka za pomocą gotowego interface-u na allegro za pare zł, lub zrobisz sam wg opisu. Obsługa LCD w FASTAVR...
Nie pokazałeś całości, a problem może właśnie tkwić w rzeczach, których nie pokazałeś. Ale kilka uwag - po pierwsze przyciski drgają, w efekcie nie dostajesz jednego przerwania tylko dziesiątki. Twoja procedura obsługi to eliminuje, bo jest strasznie długa, ale i tak co najmniej 2 razy zostanie wywołana. Przyciski jak rozumiem masz podciągnięte rezystorem?...
Ach, no tak. Język to bascom a procek np. atmega8
Twoja funkcja do odczytu stanu przycisków powinna wyglądać mniej więcej tak: lcd_goto to pokaż jak ona wygląda. Ogólnie makro: menu_set_xy powinno ustawić kursor w odpowiedniej pozycji gdzie x jest z zakresu to 0 ...15 a y 0 ...1.
Jeżeli skaczesz do podprogramu Dalej to mozę potem z niego powróć a nie skacz z niego ponownie do Klaw z którego to Dalej został wyzwolony. Dodatkowo możesz zwiększyć stos bo często przez niego program sypie się na podprogramach. Sugeruję również w danej chwili ustawienie tylko jednej nóżki jako wyjście gdyż jak u ciebie gdy 3 są wyjściami i na nich...
Zapomniałem napisać mikrokontroler Atmega8
Obsługę przycisków też zrób w przerwaniu timera, jak radzi BlueDarco - nie ma sensu obsługa przerwania zewnętrznego, bo zniszczy Cię drganie styków...
Otóż przycisk mi działa raz na 20+ prób a i to nie zawsze... ;/ [syntax=c]TCCR0 |= (1 << CS00) | (1 << CS02); TCCR2 |= (1 << CS20) | (1 << CS21) | (1 << CS22); TIMSK |= (1 << TOIE0) | (1 << TOIE2); TCNT0 = 253; TCNT2 = 0;[/syntax] atmega8
To by i tak nic nie zmieniło bo tamten kod wykonuje się co sekundę ;) Trzeba by wyjąć wtedy minuty spod tego IF`a sekund :P To też nie wiele da, bo processor jest zajęty w 50% liczeniem czasu dla delay (500 mS w każdej sekundzie!) plus kilka cykli na zmianę wartości flag i portów wyjściowych przez co praktycznie występuje zwłoka w reakcji na przycisk...
atmega8 podłączenie przycisków obsługa przycisków kierownicy atmega obsługa przycisków
kuchenka elektryczna płyta komputer zaczął mulić mikrofala whirlpool talerz
unitel media ekspres krups intuition problemy
Mazda 3 2022 – kontrolka ładowania, prawidłowe napięcie, czujnik IBS, alternator LIN Pilot do bramy przemysłowej nie działa po wymianie baterii – programowanie, naprawa, diagnostyka