soldeerfreak
aan de hand van een voorbeeld kun je de oplosing zelf gemakkelijker vinden
mijn vraag is hoe kan je een randomfunctie maken met een pic
het zit zo ik zou graag een display willen aansturen en telkens ik op een knop druk zou de display een waarde moeten weergeven tussen 0 en 16 maar deze moeten willekeurig gekozen worden
p.s. de progtaal is picbasic
ik kan je NIET helpen maar ben zeerr geintresseerd in de antwoorden van mensen die het wel weten !!!
Ik dacht dat computers geen random cijfers kunnen generen. Is ook zo met gokkasten, het lijkt random maar ondertussen wordt je gewoon belazerd.
Anders ben ik ook geintreseerd.
gradtje
Ja... en toen ?
http://www.piclist.org/techref/microchip/seepicsrc/psbpix/random.htm
Pseudo, dat wel.
Een snelle teller die wordt gestopt op het moment dat de gebruiker een knop drukt zou in sommige gevallen ook kunnen natuurlijk.
Oh en @Henri, tuurlijk wordt je belazerd, daarom moet je ook verre van die dingen blijven.
Maar er zijn nog steeds mensen zo naief om te denken dat die dingen er staan om ons rijk te maken.
[Bericht gewijzigd door gradtje op ]
Ze zullen inderdaad pseudorandom zijn. Dus iedere keer dat jij je pic opnieuw opstart zal hetzelfde rijtje getallen worden berekend. De 2e keer is het dus niet echt meer random. De teller van gradtje is een simpele oplossing die in de praktijk een aardig random uitkomst zal opleveren.
Fuzzbass
Mijn echte naam: Joris | Mijn elektronica website: Fuzzcraft.com
Als je de spanning over een zogenaamde "ruisende transistor" door een A/D converter gooit, dan is het wel echt random. Meer willekeurig dan ruis kan niet.
soldeerfreak
aan de hand van een voorbeeld kun je de oplosing zelf gemakkelijker vinden
het is wel de bedoeling dat na verloop van tijd en veel experimenteren de schakelaar word weggelaten en het progje wordt uitgebreid ik zie het niet zitten om konstant een tellertje te laten lopen en nog een progje draaiende te houden (weet zelfs niet of het gaat in 1 pic 2progjes te laten lopen)
Fuzzbass, hoever wil je gaan? Zelfs met gekleurde ruis is er correlatie aanwezig. En witte ruis kunnen we helaas niet maken. Ok, het zal random genoeg zijn maar "echt random" is een gevaarlijke uitspraak.
gradtje
Ja... en toen ?
Op 13 januari 2006 14:05:51 schreef Fuzzbass:
Als je de spanning over een zogenaamde "ruisende transistor" door een A/D converter gooit, dan is het wel echt random. Meer willekeurig dan ruis kan niet.
Ik wil hier toch een "maartje" plaatsen.
De spanning van de de ruis moet namelijk exact in de range van de AD-converter liggen, wanneer hij te groot is zal er vaker een max of min optreden, is hij te klein dan zullen die juist niet optreden. Is wel weer op te vangen door alleen waardes in het middengebied te accepteren, voldoet de waarde niet, dan nogmaals. Maar random is een akelig probleem 
het is wel de bedoeling dat na verloop van tijd en veel experimenteren de schakelaar word weggelaten en het progje wordt uitgebreid ik zie het niet zitten om konstant een tellertje te laten lopen en nog een progje draaiende te houden (weet zelfs niet of het gaat in 1 pic 2progjes te laten lopen)
Je kunt toch een hardware teller gebruiken, of anders een snelle interrupt ?
soldeerfreak
aan de hand van een voorbeeld kun je de oplosing zelf gemakkelijker vinden
Volgensmij blijft het pseudo als je een interrupt gebruikt. Je triggert die interrupt namelijk ook weer met counter. Hardware teller op een aparte klok(die het liefst een lekker instabiele frequentie heeft) zou kunnen.
hoe gaaat een en ander met een pc dan ??? die kan toch random kiezen ?? of is dat schaijn bedriegt ??
chipje
Why do people spend money they don't have, to buy things they don't need, to impress people they don't like...? .-.-.-.-. Wie zich gelukkig voelt met het geluk van anderen, bezit een rijkdom zonder grenzen.
Schakelaar indrukken
Condesatortje word geladen
Teller word gestart
condensatortje word ontladen
Teller door laten lopen - liefs zo snel mogelijk
als teller overflowd, teller reseten en weer tellen
als bepaalde spanning word bereikt(schmit trigger input), stopt teller.
Teller uitlezen - random waarde
De kans dat je 2x de schakelaar exact evenlang indrukt, waarmee de condesator exact even vol oplaad, lijkt mij onwaarschijnlijk.
Of stel ik mij dit even iets te simpel voor??
soldeerfreak
aan de hand van een voorbeeld kun je de oplosing zelf gemakkelijker vinden
chipje
Why do people spend money they don't have, to buy things they don't need, to impress people they don't like...? .-.-.-.-. Wie zich gelukkig voelt met het geluk van anderen, bezit een rijkdom zonder grenzen.
Hoeveel poort pinnen heb je beschikbaar?
Alleen met sofware gaat niet meevallen.
Je zou de 'condensator laden en ontladen' weg kunnen laten en alleen meten hoe lang een schakelaar ingedrukt word.
Een teller op ca. 4MHz gaat erg snel, dus je zal niet snel 2x dezelfde waarde hebben.
Welke PicBasic ga je gebruiken? Ik gebruik PicBasic PRO van MELabs, deze heeft een RANDOM-functie ingebouwd:
RANDOM W4 'Randomize value in W4
5.62. RANDOM
RANDOM Var
Perform one iteration of pseudo-randomization on Var. Var should be a 16-bit variable. Array variables with a variable index may not be used in RANDOM although array variables with a constant index are allowed. Var is used both as the seed and to store the result. The pseudo-random algorithm used has a walking length of 65535 (only zero is not produced).
example: RANDOM W4 ‘ Randomize value in W4
Var moet dus 16-bit zijn (declareren als word)
De waarde die je aan Var geeft is dus ook de seed, deze kan je bvb instellen door de gebruiker een knop te laten indrukken, de tijd dat de knop is ingedrukt kan je dan gebruiken als startwaarde (seed), dit geeft de indruk dat de waarde echt random is en is voor de meeste toepassingen voldoende.
Deze functie geeft echter altijd een getal tussen 1 en 65535 terug, daar moet je dan verder bewerkingen op uitvoeren om dat terug te brengen naar de gewenste waarde.
Eens je een seed hebt gegeven, dan dient dat getal telkens terug als seed voor de volgende random functie die je uitvoert.
Wil je echt verder gaan, dan kan je de thermische ruis van een diode of transistor gebruiken, eventueel nog XOR-en met de uitkomst van een pseudo-random generator, je kan er zo ver in gaan als je zelf wilt, hangt ook af van wat de toepassing is.
nog wat leesvoer: http://noosphere.princeton.edu/reg.html
Steven
ja maar stel dat je het progje iets wilt kiezen random zonder een knop te bedienen dus helemaal zelfstandig ...
soldeerfreak
aan de hand van een voorbeeld kun je de oplosing zelf gemakkelijker vinden
LaStei
carpe cerevisi
Er zijn random generators met schuifregisters, geven redelijk goede random generators. Het pobleem is de seed, maar als je een variabele seed neemt, en dan de reeks met een variabele laat doorlopen, heb je wel iets redlijk willekeurigs.
Fantomaz
Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)
Laat middels een LDR een RCnetwerkje laden. Sluit dit aan op de PIC en laat deze analoge naar digitale waarde meenemen om er mee te rekenen waarbij deze waarde grote invloed moet hebben.
Zo heb je een variabele (de lichtsterkte) verwerkt in iets digitaals.
Hetzelfde kun je doen met bv warmte of mogelijk beide.
Als de PIC het je niet kan bieden, moet je iets "schommelends" van buitenaf halen...
maar als ik dit zo lees kom ik steeds meer tot de conclusie dat computers dus echt niet (zelf) random kunnen kiezen:-)
Heb ooit eens gelezen dat je door dit verschijnsel gokautomaten (had ik het al over) op hol kunt jagen om hem ertoe te bewegen om geld uit te keren!
(nog nooit geprobeert, alleen gelezen)
Evilest Aedolon
Koffie, het bier van de wiskundigen en natuurkundigen.
Op 13 januari 2006 14:05:51 schreef Fuzzbass:
Als je de spanning over een zogenaamde "ruisende transistor" door een A/D converter gooit, dan is het wel echt random. Meer willekeurig dan ruis kan niet.
Zelf in ruis zit er herhaling... Maargoed het lijkt inderdaad heel erg heel random.
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
Je wilt dat als er op de knop wordt gedrukt er een random getal komt tussen 1 en 16.
Nou, simpel.
De grootste random generator is dan "den mensch".
Laat in de lus waarop de PIC wacht op een toets een teller lopen van 1 t/m 16.
Als de knop wordt ingedrukt zal de PIC verder gaan met de toevallige tellerwaarde van dat moment.
(PIC Basic kent overigens RND)
Meer info over een tijdje in deel 8 van de cursus.
(Eerst nog deel 7)
Fantomaz
Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)
Gaat niet op Frits,
TS gaf aan dat hij zonder Mens (type Homo sapiëns) wenschte te werken.
Variabele (onhandige term in deze context) moet door iets anders geregeld worden.
Op 13 januari 2006 14:09:27 schreef soldeerfreak:
het is wel de bedoeling dat na verloop van tijd en veel experimenteren de schakelaar word weggelaten en het progje wordt uitgebreid ik zie het niet zitten om konstant een tellertje te laten lopen en nog een progje draaiende te houden (weet zelfs niet of het gaat in 1 pic 2progjes te laten lopen)