Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 20 lip 2025, o 00:42


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
    Autor Wiadomość
    PostNapisane: 21 lut 2012, o 22:04 
    Offline
    Użytkownik

    Dołączył(a): 18 lut 2012
    Posty: 50
    Pomógł: 0

    Witam,
    Znalazłem, że kropka to segment H, to też ją dodałem do mojej tablicy jako 11 z kolei, tylko kiedy ją dopiszę do cyfry nr 2 jako: "cy2=d2|11" albo jak dodam ją tak: "cy2=d2|SEG_DP" to na cy2 dzieje się wszystko tylko nie to czego chcę.
    Domyślam się, że kompilator po prostu dodaje sobie SEG_DP do zmiennej d2 co w wyniku daje liczbę > 9 czyli nie możliwą do wyświetlenie ale nie wiem gdzie dopisać tą kropkę aby zniwelować ten błąd.
    Proszę o pomoc.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lut 2012, o 22:31 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    jaśniej może napisz , przedstaw kod , bo ciężko zgadnąć o co ci chodzi

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lut 2012, o 22:43 
    Offline
    Użytkownik

    Dołączył(a): 18 lut 2012
    Posty: 50
    Pomógł: 0

    chodzi mi o to, że jak mam do możliwości wyświetlenia na wyświetlaczu LED 4 cyfry z kropkami, to 4 cyfry jestem w stanie wyświetlić jednak kiedy do jakiejkolwiek cyfry dodać kropkę to na wyświetlaczu na tej cyfrze zaczynają się pojawiać dziwne rzeczy a nie cyfra + kropka pod nią. Kod do okiełzania multipleksu LED jest napisany na podstawie kodu z płyty DVD (jest praktycznie taki sam) tylko w tablicy z zapisanymi cyframi dodałem swoją kropkę i mam problem z dodaniem jej do main.c ponieważ nie wiem gdzie ją wpleść do mojej pętli głównej.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 lut 2012, o 23:36 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 15 gru 2011
    Posty: 110
    Lokalizacja: Dolnyśląsk
    Pomógł: 0

    Bardzo prosta rzecz kolego :) ale jak wspominał SunRiver. Podaj jakiś kod to Cię spróbujemy nakierować bo gotowców to raczej nikt nie daje i nie powinien tego robić.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 lut 2012, o 00:44 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27416
    Lokalizacja: Szczecin
    Pomógł: 1043

    Ale spokojnie - ja może powiem troszkę inaczej bo coś przez skórę czuję chyba problem kolegi - aczkolwiek może się mylę.

    Po pierwsze faktem jest że w książce w ogóle nie poruszyłem zagadnienia jak wyświetlać sobie kropki - ale nie samą kropkę tylko np kropkę po jakiejś cyfrze.....

    Ty widzę, że poszedłeś bardzo złą drogą, bo jak piszesz zdefiniowałeś sobie znak kropkę jako kolejny znak w tablicy znaków na LED - dobrze myślę ? No gdy wpiszesz jej kod czyli INDEX do zmiennej cy1, czy cy2 - to sama kropka pewnie się świeci ? dobrze zgaduję ?

    No ale następnie podjąłeś się karkołomnej operacji:

    cy2=d2|SEG_DP;

    O jej! co ty robisz ? weź sobie oblicz jaka liczba wyląduje w zmiennej cy2 po tej operacji: d2|SEG_DP ..... toż to będzie jakiś indeks w tej tablicy, który nie odpowiada żadnemu elementowi w niej (tu widać, że jeszcze nie do końca zrozumiałeś na czym polega do końca to wyświetlanie pojedynczych znaków - tzn jak one są pobierane z tej tablicy wzorców - zgadza się?)

    dlatego podpowiem, że obsługę kropek można sobie zrobić ale np poprzez lekką modyfikację funkcji z przerwaniu i opcji OR z SEG_DP użyć w jakimś dodatkowym warunku gdy wywalany jest wzór o kodzie w cy2 na LED.... to na tym etapie w zależności tak na przykład od jakiejś dodatkowej zmiennej czy zmiennych np k1, k2, k3, k4 .... dokonywać np coś takiego:


    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    wtedy oprócz zmiennych cy1, cy2, cy3, cy4 definiujesz sobie jeszcze dodatkowo k1, k2, k3, k4

    i jak chcesz na stałe wyświetlić kropkę na drugim wyświetlaczu to

    k2=1;
    cy1=1; cy2=2; cy3=0; cy4=5

    uzyskasz wtedy liczbę 12.05

    albo:

    k2=0;
    k3=1;
    cy1=8; cy2=3; cy3=7; cy4=2

    uzyskasz liczbę 837.2

    oczywiście jak widzisz musiałem zgasić kropkę na pozycji 2 ....

    troszkę to tak na kolanie napisałem więc może nie zadziałać od pierwszego kopa - ale taką drogą można pójść ;)

    i doczytaj jeszcze raz po co jest to:

    pgm_read_byte( &cyfry[cyn] );

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 lut 2012, o 19:45 
    Offline
    Użytkownik

    Dołączył(a): 18 lut 2012
    Posty: 50
    Pomógł: 0

    mirekk36 napisał(a):
    Ale spokojnie - ja może powiem troszkę inaczej bo coś przez skórę czuję chyba problem kolegi - aczkolwiek może się mylę.


    Masz rację nie mylisz się i dzięki, że powtórzyłeś to co już napisałem:

    infa08 napisał(a):
    kiedy ją dopiszę do cyfry nr 2 jako: "cy2=d2|11" albo jak dodam ją tak: "cy2=d2|SEG_DP" to na cy2 dzieje się wszystko tylko nie to czego chcę.
    Domyślam się, że kompilator po prostu dodaje sobie SEG_DP do zmiennej d2 co w wyniku daje liczbę > 9 czyli nie możliwą do wyświetlenie


    mirekk36 napisał(a):
    dlatego podpowiem, że obsługę kropek można sobie zrobić ale np poprzez lekką modyfikację funkcji z przerwaniu i opcji OR z SEG_DP użyć w jakimś dodatkowym warunku gdy wywalany jest wzór o kodzie w cy2 na LED.... to na tym etapie w zależności tak na przykład od jakiejś dodatkowej zmiennej czy zmiennych np k1, k2, k3, k4 .... dokonywać np coś takiego:


    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    wtedy oprócz zmiennych cy1, cy2, cy3, cy4 definiujesz sobie jeszcze dodatkowo k1, k2, k3, k4


    Dodałem zmienne k1, k2, k3, k4 do pliku d_led.h i przepisałem twój kod. Wgrałem do mikrokontrolera i diody przestały działać (pojawił się wszędzie INDEX "NIC") toteż zmodyfikowałem go troszeczkę:

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    I efekt był taki sam jak za pierwszym podejściem. Testowałem też dodawanie i usuwanie SEG_DP z tablicy znaków jednak nie przyniosło to żadnego rezultatu.



    Ostatnio edytowano 25 lut 2012, o 18:53 przez infa08, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 lut 2012, o 20:53 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 gru 2011
    Posty: 449
    Pomógł: 4

    Z racji swojego braku doświadczenia, w pierwszym odruchu pomyślałem, że najprostszym rozwiązaniem będzie utworzenie drugiej tablicy z cyframi i kropką, czyli następna tablica 10 elementowa, a w zasadzie 11 elementowa prawda?
    Jest to oczywiście wersja "rozrzutna", bo niestety tracimy znowu cenne miejsce w pamięci naszego procka.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sie 2012, o 20:09 
    Offline
    Użytkownik

    Dołączył(a): 10 sie 2012
    Posty: 91
    Lokalizacja: Wąbrzeźno
    Pomógł: 0

    Witam, to mój pierwszy post na tym forum. Temat dość stary, ale go odświeżę( może kolega nie rozwiązał jeszcze swojego problemu).
    Więc przedstawię gotowca(wiem, że Mirek tego nie popiera), tylko, że mój program jest na Atmega8 i wyświetlaczu ze wspólnymi katodami więc kieruję tylko anodami, program działa mi bardzo dobrze, gdy w głównej funkcji main wpiszę k=3 to kropka znajdzie się na 3 cyfrze.
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Dodam, że fajnie można sobie poćwiczyć dzięki takiemu ćwiczeniu(Atmega32-->Atmega8) zaglądanie do noty katalogowej i pisanie kodów.

    Wyświetlacz i mikrokontroler wykorzystałem taki bo nie mam innych rzeczy(oprócz książki) - zestaw ATB planuję niedługo kupić, ale jescze nie jest mi potrzebny jak widać, bo oprócz tego mam parę diod wyświetlacz diodę RGB itp.

    Mam jeszcze 2 pytania odnośnie tego projektu i nie tylko:
    1. Czy można, a jeśli tak to jak zrobić program obsługi wyświetlacza 7-segmentowego na Timerze 0 Atmegi8 :?:
    2. Czy trwają pracę nad kolejną wersją płytki ATB :?:



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sie 2012, o 21:59 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27416
    Lokalizacja: Szczecin
    Pomógł: 1043

    A dlaczego miałbym nie popierać własnych modyfikacji ? kodów z książki - jak najbardziej popieram i brawo za wymyślenie jednej z wielu metod w tym przypadku ;)

    odpowiadając na twoje dwa pytania:

    1. a dlaczegóż nie można byłoby zrobić tego na Timer0 w m8 ??? hmmm toż to taki sam sprzętowy timer. No może nie ma trybu CTC - ale co nie można go w podobny sposób użyć jak przy CTC??? Można ;) trzeba jedynie wartość TCNT0 przeładowywać w procedurze obsługi przerwania. Więc żaden problem.

    2. zastanawiałem się nad jakimiś poważniejszymi modyfikacjami w zestawach ATB - ale niestety wciąż mam na to za mało czasu a na prawdę nie chciał bym spaprać tego co jest teraz - tym bardziej, że z doniesień użytkowników są same pozytywne opinie - no może poza ceną - ale niedługo przygotuję pewien film porównawczy, który mam nadzieję rzuci nowe światło na ten stosunek ceny do jakości..... Dlatego reasumując nawet jeśli w najbliższym czasie miałaby się pojawić jakaś modyfikacja w ATB to raczej bardzo drobna i kosmetyczna. Tyle mogę powiedzieć - ale na pewno nie uda mi się żadnych terminów określić :(

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 sie 2012, o 23:51 

    Pomógł: 0

    Sam wykorzystałem prostszy sposób z dodatkową tablicą, tj. ta sama tablica tylko dłuższa, a cyfry z kropką przesunięte o 20miejsc ;). Można o mniej, ale mi jeszcze dochodzą dodatkowe znaki.

    Wiedząc, że ma być wyświetlona kropka, po prostu dodaję do wartości wyświetlanej przesuniecie i tyle.



    Góra
      
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 sie 2012, o 07:22 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27416
    Lokalizacja: Szczecin
    Pomógł: 1043

    rezasurmar napisał(a):
    Wiedząc, że ma być wyświetlona kropka, po prostu dodaję do wartości wyświetlanej przesuniecie i tyle.


    Jak mówiłem jest milion sposobów a każdy ma swoje wady i zalety ;) w tym przypadku będzie zajęte nieco więcej pamięci Flash, ale cóż to jest z drugiej strony te kilka dodatkowych znaków ? ... a w poprzednim przypadku procedura obsługi przerwania nieco się wydłuży ale też można powiedzieć, cóż to jest tych kilka dodatkowych us? ;)

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 wrz 2013, o 14:26 
    Offline
    Użytkownik

    Dołączył(a): 04 kwi 2013
    Posty: 107
    Lokalizacja: Zabrze
    Pomógł: 0

    Projektuje zegarek na wyświetlaczu LED. Mam podobne problemy z kropkami, które z czasem maja służyć jako sekundnik.
    -ściągnąłem errate kodu 03_Multi_LED
    -na samym początku wprowadziłem prosty licznik - dla próby
    -następnie sugerując się tym forum zmodyfikowałem kod, by możliwe było wyświetlanie kropek.

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Oczywiście zadeklarowałem również zmienne k1-k2.
    kropek jednak jak nie było tak nie ma wyświetlonych.

    procesor atmega8 i 8Mhz

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 wrz 2013, o 14:34 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 05 sie 2013
    Posty: 1154
    Lokalizacja: Lublin / Kraków
    Pomógł: 72

    Ja mam podobnie jak rezasurmar, jedną większa tablicę z dodatkowymi znakami oraz cyframi z kropką.
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 wrz 2013, o 15:12 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

    Inny przykład:
    topic2944.html?hilit=Modyfikacja%2003Multi_LED#p35234

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 27 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO