Arduino random zahl von Array nehmen?

1 Antwort

Vom Beitragsersteller als hilfreich ausgezeichnet

Wirklichen 'Zufall' gibt es für Computer nicht. Zufallszahlen, die von Programmen im normalfall generiert werden kommen meist von einem Pseudozufallsgenerator.

Arduinos haben einen solchen Generator nicht integriert, doch da du mit einem solchen das Privileg hast hardware nah zu sein kannst du auf 'echte' Zufallszahlen zugreifen. Dabei liest du einen nicht angeschlossenen Analogen-Pin. Den zurückgegebenen Wert mappst du nun auf die Array größe und du hast dein zufälliges Item.

Korrektur:
Es gibt doch einen Pseudozufallsgenerator unter Arduino. Für deine Zwecke reicht ein solcher komplet aus, aber einen Analogen-Pin der nicht angeschlossen ist zu lesen ist auch ein Weg.

lg Suiram1

Woher ich das weiß:Hobby – Ich programmiere seit 3 Jahren mit C#

Kelec  17.02.2025, 21:00

Besser ist es die Werte des Analogpins als Seed für den PRNG zu verwenden, oder zumindest ein Whitening zu machen weil die Höherwertigen Bits des ADC Werts nicht wirklich Zufällig sind.

MrFord 
Beitragsersteller
 17.02.2025, 21:09

Sry für diese blöde Frage, aber wie kriege ich eine "Zufallszahl" aus diesem Array? Möchte irgendeine LED einschalten dessen Pin in diesem Array sich befindet.

Gerne beispielcode

Suiram1  17.02.2025, 21:15
@MrFord

Einfach den Zufallswert abrufen und dann nutzen:

int pin = ledPinsS[random(0, 18)];

digitalWrite(pin, HIGH);
delay(1000);
digitalWrite(pin, LOW);

Dieser Code würde z.B. eine zufällige LED 1s leuchten lassen.

Suiram1  17.02.2025, 22:07
@Suiram1

Noch eine Korrektur dazu: der 2. Parameter der random Funktion muss 17 und nicht 18 sein, weil das array 18 Elemente hat also der maximale index 17 ist.