Skocz do zawartości

[C, AVR] funkcja losująca - pytanie


simoon87

Pomocna odpowiedź

Witam, Aby napisać program do mojego pierwszego robota niezbędna jest mi funkcja losująca liczby. Dokładniej mówiąc chodzi o coś takiego:

- jeśli zostanie wylosowane np.1 to robot skręci w prawo,
- jeśli zostanie wylosowane np.2 robot skręci w lewo.

Programuje trochę w C++, wiem ze jest tam funkcja randomize(); i chciałbym się dowiedzieć czy jest coś podobnego w C na AVRy

Link do komentarza
Share on other sites

Wydaje mi się, że biblioteka avrlibc (WinAVR) posiada funkcje pseudolosowe w standardowej bibliotece

Ciebie powinny intereresować dwie:

int rand(void);

long random(void);

oraz odpowiednio funkcje dostarczające "ziarno"

void srand(unsigned int __seed);

void srandom(unsigned long __seed);

Więcej informacji pod adresem:

http://www.nongnu.org/avr-libc/user-manual/group__avr__stdlib.html#ge23144bcbb8e3742b00eb687c36654d1

  • Lubię! 1
Link do komentarza
Share on other sites

Najprościej zrobić to w sposób taki jak losuje się literki w państwa miasta.

Procek cały czas odlicza od 1 do 2 (dajmy na to co 10ms zmienia się wartość) a zatrzymywana jest zewnętrznym sygnałem oczywiście w miarę losowym momencie.

Taka funkcja ma plus bo da się ją zrealizować prawie w każdym języku, a nawet budując analogowy układ.

W Bascomie jest również funkcja Rnd() ale żeby liczby po wyłączeniu zasilania były również losowe trzeba i tak zmienić podstawę losującą tej funkcji.

Tak czy siak losowanie jest dla mikro kontrolerów dosyć trudne i jeżeli nie uzależnisz funkcji losującej od zewnętrznego losowego czynnika (losowy czas zatrzymania funkcji, zakłócenia na adc itp) to nie ważne w jakim języku będzie to programowane, nie będzie to funkcją losową.

Osobiście gorąco polecam sposób z "państwa miasta"

Link do komentarza
Share on other sites

Ja spróbowałbym wykorzystać fototranzystor i termistor połączone w dzielnik napięcia do przetwornika AD. Tylko nie jestem pewien, czy prawdziłoby się to w praktyce.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dzięki za wszystkie rady ale prawdę mówiąc niespecjalnie interesują mnie rozwiązania "sprzętowe". Jeśli funkcje podane przez Kuraś się nie sprawdzą to najprawdopodobniej zmienię koncepcie 😉

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.