logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Zmienne - łaczenie i rozdzielenie (programowanie mikrokontrolery język C)

alluser 10 Kwi 2017 17:00 1113 6
REKLAMA
  • #1 16404529
    alluser
    Poziom 11  
    Posty: 20
    Witam, proszę o pomoc.
    Mam wyświetlacz 7 segmentowy sterowany multipleksowo. Każdą zmienna w1, w2, w3, w4 przyjmuję cyfrę z tablicy znaków.
    przykład
    w1 = 1
    w2 = 3
    w3 = 5
    w4 = 9
    na wyświetlaczu zapala się 1359
    To jest ok i działa prawidłowo każda dowolna liczba od 0 do 9
    Ale problem mam z połączeniem i rozdzieleniem zmiennych.
    Moim zamiarem jest aby zmienne w1 i w2 przyjęły wartość zmiennej "a"
    czyli jeżeli "a" = 29 to zmienna w1 przyjmuję wartość 2 a zmienna w2 przyjmuje wartość 9
    to samo ze zmiennymi w3 i w4 żeby przyjęły wartość zmiennej "b"
    czyli jeżeli "a" = 29 oraz "b" = 15 na wyświetlaczu chciałbym widzieć 2915
    Próbowałem to zmienić przesunięciami bitowymi np.:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    niestety nie działa to prawidłowo ponieważ po przekroczeniu liczby 10 pojawiają się dziwne znaki.
    Nie wiem jak to zrobić żeby zmienne w1 i w2 otrzymały wartość zmiennej "a" oraz w3 i w4 otrzymały wartość zmiennej "b"
    Problem mam też w odwrotnej sytuacji czyli aby zmienna "a" = w1 i w2 i zmienna "b" = w3 i w4
    Proszę o pomoc.
    Dziękuję i pozdrawiam serdecznie,
    Janusz
  • REKLAMA
  • Pomocny post
    #2 16404554
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #3 16404708
    alluser
    Poziom 11  
    Posty: 20
    Dziękuję za pomoc.
    w1 = a/10 oraz w2 = a%10 pomogło. Powinno na początek mi wystarczyć bo to będzie tylko do funkcji którą będę wywoływać bardzo rzadko.
    Wszystko ładnie zlicza od 00 do 99 i licznik się przekręca po 99 do 00 z tym że jak jestem na zero "00" i robię klawiszem a=a-1 czyli a-- odejmowanie to wyświetlacz nie wraca do 99 Nie wiem jak to uzyskać.
    mam zrobione if-em że jeżeli a>=100 to a = 00
    Jest sposób aby wracał do 99 jeżeli przekraczam poniżej 00 ? Czyli trzymam klawisz ze zmienną a-- i cyfry liczą w dół a po przekroczeniu zera znowu zaczyna się liczenie od 99 w dół
    Zmienne są uint8_t
    Proszę o pomoc.
    Dziękuję i pozdrawiam
    Janusz
  • REKLAMA
  • #4 16404947
    szypek2
    Poziom 12  
    Posty: 43
    Pomógł: 5
    Ocena: 5
    If a==00 to a=99
  • #5 16405112
    alluser
    Poziom 11  
    Posty: 20
    Witam,
    dziękuję za odpowiedź. To nie będzie tak jak pisze kolega -Szypek2- Ponieważ licznik ma zaczynać od 00 taki punkt startowy. Więc if a==00 to a =99 daje że nie ma 00 tylko wskakuje na 99.
    Proszę o pomoc.
    Pozdrawiam,
    Janusz
  • Pomocny post
    #6 16405608
    szypek2
    Poziom 12  
    Posty: 43
    Pomógł: 5
    Ocena: 5
    if(Przycisk_od_zmniejszacza_nacisniety){
    if(a==00) then a=99 else a--;
    }
  • REKLAMA
  • #7 16407646
    alluser
    Poziom 11  
    Posty: 20
    Witam, dziękuję za odpowiedź. Chodź wpadłem na to rozwiązanie jeszcze przed przeczytaniem postu.
    Zgadza się. Dodajemy warunek if(a==00) && (klawisz -) a =99;
    Dziękuję wszystkim za pomoc. Pozdrawiam

Podsumowanie tematu

✨ Użytkownik ma problem z rozdzieleniem i połączeniem zmiennych w programowaniu mikrokontrolerów w języku C, aby wyświetlić liczby na wyświetlaczu 7-segmentowym. Zmienne w1 i w2 mają przyjmować wartości z zmiennej "a", a w3 i w4 z zmiennej "b". Użytkownik próbował użyć przesunięć bitowych, ale napotkał problemy z wyświetlaniem cyfr powyżej 9. Ostatecznie zastosował operacje dzielenia i reszty z dzielenia (w1 = a/10 oraz w2 = a%10), co pomogło. Pojawił się również problem z licznikiem, który powinien wracać do 99 po przekroczeniu zera. Użytkownicy zasugerowali dodanie warunku, aby przy naciśnięciu przycisku zmniejszającego, jeśli a=00, to a=99.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA