Die einfachste Möglichkeit, Zufallszahlen zu erzeugen, ist die Funktion random(). Sie benötigt im Prinzip zwei Zahlen: die kleinste Zahl und die größe die vorkommen darf. Das "Problem" von random ist, dass es keine wirklichen Zufallszahlen erzeugt, sondern eine Art Zahlenkette hat. Sobald man den Arduino also neu startet kommt die gleiche Zahlenfolge wie zuvor auch.
Die Funktion randomSeed() dagegen gibt dem Arduino Anweisung, zwar diese Zahlenfolge zu verwenden aber noch einen anderen Wert einzubauen. Ardublock verwendet für seinen Block "Zufallszahl" genau diese Funktion.
Wenn man sich das Programm nach dem hochlanden einmal anschaut, sieht man dass die Zahlen aus "random" mit den Analogen Pins A0, A1 und A2 multipliziert werden. Da an diesen Pins, wenn sie nicht gegen "high" oder "low" geschaltet sind, immer eine andere Spannung anliegt, haben wir nun eine wirklich zufällige Zahl.
Wer einmal sehen möchte was sein, wie sich so ein analoger Eingang verhält wenn er ohne dass etwas angeschlossen ist, der läd dieses Beispiel auf den Arduino und startet dann den Serial Monitor.
Im Serial Monitor ist dann schön zu sehen, wie sich die Zahlen verändern, ohne dass am Arduino etwas gemacht wird. Diese Veränderung von drei analogen Pins, ergibt dann unsere Zufallszahl.
Zufallszahl mit ARDUBLOCK (nicht letsgoink)
Wer die original Version von Ardublock verwendet, der hat einen etwas anderen Block, mit gleicher Funktion. Der Block erzeugt ebenfalls eine Zufallszahl nur das hier die MIN und MAX Zahl eingestellt werden kann und nicht nur die MAX Zahl. In dem Hochgeladen CODE fehlt mir zwar das rechnen mit den analogen PINs doch sind die ersten 10 Zahlen nach 10 mal starten immer anders, es ist also auch keine immer gleiche Zufallszahl.
Der Block Zufallszahl
Um eine Zufallszahl zu erhalten, braucht es eine analoge variable, in die der Wert gespeichert werden kann. Bei jedem "Durchgang" des Arduino wird nun eine andere Zufallszahl errechnet.
Es können aber keine beliebigen Zufallszahlen erzeugt werden. Es geht immer los bei der 0 und endet bei der Zahl die wir bei MAX eintragen. Wenn ich als bei Max 4 eintragen , dann erhalte ich zahlen von 0 bis drei. Ich erhalte also 4 Zahlen die zufällig erscheinen 0,1,2,3 aber vorsicht, keine 4. Wenn ich MAX 6 eingebe, dann erhalten ich die Zahlen 0,1,2,3,4,5 aber keine 6.
In diesem Beispiel erzeugt das Programm alle 500ms eine Zufallszahl von 0 bis 3 die auf dem Serial Monitor erscheint.
In dem Serial Monitor sieht man nun die Zufallszahlen die das Programm erzeugt hat. Zahlen von 0 bis 3.
Möchte man nun aber ein Programm mit einem Würfel haben, kann man die Zufallsfunktion so nicht verwenden. Wenn als MAX 6 eingestellt wird, komme ich nur bis zur Zahl 5. Wenn ich Max 7 einstelle, ist ab und zu immer noch eine 0 mit dabei, die ich auf dem Würfel nicht habe.
Wer Zufallszahlen von EINS an haben möchte kann alternativ einfach den mathematischen Block "+" verwenden und die Zufallszahl + 1 setzen. Damit wird die Zufallszahl immer um eine Stelle erhört und es beginnt dann nicht mit einer NULL sonder mit einer EINS. Weil 0+1=1, 1+1=2 usw. Damit würde sich nur die Zahl in den abgefragten Blöcken ändern, mir ist das nicht wichtig, deshalb spare ich mir das +1. Ich wollte es hier aber nicht unerwähnt lassen.
Würfel mit Zufallszahl, random seed und Ardublock
In diesem Programm, wird die erzeugte Zufallszahl mit dem "falls" Block ausgewertet und dann die passende Würfelzahl auf dem Serial Monitor ausgegeben. So erhalte ich aus den Zahlen von 0-5 die passenden Zahlen von 1-6 für mein Würfel Programm.
Das Ergebnis lässt sich in Serial Monitor dann sehr gut anschauen.
Um einen richtigen Würfel zu bauen bracht es natürlich noch einen Taster und die Passenden 6 LEDs die wie ein Würfel angeordnet sind. Die digitalen Ausgänge mit den Widerständen müssen natürlich mit den passenden LEDs verbunden werden.
Das Programm in Ardublock, sieht dann so aus. Damit der Würfel nach dem Start keine Zahl anzeigt, setzte ich die Variable auf 10, so wird keine Zahl angezeigt. Wird der Taster gedrückt, setze ich die Variable auf 0 zurück, dann wird eine Zufällig Zahl in der Variablen gespeichert. Danach werden alle LEDs ausgeschaltet, sonst das auch nur die LEDs die an sein sollen. Dann kommt auch schon das abfragen der Zufallszahl und das einschalten der passenden LEDs.