Skocz do zawartości

Podłączenie led-a i switch-a GND czy Vcc


kamil-s

Pomocna odpowiedź

Zaczynam bawić się z programowaniem AVR na razie w basom i stanąłem przed pewnie banalnym problemem, które podłączenia led-a i switch-a są poprawne?

Na internecie widziałem przyciski pociągnięte i to gnd i to vcc i już nie wiem. Jeżeli da się podłączyć i tak i tak to trzeba to jakoś ująć w programie?

(pomińmy opornik przy ledzie)

Link do komentarza
Share on other sites

LED obojętnie, jeśli będzie podłączona do VCC(b), to włączać ją można stanem niskim na pinie uc, jeśli do GND(a), to świecić będzie, jeśli na wyjściu uc będzie stan wysoki. Jeśli chodzi o przycisk to zdecydowanie lepiej do GND(b), bo nie musisz używać dodatkowego rezystora - podciągasz wewnętrznym do VCC. Jeśli byłby z kolei podłączony do VCC(a), to musiałbyś samodzielnie zewnętrznym rezystorem podciągnąć do GND.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

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

Dziękuje wszystkim za pomoc, coś mi z tą elektroniką nie idzie, muszę się rozejrzeć za jakąś dobrą książką 🙂

Mam niestety jeszcze jeden problem ponieważ led działa silnik nie 🙁

Zadaniem programu jest to aby po wciśnięciu switcha obojętnie który silnik ruszył się w obojętnie którym kierunki.

Może wskażecie mi jakieś nieścisłości w schemacie lub (i to bym wolał) programowe.

   $regfile = "m8def.dat"
   $crystal = 1000000


Config Portb = Output
       Portb = &B0000000
Config Portd = Output
       Portd = &B0000000
Config Portc = Input
       Portc = &B1111111


Do


  If Pinc.0 = 0 Then
  Portb.0 = 1
  Portb.1 = 1
  Portb.2 = 1
  Portd.0 = 1

  Waitms 1
  Portb.0 = 0
  Portb.1 = 0
  Portb.2 = 0
  Portd.0 = 0
  End If


Loop

   End

PC0 to led podłączony do gnd

pb0 to switch podłączony do gnd

Link do komentarza
Share on other sites

Dziękuje wszystkim za pomoc, coś mi z tą elektroniką nie idzie, muszę się rozejrzeć za jakąś dobrą książką 🙂

To twój najlepszy pomysł jaki widziałem. Masz:

- źle napisany program - brak włączonego podciągania pinu switcha do Vcc

- źle zaprojektowany układ - brak sprzętowego rezystora podciągającego pin switcha do Vcc

Wybierz sobie odpowiedź z powyższych.

Link do komentarza
Share on other sites

Piszesz, że do PC0 jest podłączony led, a w programie cały port C masz ustawiony jako wejście, w dodatku nawet sprawdzasz stan na pinie z ledem (if pinc.0). Ogólnie coś pokopane masz porty w programie.

Link do komentarza
Share on other sites

Po pierwsze primo, wg tego co napisałeś (nie wg schematu) to w if'ie sprawdzasz stan na LEDzie, a później ustawiasz pin switch'a na 1.

Po drugie primo, żeby załączyć któryś z kanałów mostka to musisz podać stan wysoki na Enable A/B, wysoki/niski na input 1/3 i niski/wysoki na input 2/4.

Po trzecie primo, program ni w ząb nie pasuje do schematu.

Link do komentarza
Share on other sites

Jeśli byłby z kolei podłączony do VCC(a), to musiałbyś samodzielnie zewnętrznym rezystorem podciągnąć do GND.

Z tego co słyszałem to są uC które mają pull-down'a.

Są, na przykład STM32F1xx i wyżej. 🙂

Nie pisałem o tym, bo podstawowe uc AVR go nie mają, a wątpię aby kamil-s używał innych skoro zadaje takie pytanie 😉

Link do komentarza
Share on other sites

Racja poplątałem się w kable, gdy podłączyłem wszystko porządnie i zrobiłem minimoduły np z kabelka gniazda i diody wszystko stało się przejrzyste i bardziej estetyczne 🙂

Mam jeszcze obawę dot. PWM. U mnie im mniejsze pwm tym silnik się szybciej kręci. 1 to full, a 255 stoi w miejscu. czy tak ma być? po innych programach widzę że chyba na odwrót.

$regfile = "m8def.dat"
$crystal = 1000000

'Konfiguracja sterowania sprzętowym PWM
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down

Config Pind.0 = Output
Portd.0 = 1

Do

Pind.0 = 1
Pwm1a = 1

Loop
End
Link do komentarza
Share on other sites

kamil-s, zmień kod na taki:

$regfile = "m8def.dat"
$crystal = 1000000

'Konfiguracja sterowania sprzętowym PWM
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up

Config Pind.0 = Output
Portd.0 = 1

Do

Pind.0 = 1
Pwm1a = 1

Loop
End 
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.