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 17 cze 2025, o 21:13


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
    Autor Wiadomość
    PostNapisane: 1 sie 2021, o 07:42 
    Offline
    Nowy

    Dołączył(a): 28 maja 2021
    Posty: 21
    Pomógł: 0

    Cześć.
    Próbuję zorganizować grę Tetris na gotowej matrycy z 10 modułami 5x8 LED sterowanymi po dwa przez 74hc573.
    Obsługa będzie się odbywać pilotem.
    Atmega 164.
    Zawartość matrycy będzie odczytywana z tablicy.
    Przerwanie będzie gasić wyświetlacz, ładować wartość kolejnego elementu tablicy, zatrzaskiwać itd.
    Klocki mam opisane w 19 strukturach:
    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.


    Chciałbym wyrobić się w jednej funkcji do obsługi klocków.
    Klocek będzie przesuwał się po tablicy sprawdzając zawartość następnej komórki( czy jest pusto ).
    Dojdzie jeszcze liczenie punktów (całych linii) , najlepszy wynik, zmiana prędkości, przesuwanie lewo i prawo itp.

    Takie są plany. :D
    W związku z tym proszę o radę jak można by wrzucić strukturę klocek do funkcji. Struktura ma 6 elementów i będzie wybierana losowo. Może użyć ENUM, może przekazywać jako wartości ale to zagęści kod. Nie jestem za biegły we wskaźnikach a co dopiero w strukturach jako argument funkcji.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 sie 2021, o 16:47 
    Offline
    Nowy

    Dołączył(a): 27 lut 2021
    Posty: 23
    Zbananowany użytkownik

    Pomógł: 0

    Odpowiadając na pytania - Zgrupuj dostępne klocki w tablicę takich struktur i w funkcji losującej generuj index klocka z tej tablicy - z tego co widzę pola nie będą modyfikowane (choć z kodu ciężko mi wywnioskować co one oznaczają), tak? Przekazywanie do kolejnych funkcji przez wskaźnik - lub możesz też używać tego indeksu (i tak - ten indeks może być enumen) i tylko go przekazywać.

    Generalnie na tym etapie przed tobą jest masa decyzji "projektowo/implementacyjnych" do podjęcia - bez szerszego kontekstu jak widzisz algorytm działania porady odnośnie szczegółów implementacyjnych mogą być nietrafione/utrudnić tylko.

    Dam Ci też małą podpowiedź - jakbyś podzielił swoje oprogramowanie na warstwy to miałbyś coś takiego:
    1. logika gry
    2. konwerter bufora z planszy na dane do LCD/matryc
    3. biblioteka LCD/matryc

    i punkty 1 i 2 możesz napisać całkowicie w C na PC i wtedy w miejsce 3 wstawić wyświetlanie na konsoli.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 sie 2021, o 16:34 
    Offline
    Nowy

    Dołączył(a): 28 maja 2021
    Posty: 21
    Pomógł: 0

    Hej.
    Po długim czasie udało się zrobić Tetrisa plus psycho-test i ruletkę. Dojdzie jeszcze jakaś strzelanka.
    Proszę o sprawdzenie przerwania, które odpowiada za multipleksowanie.
    Wyświetlacz/cała matryca składa się z 10 pojedynczych matryc 8x5 led.
    Katody matryc ( 8 ) są sterowane po dwie z przerzutników typu D czyli, że jest ich 5 co daje 8 pinów danych i 5 pinów zatrzasków.
    Wejścia odwracającego nie wykorzystuję.
    Anody matryc (też po dwie czyli 10) zasilane są z tranzystorów BD co daje kolejne 10 pinów.
    Całość jest sterowana z Atmegi 164.

    Funkcję przerwania rozwiązałem tak, że zastosowałem bufor 50 - elementowy ( bo wyświetlacz jest ustawiony jako kolumna o wysokości 50 linii i szerokości 8), wyłączam katody, ładuję po kolei na przerzutniki co 10-tą wartość bufora licząc od 0 zatrzaskując ją na każdym( wykorzystuje je jako pamięć ), a następnie załączam odpowiednią anodę (co 10-tą), następuje inkrementacja licznika ładowanej komórki tablicy bufora i wszystko leci od nowa w kolejnym przerwaniu. Gdy licznik osiągnie wartość większą niż 9 (czyli załaduję 9, 19, 29, 39 i 48 bajt to sie zeruje.

    Na moje oko działa ok.
    Proszę o sprawdzenie czy tak to powinno wyglądać.

    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  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 7 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