14-Kanal-Zufallslicht (und: rand-Funktion)



Du wirst ein 14-Kanal-Zufallslicht bauen und die Erzeugung einer Zufallszahl mittels der rand-Funktion kennenlernen.

Hier nochmal die vom letzten Versuch bekannte Schaltung:




Die Bezeichnungen PC0 bis PB5 sind die Portbezeichnungen des Atmega328, wie sie beim Fünfkanallauflicht erläutert wurden.



Das Programm ist sehr kurz:

/*
  14-Kanal-Zufallslicht
  LEDs an den Ausgängen: Digital_0 bis Digital_13
  LED Strombegrenzung: R1 = 220 Ohm
   
  www.arduinospielwiese.de 
*/


void setup() {               
  DDRB = 0b00111111;
  DDRD = 0b11111111;
}


void loop() {
  PORTB = rand();
  PORTD = rand();
  delay(150);
}




Die Funktion rand() erzeugt eine zufällige Zahl, die wir direkt in einen Port schieben.



Welchen Sinn hat das?

Stell Dir einmal vor, Du baust einen kleinen Roboter, der Hindernisse erkennt.
Wenn er herumfährt und gegen eine Wand trifft, fährt er immer 10 cm zurück, dreht sich beim ersten mal nach links um genau 90 Grad und fährt wieder geradeaus.
Trifft er ein zweites Mal gegen eine Wand, fährt er wieder 10 cm zurück, dreht sich um genau 90 Grad nach rechts und fährt wieder geradeaus.

Du ahnst schon was passiert, wenn er in eine 90-Grad-Ecke kommt? Genau - er kommt da nie wieder weg. Besonders dann, wenn er sehr genau arbeitet!
Eine andere Zahl als 90 Grad zu nehmen, wäre auch keine viel bessere Lösung. Es gibt die verschiedensten Ecken in Deiner Wohnung ...

Eine gute Lösung wäre eine zufällige Gradzahl, nicht wahr?