Hallo ich brauche Hilfe LED roulette und Relais

Ich konstruiere ein LED ROULETTE mit Ansteuerung eines Relais.
Es wird ein Spielautomat entstehen. Ich wollte ihn bis Weihnachten für meinen Sohn fertigstellen doch nun komm ich nicht weiter.
Mein Gedanke ist das ich einen Taster betätige, danach dreht sich das LED ROULETTE für 4 Runden, dauraus folgt dann das bei einer zufälligen LED das Roulette stehenbleibt . Falls dabei die vorher festgelegte LED (z.B LED 8 ) leuchtet soll ein Relais für 5 Sekunden anschalten und dann wieder aus. Nach dem Ablauf soll alles anhalten bis wieder der Taster betätigt wird.
Bin leider absoluter Anfänger, doch total begeistert vom Arduino.
Kann mir jemand bitte bei meinem Code helfen.

int ledPin0 = 6;
int ledPin1 = 7;
int ledPin2 = 8;
int ledPin3 = 9;
int ledPin4 = 10;
int ledPin5 = 11;
int ledPin6 = 12;
int ledPin7 = 13;
int tasterPin = 2;
int zufall;
int tonePin = 3;

void setup() {
// put your setup code here, to run once:

// Zufallsgenerator starten
randomSeed(analogRead(0));
zufall = random(1, 7);
pinMode(ledPin0,OUTPUT);
pinMode(ledPin1,OUTPUT);
pinMode(ledPin2,OUTPUT);
pinMode(ledPin3,OUTPUT);
pinMode(ledPin4,OUTPUT);
pinMode(ledPin5,OUTPUT);
pinMode(ledPin6,OUTPUT);
pinMode(ledPin7,OUTPUT);
pinMode(tonePin,OUTPUT);
pinMode(tasterPin,INPUT_PULLUP);
}

void loop() {

if (digitalRead(tasterPin)==HIGH){

{

digitalWrite(ledPin0, HIGH);
tone(3, 80, 100);
delay(60);
digitalWrite(ledPin0, LOW);
delay(50);
digitalWrite(ledPin1, HIGH);
tone(3, 80, 100);
delay(60);
digitalWrite(ledPin1, LOW);
delay(50);
digitalWrite(ledPin2, HIGH);
tone(3, 80, 100);
delay(60);
digitalWrite(ledPin2, LOW);
delay(50);
digitalWrite(ledPin3, HIGH);
tone(3, 80, 100);
delay(60);
digitalWrite(ledPin3, LOW);
delay(50);
digitalWrite(ledPin4, HIGH);
tone(3, 80, 100);
delay(60);
digitalWrite(ledPin4, LOW);
delay(50);
digitalWrite(ledPin5, HIGH);
tone(3, 80, 100);
delay(60);
digitalWrite(ledPin5, LOW);
delay(50);
digitalWrite(ledPin6, HIGH);
tone(3, 80, 100);
delay(60);
digitalWrite(ledPin6, LOW);
delay(50);
digitalWrite(ledPin7, HIGH);
tone(3, 80, 100);
delay(60);
digitalWrite(ledPin7, LOW);
/////////////////////////////////////
digitalWrite(ledPin0, HIGH);
tone(3, 80, 80);
delay(100);
digitalWrite(ledPin0, LOW);
delay(50);
digitalWrite(ledPin1, HIGH);
tone(3, 80, 80);
delay(100);
digitalWrite(ledPin1, LOW);
delay(50);
digitalWrite(ledPin2, HIGH);
tone(3, 80, 80);
delay(100);
digitalWrite(ledPin2, LOW);
delay(50);
digitalWrite(ledPin3, HIGH);
tone(3, 80, 80);
delay(100);
digitalWrite(ledPin3, LOW);
delay(50);
digitalWrite(ledPin4, HIGH);
tone(3, 80, 80);
delay(100);
digitalWrite(ledPin4, LOW);
delay(50);
digitalWrite(ledPin5, HIGH);
tone(3, 80, 80);
delay(100);
digitalWrite(ledPin5, LOW);
delay(50);
digitalWrite(ledPin6, HIGH);
tone(3, 80, 80);
delay(100);
digitalWrite(ledPin6, LOW);
delay(50);
digitalWrite(ledPin7, HIGH);
tone(3, 80, 80);
delay(100);
digitalWrite(ledPin7, LOW);

/////////////////////////////////////
digitalWrite(ledPin0, HIGH);
tone(3, 80, 60);
delay(150);
digitalWrite(ledPin0, LOW);
delay(50);
digitalWrite(ledPin1, HIGH);
tone(3, 80, 60);
delay(150);
digitalWrite(ledPin1, LOW);
delay(50);
digitalWrite(ledPin2, HIGH);
tone(3, 80, 60);
delay(150);
digitalWrite(ledPin2, LOW);
delay(50);
digitalWrite(ledPin3, HIGH);
tone(3, 80, 60);
delay(150);
digitalWrite(ledPin3, LOW);
delay(50);
digitalWrite(ledPin4, HIGH);
tone(3, 80, 60);
delay(150);
digitalWrite(ledPin4, LOW);
delay(50);
digitalWrite(ledPin5, HIGH);
tone(3, 80, 60);
delay(150);
digitalWrite(ledPin5, LOW);
delay(50);
digitalWrite(ledPin6, HIGH);
tone(3, 80, 60);
delay(150);
digitalWrite(ledPin6, LOW);
delay(50);
digitalWrite(ledPin7, HIGH);
tone(3, 80, 60);
delay(150);
digitalWrite(ledPin7, LOW);

//////////////////////////////////////////////
digitalWrite(ledPin0, HIGH);
tone(3, 80, 40);
delay(200);
digitalWrite(ledPin0, LOW);
delay(50);
digitalWrite(ledPin1, HIGH);
tone(3, 80, 40);
delay(200);
digitalWrite(ledPin1, LOW);
delay(50);
digitalWrite(ledPin2, HIGH);
tone(3, 80, 40);
delay(200);
digitalWrite(ledPin2, LOW);
delay(50);
digitalWrite(ledPin3, HIGH);
tone(3, 80, 40);
delay(200);
digitalWrite(ledPin3, LOW);
delay(50);
digitalWrite(ledPin4, HIGH);
tone(3, 80, 40);
delay(200);
digitalWrite(ledPin4, LOW);
delay(50);
digitalWrite(ledPin5, HIGH);
tone(3, 80, 40);
delay(200);
digitalWrite(ledPin5, LOW);
delay(50);
digitalWrite(ledPin6, HIGH);
tone(3, 80, 40);
delay(200);
digitalWrite(ledPin6, LOW);
delay(50);
digitalWrite(ledPin7, HIGH);
tone(3, 80, 40);
delay(50);
digitalWrite(ledPin7, LOW);

//////////////////////////////////////////
digitalWrite(ledPin0, HIGH);
tone(3, 80, 20);
delay(250);
digitalWrite(ledPin0, LOW);
delay(50);
digitalWrite(ledPin1, HIGH);
tone(3, 80, 20);
delay(250);
digitalWrite(ledPin1, LOW);
delay(50);
digitalWrite(ledPin2, HIGH);
tone(3, 80, 20);
delay(250);
digitalWrite(ledPin2, LOW);
delay(50);
digitalWrite(ledPin3, HIGH);
tone(3, 80, 20);
delay(250);
digitalWrite(ledPin3, LOW);
delay(50);
digitalWrite(ledPin4, HIGH);
tone(3, 80, 20);
delay(250);
digitalWrite(ledPin4, LOW);
delay(50);
digitalWrite(ledPin5, HIGH);
tone(3, 80, 20);
delay(250);
digitalWrite(ledPin5, LOW);
delay(50);
digitalWrite(ledPin6, HIGH);
tone(3, 80, 20);
delay(250);
digitalWrite(ledPin6, LOW);
delay(50);
digitalWrite(ledPin7, HIGH);
tone(3, 80, 20);
delay(250);
digitalWrite(ledPin7, LOW);

///////////////////////////////////
digitalWrite(ledPin0, HIGH);
tone(3, 80, 10);
delay(300);
digitalWrite(ledPin0, LOW);
delay(50);
digitalWrite(ledPin1, HIGH);
tone(3, 80, 10);
delay(300);
digitalWrite(ledPin1, LOW);
delay(50);
digitalWrite(ledPin2, HIGH);
tone(3, 80, 10);
delay(300);
digitalWrite(ledPin2, LOW);
delay(50);
digitalWrite(ledPin3, HIGH);
tone(3, 80, 10);
delay(300);
digitalWrite(ledPin3, LOW);
delay(50);
digitalWrite(ledPin4, HIGH);
tone(3, 80, 10);
delay(300);
digitalWrite(ledPin4, LOW);
delay(50);
digitalWrite(ledPin5, HIGH);
tone(3, 80, 10);
delay(300);
digitalWrite(ledPin5, LOW);
delay(50);
digitalWrite(ledPin6, HIGH);
tone(3, 80, 10);
delay(300);
digitalWrite(ledPin6, LOW);
delay(50);
digitalWrite(ledPin7, HIGH);
tone(3, 80, 10);
delay(300);
digitalWrite(ledPin7, LOW);

//////////////////////////////////////
}
}
else
{
(digitalRead(tasterPin)==LOW);

}
}

