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 2 maja 2025, o 12:35


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
    Autor Wiadomość
    PostNapisane: 3 lis 2012, o 17:34 
    Offline
    Użytkownik

    Dołączył(a): 03 lis 2012
    Posty: 43
    Pomógł: 1

    Witam
    Po pierwsze, jako że to mój pierwszy post - witam wszystkich.

    Muszę zarejestrować ILOŚĆ (czas trwanie nie ma znaczenia) impulsów podanych na któreś z wejść. Impulsy to skok napięcia do 5V. Potrzebuję również pętli na 400 wierszy, które są kolejno uzupełnianie, a kiedy wszystkie zostaną wypełnione, wypełnianie następuje od początku - to już jest rozwiązane, w załączniku plik exe z przykładem (tam jest tylko 10 wierszy - aby lepiej zrozumieć ideę, wpiszcie zmienne przynajmniej 20 razy i obserwujcie co "zwraca" konsola). Rozszerzenie exe jest zablokowane, więc je spakowałem.
    Tutaj kod w 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.


    W uC zamiast podawania kolejnych elementów do tablicy, ma być podawana ilość impulsów, które pojawiły się na wejściu w ciągu 1/10 sekundy (czyli cała tabela zostanie zapełniona w 40 sekund). Na ekranie (nie wiem jeszcze czy jakiś 2x16, czy z Nokii 3310, zależy jaki załatwię) ma być wyświetlana suma całej tabeli, odświeżana co 1/10 sekundy. Przez pierwsze 40 sekund na zmianę z wynikiem ma być wyświetlany komunikat "Wynik zafałszowany, zbieram dane." (2 sekundy komunikatu, 2 sekundy wyniku). Po tych pierwszych 40 sekundach ma być wyświetlany sam wynik.

    Wolałbym nie dostać gotowca, ponieważ chce się czegoś nauczyć, więc bardzo prosiłbym o informacje jak rejestrować ilość impulsów, jak zrobić to ostrzeżenie przez pierwsze 40 sekund itp. Na razie nie mogę przetestować, bo jeszcze nie mam wyświetlacza (a impulsy mogę symulować "zwieraniem" pinu +5V i jakiegoś pinu wejściowego, bo impulsy z mojego urządzenia też będą miały 5V.

    Pozostaje jeszcze najważniejsza kwestia - jak przerobić to na formę trawioną przez STM32F0Discovery? :)

    A teraz pytanie do Was - pomożecie? ;).
    Pozdrawiam
    Darken


    Załączniki:

    Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 lis 2012, o 20:29 
    Offline
    Użytkownik

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

    pomogę ci , ale musisz trochę poczekać , bo mam ks108 na razie rozbebeszony z Antystatycznym
    na razie jak nie czytałeś to poczytaj sobie w poradnikach o róznicach w trupestudio i na mojej stronie o timerach w stm32

    _________________
    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: 6 lis 2012, o 23:17 
    Offline
    Użytkownik

    Dołączył(a): 03 lis 2012
    Posty: 43
    Pomógł: 1

    Spokojnie, poczekam, byle bym się doczekał ;).



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 lis 2012, o 11:46 
    Offline
    Użytkownik

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

    No dobra można się za to brać , więc tak najpierw z edytuje ci posta , bo w znacznikach syntax -c lepiej się kod czyta

    Impulsy najlepiej mierzyć przez int w przerwaniu timera czyli ustalasz czas zliczania i zliczasz impulsy , następnie zależnie od potrzebnej ilości
    wykonujesz proste działanie:

    Przykład:

    - potrzebujemy liczyć obroty silnika w obr/min
    - posłużymy się czujnikiem optycznym (transoptor szczelinowy) umieszczonym tak by pasek zapięty na osi silnika
    przy każdym pełnym obrocie przechodził przez transoptor --- w ten sposób uzyskamy 1 impuls na pełny obrót
    oczywiście dokładniej możemy liczyć dzieląc obrót osi wirnika na 4 części -- wtedy mamy 4 impulsy na 1 obrót

    - wyjście naszego transoptora wpinamy na wejście zliczające wyzwalane stanem wysokim lub niskim zależnie od transoptora
    - ustalamy przerwanie timera w którym jest dokonywane zliczanie np:

    dla obr/min pomiaru nie musimy wykonywać przez całą minute
    wiedząc że 1 ms = 10-3 s = 1/1 000 s czyli 1 min = 60000 ms
    wiedząc że na 1 obrót mamy 1 impuls

    wykonujemy pomiar na ułamkową cześć naszej min np przez 1 sek
    czyli przerwanie od timera ustawiamy na 1000ms

    i w tym czasie zliczamy impulsy z naszego transoptora
    wynik jaki otrzymamy to liczba obrotów na 1sek i należy go sobie przeliczyć na 1min by otrzymać gotowe dane do prezentacji.

    tak to wygląda w teorii i w zasadzie też w praktyce jak więc prosiłeś daje ci tylko nakreślenie tematu

    W przypadku przerzucenia kodu na STM32F0 W TrupeStudio wybierz nowy projekt dla F0 i przenieś kod
    uwzględniając zmiany bibliotek i niektórych funkcji.

    W razie czego pisz , jeśli projekt przekracza 32KB przenieś się na inne środowisko


    Autor postu otrzymał pochwałę

    _________________
    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: 7 lis 2012, o 16:16 
    Offline
    Użytkownik

    Dołączył(a): 03 lis 2012
    Posty: 43
    Pomógł: 1

    SunRiver napisał(a):
    Impulsy najlepiej mierzyć przez int w przerwaniu timera czyli ustalasz czas zliczania i zliczasz impulsy.

    A czy mógłbyś proszę mi to wyjaśnić (najlepiej jakiś kod bądź pseudokod)

    SunRiver napisał(a):
    W przypadku przerzucenia kodu na STM32F0 W TrupeStudio wybierz nowy projekt dla F0 i przenieś kod uwzględniając zmiany bibliotek i niektórych funkcji.

    Właśnie nie wiem, co muszę zmienić - wystarczy dopisać biblioteki, zdefiniować wyjścia dla LCD oraz wejście impulsów, a w pętli głównej zliczać impulsy na wejściu, tak?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 lis 2012, o 17:36 
    Offline
    Użytkownik

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

    tak to wystarczy
    z uwzględnieniem twojego procesora :)

    _________________
    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: 2 gru 2012, o 17:05 
    Offline
    Użytkownik

    Dołączył(a): 03 lis 2012
    Posty: 43
    Pomógł: 1

    Na razie ogarnąłem wyświetlanie na LCD 2x16 - na szczęście wszystko działa.
    Mój kod wygląda 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.

    I teraz nie ogarniam konfiguracji pinu do zliczenia, a
    SunRiver napisał(a):
    Impulsy najlepiej mierzyć przez int w przerwaniu timera czyli ustalasz czas zliczania i zliczasz impulsy

    niewiele mi mówi. Impulsy +5V chcę podłączyć do np. PA5 i zapisywać do zmiennej $wynik, która będzie wyświetlana w 2 wierszu. Dalej może jakoś mi się uda (założenia z programu w pierwszym poście ;)).
    Pozdrawiam

    EDIT
    Aha - jeżeli mogę prosić to chciałbym jeszcze, aby po kliknięciu przycisku "User" (ten niebieski na płytce) w drugim wierszu wyświetlany był $wynik2 ($wynik2=$wynik/100, czyli jeśli $wynik=2, to $wynik2=0,2). Kiedy klikniemy znowu, ponownie wyświetlany jest $wynik i tak w kółko.

    EDIT 2
    Aby sprecyzować - proszę o zmodyfikowanie mojego programu tak, aby wyświetlał na LCD ilość podanych impulsów na wejście PA5 (czyli po prostu wyświetlał zmienną $wynik). Dodatkowo (ale niekoniecznie) to, co w pierwszym edicie ;).



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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