Kaytec Napisano Październik 19, 2009 Udostępnij Napisano Październik 19, 2009 Po raz kolejny krótka piłka z mojej strony. Jak w bascomie zrobić funkcję "losu" czyli: w odstępie od 0.0s do 2.5s w losowym momencie ma pojawić się jedynka na którymś porcie. Jakiego polecenia użyć? Jak rozwiązać ten problem? Pozdrawiam.
Decado Październik 19, 2009 Udostępnij Październik 19, 2009 Jest funkcja RND. Pozatym możesz sobie brać szumy za diodą zenera przy pomocy ADC zczytywać i to da ci jakieś losowe wyniki. Wynik zawsze będziesz miał w określonym przedziale wiec zrobic pseudo tabelke która bedzie przypisywała wartość pomiaru do długości odstępu.
wader_669 Październik 20, 2009 Udostępnij Październik 20, 2009 lub zapisywal zmienna ___rseed do eepromu i dodawal co restart o jeden
Kaytec Październik 20, 2009 Autor tematu Udostępnij Październik 20, 2009 RND kawałek z helpa: Uwaga! Liczby są generowane przez odpowiedni kod programu. Każdy restart systemu, powoduje, że sekwencja tych liczb będzie taka sama. Znaczy to że np jak to będzie projekt kostki do gry, czyli zakres I = Rnd(5) to gra będzie zawsze taka sama po wyłączeniu i włączeniu urządzenia? Trochę bezsensu, mógłby ktoś przedstawić jakieś rozwiązanie?, to ma być tylko fragment projektu wiec nie może to zajmować nóżek procesora. [ Dodano: 20 Paź 09 12:53 ] W sumie mógłby być to ten patent z diodą i ADC było by to tak?: Config Adc = Single , Prescaler = Auto , Reference = Internal Dim ___rseed As Word Dim I As word Start Adc ___rseed = Getadc(0) I = Rnd(2500) i tutaj pytanie co i jak podłączyć pod ADC
Bobby Październik 20, 2009 Udostępnij Październik 20, 2009 Ja zrobiłbym tak: Config Adc = Single , Prescaler = Auto , Reference = Internal Dim losowa As Word Dim I As word Start Adc 'pobieranie wartości losowej z adc losowa = Getadc(0) losowa= losowa/250 'wartość wyssana z palca, dzielnik trzeba wybrać na podstawie wartości adc waitms losowa 'czekaj przez ilość wylosowanych ms portb.1 = 1 'po wylosowanym czasie na pb1 pojawi się jedynka Aczkolwiek nie jestem pewien, czy dobrze Cię zrozumiałem edit: No i podepnij diodę zenera katodą do vcc, a anodą do adc0. Najlepiej by było, gdyby dioda miała napięcie przebicia około 1V, wtedy podczas dzielenia pomiaru tak ważne dla nas jedności nie zgubiłyby się nigdzie.
Kaytec Październik 20, 2009 Autor tematu Udostępnij Październik 20, 2009 BoBBy, ok ale dzięki instrukcji Rnd(2399) mamy dokładny przedział od 0ms do 2500ms. bo ona generuje liczby na podstawie jakieś innej podstawy i właśnie ta podstawa musi być losowa. Możecie wytłumaczyć jeszcze dokładnie o co kaman z tą diodą?
Bobby Październik 20, 2009 Udostępnij Październik 20, 2009 Dioda zenera generuje duże szumy na "wyjściu", a szumy to nic innego jak szybkie zmiany napięcia. I właśnie te zmiany napięcia można odczytać, są one niemal idealnie losowe.
Sabre Październik 20, 2009 Udostępnij Październik 20, 2009 Z tego co pamiętam to te szumy trzeba wzmocnić to raz, dwa, że to napięcie nie jest w zakresie 0-5V tylko powiedzmy 4,98-5V więc trzeba by było przesunąć ten zakres użyteczny na coś bardziej zbliżonego do 0-5V. Na szybko znalazłem ten temat na elektrodzie.
Decado Październik 20, 2009 Udostępnij Październik 20, 2009 Ale poco cokolwiek wzmacniać?. Wydaje mi sie że nie do końca rozumicie idee rozwiązania z diodą zenera. A więc 10-bitowy ADC ma rozdzielczosc przy napięciu odniesienia 5V 0.0049V. Teraz jeśli szumy mieszczą się w 0.02V to jest faktycznie problem ale możemy przecież sprawdzić dodatkowo częstotliwość sygnałów . Bo przecież sygnał za diodą bedzie miał też swoje szumy . Ale dobra dla tych którym nie wsmak bawić sie w takie coś, faktycznie lepiej zrobić prosty wzmacniacz dwustopniowy na tranzystorach. Proste rozwiazanie, pare rezystorów dwa tranzystory i mamy generator szumów na pełnym paśmie akustycznym, z rozpiętością napięcia zależną od zastosowanego wzmocnienia. Ale trzeba w takim wypadku uważać na samowzbudzanie się układu. Ale to taka ciekawostka . Pozdrawiam Edit, albo tak jak w rozwiązaniu tej konsoli do której linka dał Sabre. T
Kaytec Październik 20, 2009 Autor tematu Udostępnij Październik 20, 2009 Kurde, problem jest taki że układ jest już wykonany i nie ma na nim miejsca na dodatkowe elementy. Myślałem żeby zapisywać wartość do eepromu ale wytrzyma to około 100000 cykli włączenia wyłączenia, urządzenie ma pracować około 50 razy dziennie i nie ma paść po 5ciu latach.
Elvis Październik 20, 2009 Udostępnij Październik 20, 2009 A masz w urządzeniu zegar czasu rzeczywistego? albo jakiś inny zmienny sygnał? Może da się go wykorzystać do inicjalizacji generatora. Zresztą nawet jeśli będziesz zapisywał do eeprom za każdym razem, powinno być ok: 5 lat x 365 dni x 50 = 91250 - więc powinno działać. Możesz jeszcze zrobić inaczej - zapisywać do kilku komórek pamięci (cyklicznie). Wtedy zamiast 100k cykli możesz uzyskać np. 500k czy 1m i urządzenie 5 lat spokojnie podziała
Kaytec Październik 21, 2009 Autor tematu Udostępnij Październik 21, 2009 A sposób z licznikiem? Czy da się w bascomie odliczać np od zera do 25? Klikając guzik licznik by stawał i liczba była by od razu "przekazywana" do następnej pętli. [ Dodano: 21 Paź 09 07:09 ] Wpadłem na inny pomysł. W układzie mam zasilacz z wieloma uzwojeniami wtórnymi. Na jednym z nich jest sinusoida 5V(-2.5 +2.5). Można by to wykorzystać jako podstawę do ___rseed = Getadc(0) - nigdy nie wiadomo jaka byłą by wartość w momencie naciśniecia przycisku. Tylko teraz pytanie, jakie napięcie odniesienia dać do układu? [ Dodano: 21 Paź 09 10:29 ] A co myślicie o tym aby zostawić nogę ADC niepodłączoną? stan nieokreślony - przetwornik będzie szaleć i o to chodzi.
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »