Witam,
Od kilku dni walczę z pewnym problemem. Szukałem rozwiązań w różnych źródłach, na różnych stronach, w rożnych książkach i poradnikach... Jednak wszystkie wykonywane przeze mnie operacje nie przynoszą pożądanego rezultatu...
Przyznam się bez bicia, że mam za sobą już bardziej zaawansowane projekty, ale jak widać, najtrudniejsze do rozwiązania są pozornie najprostsze zadania...
Moim zadaniem jest zbudowanie układu złożonego z dwóch diod LED oraz dwóch przycisków monostabilnych.
Przycisk monostabilny powinien wywoływać zmianę stanu (zliczanie). Dla wartości parzystych powinien ustawiać odpowiednie wyjście na stan wysoki, dla wartości nieparzystych powinien podawać stan niski.
Program na spełniać następujące warunki:
Jeśli przycisk 1 wciśnięty - zapal LED 1
ponowne wciśnięcie przycisku 1 - zgaś LED 1 (symulacja przycisku bistabilnego)
Jeśli przycisk 2 wciśnięty - zapal LED 2
ponowne wciśnięcie przycisku 2 - zgaś LED 2 (symulacja przycisku bistabilnego)
(powyższe można ewentualnie zastąpić przyciskami bistabilnymi, ale odgórnie narzucono aby było to zrealizowane na przyciskach monostabilnych...)
Ponadto:
Równoczesne świecenie obu diod jest zabronione, czyli wciśnięcie jednego przycisku wyłącza drugą diodę i odwrotnie.
TABELA PRAWDY
Schemat działania można rozpisać w postaci programu drabinkowego, jednak nawet to nie pomaga. Próbowałem wielu wariantów i uzyskałem pewien nie do końca satysfakcjonujący mnie efekt. Mianowicie, program cały czas realizuję operację bitową (zliczanie bitów) kiedy ja tylko chciałbym zmieniać poszczególne stany pomiędzy 0 i 1. Próbowałem wykonać to na zmiennych globalnych uzależniając od nich działanie diody, ale wtedy pojawiał się problem związany z instrukcjami warunkowymi. Gdy program wszedł do jednego ifa, to już tam zostawał, miast wrócić na początek ;/ żadne funkcje switch-case, przerwania, nawet nieszczęsne goto itp nie dawały pożądanego rezultatu.
Działanie programu wygląda w praktyce na zliczanie bitów (przyciski wykazują zmianę stanu dopiero po kilkukrotnym wciśnięciu) dla przykładu, poniższy program dla wciskanego przycisku nr 1 zmienia stany w następujący sposób:
a dla dla wciskanego przycisku nr 2 zmienia stany w następujący sposób:
Choć dla mnie to i tak zbytni chaos.
Próbuję zrealizować program, który będzie zliczał ilość wciśnięć przycisku i w zależności, czy jest to wciśnięcie nieparzyste ustawi stan wysoki lub jeśli jest to wciśnięcie parzyste ustawi stan niski.
Przeanalizowałem następujące wątki:
Włączanie i wyłączanie diody za pomocą jednego przycisku
Wzorowałem się również na tym kodzie:
Tu mój kod w obecnej postaci:
Naprzemienne wciskanie przycisków, powoduje totalny chaos... Nie wiem już jak podejść do tego tematu. Może ktoś z Was, spojrzy na to "świeżym okiem" i dostrzeże coś, co cały czas umyka mojej uwadze.
Pozdrawiam
Od kilku dni walczę z pewnym problemem. Szukałem rozwiązań w różnych źródłach, na różnych stronach, w rożnych książkach i poradnikach... Jednak wszystkie wykonywane przeze mnie operacje nie przynoszą pożądanego rezultatu...
Przyznam się bez bicia, że mam za sobą już bardziej zaawansowane projekty, ale jak widać, najtrudniejsze do rozwiązania są pozornie najprostsze zadania...
Moim zadaniem jest zbudowanie układu złożonego z dwóch diod LED oraz dwóch przycisków monostabilnych.
Przycisk monostabilny powinien wywoływać zmianę stanu (zliczanie). Dla wartości parzystych powinien ustawiać odpowiednie wyjście na stan wysoki, dla wartości nieparzystych powinien podawać stan niski.
Program na spełniać następujące warunki:
Jeśli przycisk 1 wciśnięty - zapal LED 1
ponowne wciśnięcie przycisku 1 - zgaś LED 1 (symulacja przycisku bistabilnego)
Jeśli przycisk 2 wciśnięty - zapal LED 2
ponowne wciśnięcie przycisku 2 - zgaś LED 2 (symulacja przycisku bistabilnego)
(powyższe można ewentualnie zastąpić przyciskami bistabilnymi, ale odgórnie narzucono aby było to zrealizowane na przyciskach monostabilnych...)
Ponadto:
Równoczesne świecenie obu diod jest zabronione, czyli wciśnięcie jednego przycisku wyłącza drugą diodę i odwrotnie.
TABELA PRAWDY
Schemat działania można rozpisać w postaci programu drabinkowego, jednak nawet to nie pomaga. Próbowałem wielu wariantów i uzyskałem pewien nie do końca satysfakcjonujący mnie efekt. Mianowicie, program cały czas realizuję operację bitową (zliczanie bitów) kiedy ja tylko chciałbym zmieniać poszczególne stany pomiędzy 0 i 1. Próbowałem wykonać to na zmiennych globalnych uzależniając od nich działanie diody, ale wtedy pojawiał się problem związany z instrukcjami warunkowymi. Gdy program wszedł do jednego ifa, to już tam zostawał, miast wrócić na początek ;/ żadne funkcje switch-case, przerwania, nawet nieszczęsne goto itp nie dawały pożądanego rezultatu.
Działanie programu wygląda w praktyce na zliczanie bitów (przyciski wykazują zmianę stanu dopiero po kilkukrotnym wciśnięciu) dla przykładu, poniższy program dla wciskanego przycisku nr 1 zmienia stany w następujący sposób:
a dla dla wciskanego przycisku nr 2 zmienia stany w następujący sposób:
Choć dla mnie to i tak zbytni chaos.
Próbuję zrealizować program, który będzie zliczał ilość wciśnięć przycisku i w zależności, czy jest to wciśnięcie nieparzyste ustawi stan wysoki lub jeśli jest to wciśnięcie parzyste ustawi stan niski.
Przeanalizowałem następujące wątki:
Włączanie i wyłączanie diody za pomocą jednego przycisku
Wzorowałem się również na tym kodzie:
Kod: C / C++
Tu mój kod w obecnej postaci:
Kod: C / C++
Naprzemienne wciskanie przycisków, powoduje totalny chaos... Nie wiem już jak podejść do tego tematu. Może ktoś z Was, spojrzy na to "świeżym okiem" i dostrzeże coś, co cały czas umyka mojej uwadze.
Pozdrawiam
Moderowany przez tmf:Poprawiłem tytuł - C++ to nie C