digitalWrite(ledPin0, LOW);
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite (ledPin6, LOW);
digitalWrite (ledPin7, LOW);
}
}
}
}

Ob Sie in English sprechen es wurde viel besser.

hello Sir,

I construct an LED ROULETTE with control of a relay.
A slot machine will be created. I wanted to finish it for my son by Christmas but now I can't get any further.
My thought is that I press a button, then the LED ROULETTE rotates for 4 rounds, from which it follows that with a random LED the roulette stops. If the previously defined LED (e.g. LED 8) lights up, a relay should switch on for 5 seconds and then off again. After the process, everything should stop until the button is pressed again.
I'm an absolute beginner, but totally enthusiastic about the Arduino.
Can someone please help me with my code.

I construct an LED ROULETTE with control of a relay.
A slot machine will be created. I wanted to finish it for my son by Christmas but now I can't get any further.
My thought is that I press a button, then the LED ROULETTE rotates for 4 rounds, from which it follows that with a random LED the roulette stops. If the previously defined LED (e.g. LED 8) lights up, a relay should switch on for 5 seconds and then off again. After the process, everything should stop until the button is pressed again.
I'm an absolute beginner, but totally enthusiastic about the Arduino.
Can someone please help me with my code.

int ledPin0 = 6;
int ledPin1 = 7;
int ledPin2 = 8;
int ledPin3 = 9;
int ledPin4 = 10;
int ledPin5 = 11;
int ledPin6 = 12;
int ledPin7 = 13;
int tasterPin = 2;
int zufall;
int tonePin = 3;

void setup() {
// put your setup code here, to run once:

// Zufallsgenerator starten
randomSeed(analogRead(0));
zufall = random(1, 7);
pinMode(ledPin0,OUTPUT);
pinMode(ledPin1,OUTPUT);
pinMode(ledPin2,OUTPUT);
pinMode(ledPin3,OUTPUT);
pinMode(ledPin4,OUTPUT);
pinMode(ledPin5,OUTPUT);
pinMode(ledPin6,OUTPUT);
pinMode(ledPin7,OUTPUT);
pinMode(tonePin,OUTPUT);
pinMode(tasterPin,INPUT_PULLUP);
}

void loop() {

if (digitalRead(tasterPin)==HIGH){

{

digitalWrite(ledPin0, HIGH);
tone(3, 80, 100);
delay(60);
digitalWrite(ledPin0, LOW);
delay(50);
digitalWrite(ledPin1, HIGH);
tone(3, 80, 100);
delay(60);
digitalWrite(ledPin1, LOW);
delay(50);
digitalWrite(ledPin2, HIGH);
tone(3, 80, 100);
delay(60);
digitalWrite(ledPin2, LOW);
delay(50);
digitalWrite(ledPin3, HIGH);
tone(3, 80, 100);
delay(60);
digitalWrite(ledPin3, LOW);
delay(50);
digitalWrite(ledPin4, HIGH);
tone(3, 80, 100);
delay(60);
digitalWrite(ledPin4, LOW);
delay(50);
digitalWrite(ledPin5, HIGH);
tone(3, 80, 100);
delay(60);
digitalWrite(ledPin5, LOW);
delay(50);
digitalWrite(ledPin6, HIGH);
tone(3, 80, 100);
delay(60);
digitalWrite(ledPin6, LOW);
delay(50);
digitalWrite(ledPin7, HIGH);
tone(3, 80, 100);
delay(60);
digitalWrite(ledPin7, LOW);
/////////////////////////////////////
digitalWrite(ledPin0, HIGH);
tone(3, 80, 80);
delay(100);
digitalWrite(ledPin0, LOW);
delay(50);
digitalWrite(ledPin1, HIGH);
tone(3, 80, 80);
delay(100);
digitalWrite(ledPin1, LOW);
delay(50);
digitalWrite(ledPin2, HIGH);
tone(3, 80, 80);
delay(100);
digitalWrite(ledPin2, LOW);
delay(50);
digitalWrite(ledPin3, HIGH);
tone(3, 80, 80);
delay(100);
digitalWrite(ledPin3, LOW);
delay(50);
digitalWrite(ledPin4, HIGH);
tone(3, 80, 80);
delay(100);
digitalWrite(ledPin4, LOW);
delay(50);
digitalWrite(ledPin5, HIGH);
tone(3, 80, 80);
delay(100);
digitalWrite(ledPin5, LOW);
delay(50);
digitalWrite(ledPin6, HIGH);
tone(3, 80, 80);
delay(100);
digitalWrite(ledPin6, LOW);
delay(50);
digitalWrite(ledPin7, HIGH);
tone(3, 80, 80);
delay(100);
digitalWrite(ledPin7, LOW);

/////////////////////////////////////
digitalWrite(ledPin0, HIGH);
tone(3, 80, 60);
delay(150);
digitalWrite(ledPin0, LOW);
delay(50);
digitalWrite(ledPin1, HIGH);
tone(3, 80, 60);
delay(150);
digitalWrite(ledPin1, LOW);
delay(50);
digitalWrite(ledPin2, HIGH);
tone(3, 80, 60);
delay(150);
digitalWrite(ledPin2, LOW);
delay(50);
digitalWrite(ledPin3, HIGH);
tone(3, 80, 60);
delay(150);
digitalWrite(ledPin3, LOW);
delay(50);
digitalWrite(ledPin4, HIGH);
tone(3, 80, 60);
delay(150);
digitalWrite(ledPin4, LOW);
delay(50);
digitalWrite(ledPin5, HIGH);
tone(3, 80, 60);
delay(150);
digitalWrite(ledPin5, LOW);
delay(50);
digitalWrite(ledPin6, HIGH);
tone(3, 80, 60);
delay(150);
digitalWrite(ledPin6, LOW);
delay(50);
digitalWrite(ledPin7, HIGH);
tone(3, 80, 60);
delay(150);
digitalWrite(ledPin7, LOW);

//////////////////////////////////////////////
digitalWrite(ledPin0, HIGH);
tone(3, 80, 40);
delay(200);
digitalWrite(ledPin0, LOW);
delay(50);
digitalWrite(ledPin1, HIGH);
tone(3, 80, 40);
delay(200);
digitalWrite(ledPin1, LOW);
delay(50);
digitalWrite(ledPin2, HIGH);
tone(3, 80, 40);
delay(200);
digitalWrite(ledPin2, LOW);
delay(50);
digitalWrite(ledPin3, HIGH);
tone(3, 80, 40);
delay(200);
digitalWrite(ledPin3, LOW);
delay(50);
digitalWrite(ledPin4, HIGH);
tone(3, 80, 40);
delay(200);
digitalWrite(ledPin4, LOW);
delay(50);
digitalWrite(ledPin5, HIGH);
tone(3, 80, 40);
delay(200);
digitalWrite(ledPin5, LOW);
delay(50);
digitalWrite(ledPin6, HIGH);
tone(3, 80, 40);
delay(200);
digitalWrite(ledPin6, LOW);
delay(50);
digitalWrite(ledPin7, HIGH);
tone(3, 80, 40);
delay(50);
digitalWrite(ledPin7, LOW);

//////////////////////////////////////////
digitalWrite(ledPin0, HIGH);
tone(3, 80, 20);
delay(250);
digitalWrite(ledPin0, LOW);
delay(50);
digitalWrite(ledPin1, HIGH);
tone(3, 80, 20);
delay(250);
digitalWrite(ledPin1, LOW);
delay(50);
digitalWrite(ledPin2, HIGH);
tone(3, 80, 20);
delay(250);
digitalWrite(ledPin2, LOW);
delay(50);
digitalWrite(ledPin3, HIGH);
tone(3, 80, 20);
delay(250);
digitalWrite(ledPin3, LOW);
delay(50);
digitalWrite(ledPin4, HIGH);
tone(3, 80, 20);
delay(250);
digitalWrite(ledPin4, LOW);
delay(50);
digitalWrite(ledPin5, HIGH);
tone(3, 80, 20);
delay(250);
digitalWrite(ledPin5, LOW);
delay(50);
digitalWrite(ledPin6, HIGH);
tone(3, 80, 20);
delay(250);
digitalWrite(ledPin6, LOW);
delay(50);
digitalWrite(ledPin7, HIGH);
tone(3, 80, 20);
delay(250);
digitalWrite(ledPin7, LOW);

///////////////////////////////////
digitalWrite(ledPin0, HIGH);
tone(3, 80, 10);
delay(300);
digitalWrite(ledPin0, LOW);
delay(50);
digitalWrite(ledPin1, HIGH);
tone(3, 80, 10);
delay(300);
digitalWrite(ledPin1, LOW);
delay(50);
digitalWrite(ledPin2, HIGH);
tone(3, 80, 10);
delay(300);
digitalWrite(ledPin2, LOW);
delay(50);
digitalWrite(ledPin3, HIGH);
tone(3, 80, 10);
delay(300);
digitalWrite(ledPin3, LOW);
delay(50);
digitalWrite(ledPin4, HIGH);
tone(3, 80, 10);
delay(300);
digitalWrite(ledPin4, LOW);
delay(50);
digitalWrite(ledPin5, HIGH);
tone(3, 80, 10);
delay(300);
digitalWrite(ledPin5, LOW);
delay(50);
digitalWrite(ledPin6, HIGH);
tone(3, 80, 10);
delay(300);
digitalWrite(ledPin6, LOW);
delay(50);
digitalWrite(ledPin7, HIGH);
tone(3, 80, 10);
delay(300);
digitalWrite(ledPin7, LOW);

//////////////////////////////////////
}
else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}

digitalWrite(ledPin0, LOW);
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
digitalWrite (ledPin6, LOW);
digitalWrite (ledPin7, LOW);
}
}
}
}

Hi

Mittlerweile im deutschen Teil des Forum :slight_smile:

Worin besteht Dein Problem?
An Deinem Sketch gibt es ... 'ein/zwei Kleinigkeiten', Die man verbessern könnte' ... um Das Mal diplomatisch auszudrücken.

Nun denn - Weihnachten ist nicht mehr so weit weg (wobei ich Heute auch schon schrieb, daß ich ja auch noch 10 Tage Zeit hätte ... nach Mitternacht, 9 ... ok, bis 18:00H ... wieder 10 :slight_smile: )

Für den ganzen Kram, Den Du bisher festlegst, reicht BYTE.
Alles (weit) unter 256.
Die Pin-Definitionen verändern sich während des Programmablauf nicht - also 'const' dabei - Das ermöglicht dem Kompiler, den Code zu optimieren.

Das hat aber rein gar Nichts mit Deinem Problem zu tun - Welches ist aber noch nicht verstanden habe - bitte umschreibe Dieses genauer.

MfG

Edit

digitalRead(tasterPin)==LOW

DAS macht WAS?

Als ELSE-Zweig (wäre aber unnötig, da der andere Zweig ==HIGH ist) sollte Da ein IF vor stehen - oder eben ganz verschwinden, da der ELSE-Zweig eh abgearbeitet wird, wenn ==LOW.

Edit 2
Wo wird, aufgrund des Zufall, irgendwie 'verzweigt'?
Nicht nur, weil ich mir die ganze delay-Wurst nicht antun will ...

Hallo,

wenn es auf einen UNO soll: bei mir läuft der Compiler schon nicht durch.
Sketch mal sinnvoll formatieren (Strg-T in der IDE) und den falschen Klammersalt aufräumen.
Weiter habe ich nichr geschaut.

Zusätzlich zu den Anmerkungen von postmaster-ino:
int ledPin0 = 6;
Soviele Pins hat ein AVR garnicht, byte ledPin0 = 6; reicht da vöiig, Speicher verschwendet man auf einem AVR nicht.

Gruß aus Berlin
Michael

byte ledPin0 = 6; reicht da vöiig, Speicher verschwendet man auf einem AVR nicht

Wenn schon, dann [b]const[/b] byte ledPin0 = 6; :slight_smile: Für den Compiler ist das ein wesentlicher Unterschied, auch was Optimierungsmöglichkeiten angeht.

Dass noch keiner über fehlende Code-Tags, die du gerne auch nachträglich einbauen kannst, gemeckert hat, ist eigentlich verwunderlich hier.

Hallo,

michael_x:
Wenn schon, dann [b]const[/b] byte ledPin0 = 6; :slight_smile: Für den Compiler ist das ein wesentlicher Unterschied, auch was Optimierungsmöglichkeiten angeht.

Wo Du Recht hast hast Du Recht.

ist aber alles eigentlich eine andere Baustelle, prinzipiell geht es ja uch erstmal mit seinem Konstrukt wenn er mal die Fehler ausbaut.

michael_x:
Dass noch keiner über fehlende Code-Tags, die du gerne auch nachträglich einbauen kannst, gemeckert hat, ist eigentlich verwunderlich hier.

stimmt auch, na warten wir mal ab, nioch haben wir ja vom TO nichts Neues gehört.

Gruß aus Berlin
Michael

Damit Euch nichts fehlt, hole ich das mal schnell nach. :wink:

@TO: Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
So ist er auch auf portablen Geräten lesbar. Das kannst Du auch noch nachträglich ändern.

Gruß Tommy

Hallo,

Tommy56:
Damit Euch nichts fehlt, hole ich das mal schnell nach. :wink:

vielen vielen Dank, Du hast uns den Tag gerettet. :slight_smile:

Gruß aus Berlin
Michael

Und das mit den Code-Tags bitte in beiden Posts, damit man nicht so viel scrollen muss.

Da wird der Finger lahm. :wink:

hallo sid2323,

kannst es ja mal damit versuchen, vielleicht bekommst du das Weihnachtsgeschenk doch noch fertig.

Den Taster hab ich jetzt nicht extra speziell entprellt, sollte aber trotzdem funktionieren.
Die LED des 'Fachs' wo die Kugel stehen bleibt, bleibt solange eingeschaltet, wie das Relays Ein ist.
zusammen mit dem Relays schaltet die led ab und das Roulette ist für ein neues Spiel bereit.

//*********************************
//*          ROULETTE             *
//*********************************

// definitionen
#define EIN   LOW       //<< falls dein Relay ei HIGH braucht zum einschalten, schreibst du hier HIGH rein
#define AUS   !EIN

// constanten (pins)
const byte LedPin[] = {6, 7, 8, 9, 10, 11, 12, 13};  // deine Led Pins, so kannst du jede led über eine zahl (0-7) ansprechen
const byte TonePin = 3;                        // tone pin
const byte RelayPin = 5;                       // relay pin (hattest Du in deinem code nicht definiert)
const byte TasterPin = 2;                      // Dein taster

byte zufall = 0;
bool runstate = false;                          // wird 'true' also wahr , wenn das roulette dreht

// zeitgeber  (diese könnte mann auch lokal in der Funktion 'Rotieren' deklarieren)
unsigned long leuchtdauerStart = 0;             // Merker für Startzeitpunkt wann eine LED zu leuchten beginnt
unsigned long leuchtpauseStart = 0;             // Merker für Startzeitpunkt der Pause, bis nächste LED leuchten soll
unsigned long relayEinStart = 0;                // Merker für Startzeitpunkt, wann das Relays eingeschaltet wird
const unsigned long leuchtdauer = 60;           // Solange soll eine led leuchten (in millisekunden)
const unsigned long leuchtpause = 50;           // Pause zwischen dem leuchten der led's (in millisekunden)
const unsigned long relayEinDauer = 5000;      // einschaltdauer des relay

void setup() {
  randomSeed(analogRead(0)); 
  zufall = random(8);                     // ergibt eine zahl von 0 - 7 , genau das was du brauchst, um die led zu bestimmen
  for (byte i = 0 ; i < 8 ; i++)
  {
    pinMode (LedPin[i],OUTPUT);           // i ist die zahl (nummer) über die die led pins angesprochen werden
  }
  pinMode(TonePin, OUTPUT);
  pinMode(RelayPin, OUTPUT);
  digitalWrite(RelayPin, AUS);
  pinMode(TasterPin, INPUT_PULLUP);
}

void loop() {
  if (digitalRead(TasterPin) == LOW)     // da Du den eingang 'Input_PULLUP' hast, schaltet der taster nach gnd
  {                                      // d.h der eingang wird LOW wenn du den taster drückst
    if (!runstate)                       // nur auf taster reagieren, wenn Roulett-Rad nicht dreht
    {                                    
      zufall = random(8);                // zufallszahl erzeugen
      Rotieren();                        // hier wird das drehen des 'Roulette-Rades' aufgerufen
    }
  }  
  else
  {
    if (runstate == true)                // wenn Roulette-Rad gestartet, Rotieren ausführen bis kugel im fach
    {
      Rotieren();
    }
  }
}
// --------------------------    loop end ----------------------

void Rotieren(){
  static byte runde = 0;
  static byte led = 0;
  static byte stage = 0;                // gibt an in welcher 'Phase' sich das roulette befindet (leuchten, pause , kugel im fach)
  static bool state = 0;                // steuert die einzelnen Phasen.
  switch (stage)
  {
    case 0:                             // Phase led leuchtet
      if (!state)
      {
        digitalWrite(LedPin[led], HIGH);  // led einschalten
        tone(TonePin, 80, 100);
        leuchtdauerStart = millis();
        state = 1;
        if(!runstate) runstate = true;    //Roulette-Rad dreht
        {
          
        }
      }
      else 
      {
        if (runde == 4 && led == zufall)  // nach 4. Runde die kugel ins vom zufall bestimmte fach
        {
          state = 0;
          stage = 2;
        }
        else if (millis() - leuchtdauerStart >= leuchtdauer)  // leuchtdauer erreicht?
        {
          digitalWrite(LedPin[led], LOW);    // led wieder ausschalten
          state = 0;
          stage = 1;
        }
       }
      break;
    case 1:                                                // Phase Leuchtpause
      if (!state)
      {
        leuchtpauseStart = millis();
        state = 1;
      }
      else if (millis() - leuchtpauseStart >= leuchtpause)  // wenn leuchtpause vorbei
      {
        led ++;                                             // nächste led
        if (led == 8)                                       //letzte led erreicht?
        {
          led = 0;                                          // wieder mit erster led beginnen
          runde ++;                                         // und nächste runde
        }       
        state = 0;
        stage = 0;
      }
      break;
    case 2:                                                 // Phase Kugel im Fach
      if (!state)
      {
        digitalWrite(RelayPin, EIN);
        relayEinStart = millis();
        state = 1;
      }
      else if (millis() - relayEinStart >= relayEinDauer)  // relay bereits  sekunden ein?
      {
        digitalWrite(RelayPin, AUS);                       // relay aus
        digitalWrite(LedPin[led], LOW);                    // led aus
        runde = 0;                                         // alles zurücksetzen
        led = 0;
        stage = 0;
        state = 0;
        runstate = false;                                   // spielrunde beendet
      }
    break;
  }
}
//***********************************end*************************************************

LG Stefan

Ich weiss, mann könnte den Code noch wesentlich eleganter schreiben, aber ich hab grad die Zeit nicht zu, da ich jetzt weg muss.

LG Stefan

Hi

HotSystems:
Und das mit den Code-Tags bitte in beiden Posts, damit man nicht so viel scrollen muss.

Da wird der Finger lahm. :wink:

DAS klingt doch nach einer nette Fingerübung in Richtung Arduino gg ... aber anderes Thema

MfG

postmaster-ino:
HiDAS klingt doch nach einer nette Fingerübung in Richtung Arduino gg ... aber anderes Thema

MfG

Das ist mal eine sehr gute Idee.
Dann kann ich endlich mal einen Arduino "sinnvoll" einsetzen.

postmaster-ino:
HiDAS klingt doch nach einer nette Fingerübung in Richtung Arduino gg ... aber anderes Thema

MfG

Ist doch ganz einfach. Vor ein paar Tagen hatte doch mal jemand was bauen wollen was das Mausrad automatisch hin und her drehen soll. Das wäre jetzt mal ein praktischer Nutzen :slight_smile:

Gruß, Jürgen

Katsumi_S:
Ist doch ganz einfach. Vor ein paar Tagen hatte doch mal jemand was bauen wollen was das Mausrad automatisch hin und her drehen soll. Das wäre jetzt mal ein praktischer Nutzen :slight_smile:

Eine sehr gute Anregung.

Man nehme einen Servo, verlängere den Arm des Servos und befestige das Ende des Armes auf der umgedrehten (auf dem Kopf) Mouse.
Die Servobewegungen schieben die Mouse hin und her. Dadurch sollte sich das Mouserad bewegen.
Die Mouse muss natürlich noch ausbalanciert werden. Das ist halt feintuning.