Hallo zusammen!
Ich benötige einen Zufallsgenerator. Nicht so einen, der immer das selbe Ergebnis hat. Nun bin ich auf eine seltsame Lösung gestoßen. Bei einem ATtiny44 habe ich PORTA.0 als Anlog-Input definiert. Nun würde man ja normalerweise da z.B. ein Potentiometer anschließen und den Wert des Spannungsteilers abfragen. Ich habe den Port aber einfach in der Luft hängen lassen. Dadurch scheint da ein gewisses Spannungs-Rauschen anzuliegen. Zur Verstärkung des Rauschens habe ich ein Stück Draht mit offenem Ende angeschlossen. Nun frage ich den Wert des ADC ab und lasse mir via MOD den gewünschten Zufalls-Bereichs ausgeben. Das scheint mir - natürlich mit einer gewissen Tolleranz - ein vernünftiges Ergebnis zu sein. Ohne "Antenne" funktioniert das auch, aber das Ergebnis ist etwas schlechter.
Ich gehe davon aus, dass dieses Verfahren nur für relativ kleine Zufalls-Bereiche anwendbar ist. Aber meist wird ja nur eine Entscheidung zwischen Ja und Nein oder 0-6 (Würfeln) oder wie bei mir zwischen 0 und 7 zur Lichtsteuerung bei einer Modelleisenbahn gesucht.
Zum testen bitte die Konstanten Vergl und Bereich anpassen.
Alles anzeigen
Ich benötige einen Zufallsgenerator. Nicht so einen, der immer das selbe Ergebnis hat. Nun bin ich auf eine seltsame Lösung gestoßen. Bei einem ATtiny44 habe ich PORTA.0 als Anlog-Input definiert. Nun würde man ja normalerweise da z.B. ein Potentiometer anschließen und den Wert des Spannungsteilers abfragen. Ich habe den Port aber einfach in der Luft hängen lassen. Dadurch scheint da ein gewisses Spannungs-Rauschen anzuliegen. Zur Verstärkung des Rauschens habe ich ein Stück Draht mit offenem Ende angeschlossen. Nun frage ich den Wert des ADC ab und lasse mir via MOD den gewünschten Zufalls-Bereichs ausgeben. Das scheint mir - natürlich mit einer gewissen Tolleranz - ein vernünftiges Ergebnis zu sein. Ohne "Antenne" funktioniert das auch, aber das Ergebnis ist etwas schlechter.
Ich gehe davon aus, dass dieses Verfahren nur für relativ kleine Zufalls-Bereiche anwendbar ist. Aber meist wird ja nur eine Entscheidung zwischen Ja und Nein oder 0-6 (Würfeln) oder wie bei mir zwischen 0 und 7 zur Lichtsteuerung bei einer Modelleisenbahn gesucht.
Zum testen bitte die Konstanten Vergl und Bereich anpassen.
Quellcode
- $regfile "attiny44.dat"
- ' '
- $crystal = 1000000
- $swstack = 50
- $hwstack = 50
- $framesize = 50
- Config Porta = Output
- Config Porta.0 = Input
- Config Adc = Single , Prescaler = Auto , Reference = Avcc
- Const Vergl = 310
- Const Bereich = 3
- Dim Zufall As Word
- Dim Eins As Word
- Dim Zwei As Word
- Dim Drei As Word
- Dim Vier As Word
- Dim Fuenf As Word
- Dim N As Word
- Do
- For N = 1 To 1000
- Zufall = Getadc(0)
- Zufall = Zufall Mod Bereich
- If Zufall = 0 Then Incr Eins
- If Zufall = 1 Then Incr Zwei
- If Zufall = 2 Then Incr Drei
- If Zufall = 3 Then Incr Vier
- If Zufall = 4 Then Incr Fuenf
- Next
- If Eins > Vergl Then Porta.1 = 1
- If Zwei > Vergl Then Porta.2 = 1
- If Drei > Vergl Then Porta.3 = 1
- If Vier > Vergl Then Porta.4 = 1
- If Fuenf > Vergl Then Porta.5 = 1
- Waitms 500
- Porta.1 = 0
- Porta.2 = 0
- Porta.3 = 0
- Porta.4 = 0
- Porta.5 = 0
- Waitms 500
- Eins = 0
- Zwei = 0
- Drei = 0
- Vier = 0
- Fuenf = 0
- Loop