[Arduino]Code mit Random funktioniert nicht

Gast #3424572
Lesenswert?
• ▲
▼
Ich will ein Programm schreiben welches auf dem Arduino mit random eine 
Zufallszahl gneriert. Abhängig von dieser soll damit dann ein anderer 
Teil ausgeführt werden.
1
void setup() {
2
  // put your setup code here, to run once:
3
Serial.begin(9600);
4
int s = random(1, 5);
5
}
6

7
void loop() {
8
int s;
9
switch (s){
10
 case 1:
11
  Serial.println(1);
12
delay(800);
13
Serial.println("rot");
14
delay(800);
15
Serial.println("grün");
16
delay(800);
17
Serial.println("bitte eingeben");
18
break;
19

20
case 2:
21
Serial.println(2);
22
delay(800);
23
Serial.println("rot");
24
delay(800);
25
Serial.println("grün");
26
delay(800);
27
Serial.println("bitte eingeben");
28
break;
29

30
case 3:
31
Serial.println(3);
32
delay(800);
33
Serial.println("rot");
34
delay(800);
35
Serial.println("grün");
36
delay(800);
37
Serial.println("bitte eingeben");
38
break;
39

40
case 4:
41
Serial.println(4);
42
delay(800);
43
Serial.println("rot");
44
delay(800);
45
Serial.println("grün");
46
delay(800);
47
Serial.println("bitte eingeben");
48
break;
49
}
50
}
#3424607
Lesenswert?
• ▲
▼
LeDran schrieb:
1
> void setup() {
2
> ...
3
> int s = random(1, 5);  // deklariere eine Variable, die nur in "setup" gültig ist
4
> }
5
> 
6
> void loop() {
7
> int s; // deklariere eine Variable, die nur in "loop" gültig ist
8
> ...
9
> }
10
>


Die beiden deklarierten Variablen haben absolut nichts miteinander zu 
tun. Die eine deklarierte Variable gilt nur in der Funktion setup und 
die andere Variable gilt nur in der Funktion loop.

Am besten informierst Du Dich mal über den Gültigkeitsbereich von 
Variablen. Vielleicht möchtest Du, wie vom Vorredner bereits 
vorgeschlagen, stattdessen eine global deklarierte Variable verwenden.

Und: Du erzeugst Pseudo-Zufallszahlen. So wie Du es machst, werden die 
Zufallszahlen immer in derselben Reihenfolge erzegt, d.h. bei 
verschiedenen Aufrufen der random-Funktion werden zwar nacheinander 
verschiedene Zufallszahlen erzeugt, aber die Reihenfolge der erzeugten 
Zufallszahlen ist bei jedem Programmstart exakt identisch. D.h. wenn 
Dein Programm nur einmal eine Zufallszahl erzeugt, wird es bei jedem 
Programmstart dieselbe "Zufallszahl" sein, die erzeugt wird. Wenn Du 
möchtest, dass ab Programmstart weg verschiedene Reihen von 
Zufallszahlen erzeugt werden, muss auch der Zufallszahlengenerator mit 
einem zufälligen Wert initialisiert werden. Siehe auch:
http://arduino.cc/de/Reference/RandomSeed
Gast #3424666
Lesenswert?
• ▲
▼
Ok danke das klappt habe ich schlichtweg übersehen dass es oben 
drinsteht.

Wo jetzt noch der Text mit Nummer und Farbe zwischen den Cases steht 
sollen LEDs in einer vorgegebenen Reihenfolge angesteuert werden. 
Anschließend muss die Reihenfolge wieder über Taster eingegeben werden. 
Habe bei einjem Zahlenschlossbeispiel geshen dass man sowas über ein 
Array lösen kann, werde aber nicht ganz schlau aus der Beschreibung auf 
arduino.cc.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.