Forum: Mikrocontroller und Digitale Elektronik Partymodus Zufallslichter


von Niiine (Gast)


Lesenswert?

Hey,

ich will eig. nur per Zufall verschiedene LEDs an oder aus schalten. So 
quasi schnell langsam, alles wild per Zufall. Allerdings geht das nicht. 
Die Lampen bleiben aus, ich weiss allerdings nicht woran das liegt.
Habt ihr eine Idee?

Hier der Code der Methode:
1
void partymodus()
2
{
3
  zufallszahl=(get_seed()*1000)%3000;
4
  aktion = zufallszahl%16;
5
  
6
  switch(aktion)
7
  {
8
    case 1:
9
    on1;
10
    delay_ms(zufallszahl);
11
    break;
12
    case 2:
13
    off1;
14
    delay_ms(zufallszahl);
15
    break;
16
    case3:
17
    on2;
18
    delay_ms(zufallszahl);
19
    break;
20
    case4:
21
    off2;
22
    delay_ms(zufallszahl);
23
    break;
24
    case5:
25
    on3;
26
    delay_ms(zufallszahl);
27
    break;
28
    case6:
29
    off3;
30
    delay_ms(zufallszahl);
31
    break;
32
    case7:
33
    on4;
34
    delay_ms(zufallszahl);
35
    break;
36
    case8:
37
    off4;
38
    delay_ms(zufallszahl);
39
    break;
40
    case9:
41
    on5;
42
    delay_ms(zufallszahl);
43
    break;
44
    case10:
45
    off5;
46
    delay_ms(zufallszahl);
47
    break;
48
    case11:
49
    on6;
50
    delay_ms(zufallszahl);
51
    break;
52
    case12:
53
    off6;
54
    delay_ms(zufallszahl);
55
    break;
56
    case13:
57
    delay_ms(zufallszahl);
58
    break;
59
    case14:
60
    delay_ms(zufallszahl);
61
    break;
62
    case15:
63
    onalle;
64
    delay_ms(zufallszahl);
65
    break;
66
    case16:
67
    offalle;
68
    delay_ms(zufallszahl);
69
    break;
70
  }
71
  
72
}

Zufallszahlen werden so gemacht:
1
unsigned short get_seed()
2
{
3
   unsigned short seed = 0;
4
   unsigned short *p = (unsigned short*) (RAMEND+1);
5
   extern unsigned short __heap_start;
6
    
7
   while (p >= &__heap_start + 1)
8
      seed ^= * (--p);
9
    
10
   return seed;
11
}

Danke für eure Hilfe!!

Niine

von Niiine (Gast)


Lesenswert?

Ahhhh, die Case dinger, da stehen ja die 3 direkt am case.
Tut mir leid, kann ich das irgendwie wieder löschen?

Bei dem highlighting hier sieht man das ja besser.

Danke :)

von Ralf G. (ralg)


Lesenswert?

Niiine schrieb:
> Die Lampen bleiben aus, ich weiss allerdings nicht woran das liegt.

delay_ms(zufallszahl);

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

if(aktion<=12)
{
  (aktion)&1?on[aktion>>1]:off[aktion>>1];
}
else
  if(aktion==15)allon
.....
case 16 ist nicht erreichbar.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.