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 w 2025? 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 21 maja 2025, o 08:01


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
    Autor Wiadomość
    PostNapisane: 1 maja 2025, o 19:04 
    Offline
    Użytkownik

    Dołączył(a): 18 cze 2015
    Posty: 374
    Pomógł: 0

    Dzień dobry.

    Proszę o pomoc.

    Temat może dla wielu banalny, ale nie mogę sobie poradzić z uruchomieniem wyświetlacza lcd 4x20 (taki akurat mam) po magistrali I2C.
    Pop prostu nigdy wcześniej nie używałem tej metody i postanowiłem zgłębić ten rodzaj obsługi. A żeby się nie rozpisywać, to podaję
    info, jak na tą chwilę to wygląda.

    1. Zestaw atb (starsza wersja).
    2. Atmega32 z kwarcem 20MHz.
    3. Dwie biblioteki zakupione w Atnelu (MK_LCD i MK_I2C).
    4. Wyświetlacz lcd 4x20 na sterowniku HD44780.
    5. Konwerter na układzie PCF8574T zakupiony na Alle.... Konwerter na małej prostokątnej płytce ze zworką do LED i 3 punktami do
    ustawienia adresu. Pewnie wiecie, o którym piszę. Pełno ich na aukcjach. Napisałem krótki program, gdzie dodałem obsługę przerwań.
    W pętli na ten moment jest tylko kod do migania diodą w przerwaniu co 1s w celu kontroli, czy procek się nie zawiesza.

    Do projektu dołączone w/w biblioteki Mirka.

    Obejrzałem poradniki do tych bibliotek, ale nie mogę nic zrobić. Nie czaję bazy... Wcześniej zaimportowałem zakupione biblioteki wraz
    z programami Mirka, ale nic mi nie działało. Programy się kompilowały bez błędów, ale na wyświetlaczu tylko 2 rzędy prostokątów.

    Postanowiłem napisać własny, krótki do wyświetlenia czego kolwiek. Mam tylko kwadraty. Dwa rzędy na 4 linijkach.

    W pliku mk_lcd44708.h ustawiona 1 w #define USE_I2C. W pliku mk_i2c.h ustawione #define I2C_MODE 0 czyli chyba OK.

    Konwerter podpięty do PC0 i PC1 Atmegi. Prześledziłem pcb konwertera, które piny PCF-a idą do listwy i ustawiłem numerację pinów
    w pliku do lcd. W kablologii i konfiguracji pinów nie ma błędów.

    Czego nie wiem:

    Na aukcjach ze sprzedaży najczęściej pojawia się, że adres dla konwertera jest Ox27
    Tak wpisałem w mk_lcd44780.h

    // Adres EXPANDERA
    //#define PCF8574_LCD_ADDR 0x70 // PCF8574A gdy A0, A1 i A2 --> GND
    #define PCF8574_LCD_ADDR 0x27 // PCF8574 gdy A0, A1 i A2 --> GND /////// 0x40

    Ale nie wiem, czy literka na końcu T to to samo, co scalak z literką A, czy bez A (PCF)

    Nie wiem, czy mam zlutować zworki dla Ox27 (są czyste) Gdzieś było napisane zlutować do vcc, ale nie wiem.

    Proszę, pomóżcie, co mam dalej robić, a żeby ruszyło. Czy jest jakaś inicjalizacja I2C w main, jak np. lcd_init(); adc_init......

    Czy o czymś zapomniałem ? Z góry dziękuję za chęć pomocy.

    ------------------------ [ Dodano po: 52 minutyach ]

    Celem sprostowania.
    Żeby nie było. Wiadome dla mnie jest, że program Mirka jest ok i ma działać. Na moim ekspanderze nie ruszył, a jest on niewiadomą dla mnie na ten moment. Dla tego zacząłem od prostego programu, a żeby skrócić kod i ograniczyć się do minimum w celu chociażby wyświetlenia raptem 1 znaku, czy wyczyszczeniu wyświetlacza. Dałoby mi to info, że komunikacja istnieje.
    Jeszcze jeden mankament. Po resecie atmegi z przycisku na atb dioda zaczynać zmieniać stan dopiero po 5 sekundach, Co zabiera tyle czasu ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 maja 2025, o 09:19 
    Offline
    Użytkownik

    Dołączył(a): 18 cze 2015
    Posty: 374
    Pomógł: 0

    A więc dane dotyczące tego konkretnego ekspandera znajdują się tutaj:

    https://protosupplies.com/product/lcd-i2c-interface-adapter/

    Wynika z tego, że adres domyślny jest 0x27. A1 A2 A3 są podpięte pod VCC. Jest również konfiguracja pinów na pcb eksp....

    Obrazek

    W konfig. lcd mam ustawione tak:

    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.



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



    Zmieniony lcd na 2x16.

    Konfig pinów:

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



    W konfig I2C ma tak:


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



    main.c


    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.



    Efekt jest taki, że dioda miga co 1s, a na wyświetlaczu w zerowej linii kwadraty. Jak odkomentuję w pętli wyświetlanie napisu
    "Test_I2C", to dioda zmienia stan wolniej.

    Mam urządzenie, gdzie jest ten wyświetlacz 2x16 i dołączony do niego taki sam ekspander. Tam wyświetlanie działa, ale to
    nie moje urządzenie.

    Przy zastosowaniu programu z biblioteki Mirka MK_LCD i MK_I2C, ustawieniu adresu na 0x27, kwarc 20MHz nie działa wyświetlanie.

    W Mirka poradnikach wszystko śmiga. O czym jeszcze zapomniałem. Gdzie robię babola ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 maja 2025, o 18:00 
    Offline
    Użytkownik

    Dołączył(a): 02 gru 2015
    Posty: 550
    Pomógł: 28

    Spróbuj zmienić adres na 7e bądź 4e .

    ------------------------ [ Dodano po: 2 minutach ]

    poza tym obejrzyj poradnik Mirka o i2c skanerze.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 maja 2025, o 09:43 
    Offline
    Użytkownik

    Dołączył(a): 18 cze 2015
    Posty: 374
    Pomógł: 0

    Dzięki tonygryps :-)

    Udało mi się znaleźć odpowiedź wcześniej, ale dziękuję, że się odezwałeś. Obejrzałem lekcje o I2C z kursu i tam Mirek poruszył
    temat tego pcf-a z literką T. Podał również adres. Tak, 0x4E poszło. Biblioteka działa bardzo dobrze. 800KHz pociągnęło.

    Nie rozumiem, że w opisie z linku jest wyraźnie podane 0x27, jak i na niektórych aukcjach w Alle.... również, a układ nie chodzi.
    Chyba że jeszcze czegoś nie wziąłem pod uwagę. Straciłem sporo czasu przez ten adres. Teraz demo z MK_LCD i MK_I2C działają.

    Udało mi się nawet odpalić na Atmega 328PB. Musiałem trochę pozmieniać w pliku mk_i2c.c i poszło.

    Ciekawa ta magistrala i przyda mi się szczególnie przy płytkach Arduino NANO. lcd zabierało sporo pinów, a teraz tylko 2 :-)

    Trzeba będzie tylko zmienić podejście do programowania. Zauważyłem, że łatwo blokować pętlę (spowalniać) ale to następny problem do ogarnięcia.

    Jeszcze raz dzięki.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 maja 2025, o 21:27 
    Offline
    Użytkownik

    Dołączył(a): 02 gru 2015
    Posty: 550
    Pomógł: 28

    No widzisz nie bez powodu mówiłem obejrzyj poradnik Mirka o i2c skanerze .Mirek tam porusza bardzo ważną kwestię adresów i2c 7bitoych i to tłumaczy 0x27 to 7 bitowy adres i2c i jest równo ważny z 8 bitowym 0x4e .


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 maja 2025, o 05:55 
    Offline
    Użytkownik

    Dołączył(a): 18 cze 2015
    Posty: 374
    Pomógł: 0

    Jeszcze raz dziękuję :-)



    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: 6 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO