Forum: Mikrocontroller und Digitale Elektronik Simon sagt Hilfe


von Kevin M. (eveline17)


Lesenswert?

Hallo,

Ich brauche Hilfe beim programmieren des Spiels "Simon sagt" mit 
Arduino.
Es gibt 4 verschiedene LEDs. Zuerst leuchtet eine von ihnen auf, nun 
soll das Programm darauf warten, dass der zu der LED gehörige Taster 
betätigt wird. Wenn der richtige Taster betätigt wurde, soll eine neue 
LED dazukommen.

Am besten wäre es wenn die LEDs in einer festen Reihenfolge aufleuchten 
d.h. kein Zufallsprinzip.

Ich würde mich sehr darüber freuen, wenn mir jemand einen Sketch geben 
könnte, oder das zuvor genannte erklären könnte.

Danke schon mal im Voraus!

von Bastian W. (jackfrost)


Lesenswert?

Speicher die Muster in einem Array. Den Tasten gibts du die gleichen 
Nummern wie die LED Ausgabenummer und wenn die richtige Anzahl an Tasten 
gedrückt wurde vergleichst du die beiden Arrays.

Gruß JackFrost

von Kevin M. (eveline17)


Lesenswert?

Danke für die Antwort, jedoch habe ich ehrlich gesagt noch nicht sehr 
viel Erfahrung mit Arduino, ich wüsste also auch nicht wie ich mit dem 
Programm anfangen soll.

von Cyblord -. (cyblord)


Lesenswert?

Eveline M. schrieb:
> Danke für die Antwort, jedoch habe ich ehrlich gesagt noch nicht sehr
> viel Erfahrung mit Arduino, ich wüsste also auch nicht wie ich mit dem
> Programm anfangen soll.

Warum willst du das dann überhaupt machen?

von THOR (Gast)


Lesenswert?

Eveline M. schrieb:
> Danke für die Antwort, jedoch habe ich ehrlich gesagt noch nicht
> sehr
> viel Erfahrung mit Arduino, ich wüsste also auch nicht wie ich mit dem
> Programm anfangen soll.

Dann ist das Problem wohl eher, dass du nicht programmieren kannst. 
Arduino-Tutorials gibts genug.

von Walter S. (avatar)


Lesenswert?

indem du erst Mal ein Programm schreibst das eine LED zum leuchten 
bringt

von Kevin M. (eveline17)


Lesenswert?

Ich kann programmieren und kenne mich mit den Standard Sachen aus. Eine 
LED zum leuchten zu bringen ist also kein Problem für mich ;). Aber bei 
diesem Projekt brauche ich etwas Hilfe. Mir fehlen Begrifflichkeiten, 
wie "Array".

von Cyblord -. (cyblord)


Lesenswert?

Eveline M. schrieb:
> Ich kann programmieren und kenne mich mit den Standard Sachen aus. Eine
> LED zum leuchten zu bringen ist also kein Problem für mich ;). Aber bei
> diesem Projekt brauche ich etwas Hilfe. Mir fehlen Begrifflichkeiten,
> wie "Array".

Damit würde ich sagen du hast gleich im 1. Satz glatt gelogen. Also 
lerne es!

von Sven D. (Gast)


Lesenswert?

Eveline M. schrieb:
> Mir fehlen Begrifflichkeiten,
> wie "Array".

https://www.arduino.cc/en/Reference/Array

von Patrick J. (ho-bit-hun-ter)


Lesenswert?

Hi

Zumindest wirft 'die Suchmaschine meines Vertrauen' bei 'Simon sagt 
Sketch' keine Treffer :=)

Klar solltest Du bereits LEDs an/aus schalten können so wie Taster 
abfragen.

Ein Array mit 100 Zeichen Platz, Welches mit Zufallszahlen 0-3 gefüllt 
wird.

Eine Zähl-Variable, initiiert auf 4

Ausgabe der Licht/Ton-Folge

Freigabe der Taster

Jeder Tastendruck wird 'mitgeschrieben' und auch direkt kontrolliert, ob 
man korrekt geantwortet hat.
Ja -> Licht & Ton für den Tastendruck
Nein -> R-I-P Sequenz und negative Tonfolge, Neustart vorschlagen

Haben wir alle gespielten Töne eingegeben?
Nein -> Sprung, um nächsten Tastendruck auszuwerten

Zähl-Variable um 1 erhöhen

Sind wir über 100?
Nein -> Sprung zur ersten Ausgabe der Licht/Ton-Folge
Ja -> Win-Sequenz, viel Lärm und rumgeblinke, Neustart vorschlagen

MfG

: Bearbeitet durch User
von THOR (Gast)


Lesenswert?

Patrick J. schrieb:
> Hi
>
> Zumindest wirft 'die Suchmaschine meines Vertrauen' bei 'Simon sagt
> Sketch' keine Treffer :=)

Und selbst das stimmt nicht:
https://learn.sparkfun.com/tutorials/sik-experiment-guide-for-arduino---v32/experiment-16-simon-says

Man muss halt nur wissen, wie das Spiel überhaupt heisst. Es heisst 
Simon says, nicht Simon sagt.

von Michael B. (laberkopp)


Lesenswert?

So ein Sketch sieht ungefähr so aus
1
uint8_t i,n;
2
boolean gedrueckt;
3
uint8_t led_pin[]={ 8,9,10,11 }; // LED in der Reihenfolge in der sie aufleuchten
4
uint8_t taster_pin[]={ 0, 1, 2, 4 }; // Taster in der Reihenfolge, in der sie gedrückt werden müssen
5
boolean taster_gedrueckt[4];
6
uint8_t piezo=3;
7
8
void start(void)
9
{
10
  for(i=0;i<3;i++) 
11
  {
12
    pinMode(led_pin[i],OUTPUT);
13
    digitalWrite(led_pin[i],LOW);
14
    pinMode(taster_pin[i],INPUT);
15
    taster_gedrueckt[i]=digitalRead(taster_pin[i]);
16
  }
17
  i=0;
18
  digitalWrite(led_pin[i],HIGH);
19
}
20
21
void setup() 
22
{
23
  start();
24
}
25
26
void loop() 
27
{
28
  if(n<3) n++; else n=0;
29
  gedrueckt=digitalRead(taster_pin[n]);
30
  if(gedrueckt&&!taster_gedrueckt[n])
31
  {
32
    if(i!=n) // falscher Taster
33
    {
34
      tone(piezo, 880, 1000); // falsch
35
      start();
36
    }
37
    else if(i<3) // richtiger Taster
38
    {
39
      digitalWrite(led_pin[++i],HIGH); // nächste LED aufleuchten lassen
40
    }
41
    else
42
    {
43
      tone(piezo, 440, 1000); // alle 4 richtig
44
      start();
45
    }
46
  }
47
  taster_gedrueckt[n]=gedrueckt;
48
  delay(5);
49
}
aber bei fester Reihenfolge ist das gedrücke absolut hirnlos.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

THOR schrieb:
> Man muss halt nur wissen, wie das Spiel überhaupt heisst. Es heisst
> Simon says, nicht Simon sagt.

Auf Deutsch ist das Spiel besser als 'Senso' bekannt. Link aufs Arduino 
Projekt hast du ja schon gepostet. Ich hatte es unter 'Simon Says 
Arduino' gefunden.

: Bearbeitet durch User
von Patrick J. (ho-bit-hun-ter)


Lesenswert?

Hi

Dann nimmst Du PI als Grundlage für Deine Reihenfolge, so lernt man 
wenigstens noch was dabei :)
(e, die 27.te Wurzel aus 23547 ginge aber wohl auch - man muß ja nur auf 
'2 bit' runterrechnen)

@Thor
Wo Du es sagst - aber weder ich noch der TO hatten wohl diese Gedanken - 
und da es auf Deutsch keinen Treffer gab, kann ich davon ausgehen, daß 
der TO auch Nichts gefunden hat (vll. auch hätte).

MfG

von Walter S. (avatar)


Lesenswert?

Michael B. schrieb:
> So ein Sketch sieht ungefähr so aus

ich glaube nicht dass du Eveline (oder wahrscheinlicher Kevin) damit 
geholfen hast, er hat zwar die nächste Hausaufgabe fertig, aber gelernt 
hat er sicherlich nichts.

von Jürgen S. (jurs)


Lesenswert?

Kevin M. schrieb:
> Ich würde mich sehr darüber freuen, wenn mir jemand einen Sketch geben
> könnte, oder das zuvor genannte erklären könnte.

Findest Du keinen fertigen Arduino-Sketch zum Downloaden? das 
Spieleprinzip von "Senso"(deutscher Markt) bzw. "Simon 
says"(ausländische Märkte) haben sich wohl schon einige Arduino-Bastler 
in den letzten 10 Jahren als Bastelaufgabe vorgenommen und realisiert, 
und wenigstens einige von denen dürften ihre Programme mit vollständigem 
Quellcode offengelegt haben.

Allerdings dürften wohl die meisten Arduino-Bastelarbeiten nach dem 
Zufallsprinzip funktionieren, so wie das seit etlichen Jahrzehnten 
vertriebene Originalgerät von MB bzw. Hasbro.

Und natürlich nicht nur mit LEDs, sondern auch mit Tonabgabe über 
Piezeo-Lautsprecher: Vier Tasten, vier verschiedene Töne.

: Bearbeitet durch User
von Simon (Gast)


Lesenswert?

Schau dir vielleicht auch mal den Code von Pollin an. Die haben ein 
Pollin-Spiel I im angebot, das eben Simon Says ist. Hier der Link zu den 
Sourcen:

http://www.pollin.de/shop/downloads/D810148S.ZIP

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.