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 11 cze 2025, o 09:32


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
    Autor Wiadomość
    PostNapisane: 27 maja 2012, o 12:39 
    Offline
    Użytkownik

    Dołączył(a): 19 kwi 2012
    Posty: 29
    Pomógł: 0

    Witam.
    Robię właśnie program mający za zadanie zapalać losową diodę LED po przyciśnięciu przycisku.
    Teraz pojawia się problem. Chciałbym aby liczba była z zakresu 1-3.
    Macie jakieś pomysły? Program piszę dla Atmegi8 i bez losowania zajmuje 62.5% pamięci Flash.
    Oto on:
    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.

    _________________
    sig off ;(



    Ostatnio edytowano 27 maja 2012, o 12:50 przez Mateusz97, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 maja 2012, o 12:49 
    Offline
    Użytkownik

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

    może jakieś szczegóły , bo nie bardzo to widzę

    w tym wypadku wystarczy puścić pętle for gdzie i będzie 1 do 3
    i w warunku sprawdzać stan przycisku

    no ale moim zdaniem trochę bez sensowne

    _________________
    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: 27 maja 2012, o 12:51 
    Offline
    Użytkownik

    Dołączył(a): 19 kwi 2012
    Posty: 29
    Pomógł: 0

    1 przycisk zapala i zgasza diody po kolei, a drugi ma losować diodę, zapalać ją i zgasić.

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 maja 2012, o 13:17 
    Offline
    Użytkownik

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

    No zaiste ten kod co teraz wkleiłeś to zmora delayowa , aż mnie wzdryga że nie powiem iż niema szału
    to musi ważyć .... i konsumować cenne zasoby procka .....
    spróbuj się pozbyć tych deley-ów to raz

    2 ... hmmm... pętle pętle pętle ....

    _________________
    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: 27 maja 2012, o 13:19 
    Offline
    Użytkownik

    Dołączył(a): 19 kwi 2012
    Posty: 29
    Pomógł: 0

    Jakieś propozycje? A wracając do tematu jak zrobić losowanie?

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 maja 2012, o 13:26 
    Offline
    Użytkownik

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

    Jeśli liczbe którą potrzebujesz wylosować potrzebujesz co jakiś nieokrągły
    czas - np po naciśnięciu przycisku, czy nie wiem... co tam sobie kombinujesz
    to najprościej by było puścić w szybkiej pętli inkrementacje, tak żeby sobie latało
    w zakresie 0-255 w kółko, to zawsze coś innego wypadnie w momencie naciśnięcia tego
    guzika...

    Przyjrzyj się też z bliska standardowej funkcji random() w avrgcc (nie
    rand tylko random :P), jej nagłówek znajdziesz w stdlib.h.

    kawałek źródła biblioteki:

    * From "Random number generators: good ones are hard to find",
    * Park and Miller, Communications of the ACM, vol. 31, no. 10,
    * October 1988, p. 1195.


    W tym zastosowaniu może też sprawdzi się taki prosty generator 16 bitowych liczb
    pseudolosowych:

    Random(n):= [(random(n-1)+1)*75] mod 65536

    _________________
    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: 27 maja 2012, o 13:47 
    Offline
    Użytkownik

    Dołączył(a): 19 kwi 2012
    Posty: 29
    Pomógł: 0

    Może pan podać jakiś przykład np. losowania liczb od 1-9? Coś mało to zrozumiałem. I jak uprościć program, aby nie było w nim delayów?

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 maja 2012, o 15:51 
    Offline
    Użytkownik

    Dołączył(a): 06 paź 2011
    Posty: 92
    Lokalizacja: Kraków
    Pomógł: 2

    Według mnie funkcja random zjada strasznie dużo zasobów. Nie lepiej użyć do tego np. ostatniego bitu ADC?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 maja 2012, o 16:45 
    Offline
    Użytkownik

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

    Oczywiście że można użyć szumów na ADC (występują tylko na niższych bitach)
    bo ww przypadku AVR, które mają skończona ilość stanów na portach , nie można mówić
    o losowości , raczej tylko o pseudo losowości, ale na tym poziomie proponuję się zainteresować
    właśnie funkcją random, po poznaniu której napisanie prostego algorytmu do pseudo losowego
    generowania liczb nie będzie sprawiać problemu
    np:

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


    najprościej , ale może nie najoptymalniej :)

    _________________
    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: 27 maja 2012, o 17:43 
    Offline
    Użytkownik

    Dołączył(a): 19 kwi 2012
    Posty: 29
    Pomógł: 0

    Jaki zakres liczb generuje ten kod?
    Jak zoptymalizować kod, aby było niewiele delayów?

    _________________
    sig off ;(



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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