Skowron93 Napisano Luty 21, 2012 Udostępnij Napisano Luty 21, 2012 Witam Ponownie W ramach nauki stworzyłem( z ogromną pomocą ze strony forumowiczów - dzięki wielkie :] ) swój pierwszy programowalny układzik który zmienia kolory w diodzie RGB. Jako że nie zamierzam skończyć na samej diodzie RGB, postanowiłem dodać przełącznik( ON - OFF ) który miałbym podłączyć do portu B3 i w zależności od tego czy jest podłączony czy nie jest, wywoływać dane akcje. Szukałem po schematach na forum i znalazłem tylko przyciski podłączone do resetu dlatego pytam: Jak podłączyć przełącznik( PB3->Przełącznik->Masa? ) i jak sprawdzić jego stan w programie w języku C? Link do komentarza Share on other sites More sharing options...
pawcio0928 Luty 21, 2012 Udostępnij Luty 21, 2012 W elektronice stosuje się najczęściej chwilowe przyciski podłączone do portu a z drugiej strony do masy. A do sprawdzenia wykorzystuje się funkcje IF Link do komentarza Share on other sites More sharing options...
pyraminx Luty 21, 2012 Udostępnij Luty 21, 2012 Jeśli chodzi o samo podłączenie to jest dokładnie takie samo jak w przypadku przycisków chwilowych (monostabilnych) Link do komentarza Share on other sites More sharing options...
piotreks-89 Luty 21, 2012 Udostępnij Luty 21, 2012 pawcio0928 no nie do końca. Odkłócanie styków także trzeba jakoś zrealizować. Sprzętowo czy programowo to już kwestia gustu. Jeśli ktoś pisze w C to twój komentarz jest jak najbardziej poprawny, jeśli w Bascomie to już pośrednio (Debounce to przecież IF z odpowiednim odczekaniem, które również można ustawić). Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
pawcio0928 Luty 21, 2012 Udostępnij Luty 21, 2012 Chodziło mi o c ponieważ w ostatnich czasach stał się on bardziej popularny od bascoma. Link do komentarza Share on other sites More sharing options...
Skowron93 Luty 21, 2012 Autor tematu Udostępnij Luty 21, 2012 Chodziło mi o c ponieważ w ostatnich czasach stał się on bardziej popularny od bascoma. No i wspominałem że piszę w C. Wiem do czego służy funkcja IF ;D Chodzi bardziej o to, jak sprawdzić. Napisałem taki kod, jednak nie działa: #include <avr/io.h> #include <util/delay.h> #define B(x) (1<<x) int CZAS = 1000; void Zapal( int p1, int p2, int p3 ) { if( PORTB == B(3) ) CZAS = 100; else CZAS = 1000; if( p1 == 1 ) PORTB |= B(0); else PORTB &= ~B(0); if( p2 == 1 ) PORTB |= B(1); else PORTB &= ~B(1); if( p3 == 1 ) PORTB |= B(2); else PORTB &= ~B(2); _delay_ms( CZAS ); } int main(void) { DDRB = 0b111; while(1) { Zapal(1,0,0); Zapal(1,1,0); Zapal(1,0,1); Zapal(0,1,0); Zapal(0,1,1); Zapal(0,0,1); } } [ Dodano: 21-02-2012, 23:33 ] Przełącznik mam pod portem B3 Link do komentarza Share on other sites More sharing options...
Foadrian Luty 21, 2012 Udostępnij Luty 21, 2012 Witaj! Tym kawałkiem kodu sprawdzisz czy na pinie b3 jest stan niski void button_pres(){ if(bit_is_clear(PINC,PC0)){ _delay_ms(25); // eliminuje problem drgających styków if(bit_is_clear(PINC,PC0)){ // Zadanie do realizacji } Link do komentarza Share on other sites More sharing options...
marek1707 Luty 21, 2012 Udostępnij Luty 21, 2012 Port czytasz przez rejestr PINx, np: if (PINB & B(3)) Część po "if" wykona się, gdy ten jeden bit PINB.3 będzie w stanie 1, bo wtedy całe wyrażenie w nawiasie będzie różne od zera. Jeśli masz wyłącznik zwierający do masy, to jeszcze wypadałoby dorobić coś, co podciągnie linię portu do stanu wysokiego gdy nic nie wciśniesz. Możesz dać zewnętrzny rezystor (np. 10k do Vcc) ale możesz uruchomić "podciąg" wewnątrz procesora i oprócz ustawiania kierunku: DDRB = 0b111; dopisać jeszcze: PORTB = 0b1000; Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »