Schiffe versenken

Morgen :slight_smile:
Ich plane ein Spiel basierend auf "Schiffe versenken" auf einer 10*10 Matrix zu programmieren.
Dazu soll zufällig ein gegnerisches (vielleicht auch zwei) Schiffe erzeugt werden.
Dann hat man eine begrenzte Anzahl an "Schüssen" um das Schiff zu finden.

Dazu sollen zweifarbige LEDs eingesetzt werden.
Eine Farbe für "Treffer" eine für "Daneben".

Mit je 10 Tastern je Reihe bzw. Spalte kann ich dann das Feld zum schießen auswählen.

Gibt es hierfür ein gutes Matrix-IC für zweifarbige 10*10 Matrixen?
Die Taster werde ich ja am besten per Schieberegister abfragen, oder gibt es hier auch eine optimalere Möglichkeit? (muss zugeben, dass ich mich in das Schieberegister-Zeugs noch einlesen muss)

Zum Einsatz soll wohl ein Nano kommen.
Wobei ich
einen Pin für einen reset Taster
zwei Pins für ein mp3 Modul
ein Pin für ein Relai
evtl. ein 7-Segment Display (Ansteuerung muss ich auch noch googeln, ob es da auch was Pin sparendes gibt)
benötige.

Pin sparend ist immer I2C.
Mach dich da mal schlau.

Danke
Für einfarbige 88 eignet sich ja ein MAX7219 sehr schön, inkl. leicht verwendbarer Library.
Aber für ein 10
10 das auch noch zweifarbig ist, finde ich auch nach längerer Suche nichts :frowning:

Hat hier bereits jemand soetwas (in der Art) mal aufgebaut?

Dürfen es ein paar Farben und Euro mehr sein? Dann könntest Du APA102 (Dotstar) oder WS2812 (NeoPixel) als Streifen oder einzelne LEDs oder verdrahtet in Betracht ziehen. Beim Preis für die Matrix bin ich erschrocken.

Diese RGB-LEDs haben ein Schieberegister-IC eingebaut, das auch noch PWM macht. Der Ardiono braucht nur eine Daten- und eine Taktleitung (APA102) oder sogar nur eine kombinierte Daten-Takt-Leitung (WS2812). Wasser hellblau, getroffene gelb, versenkte Schiffe rot ... und wenn das Spiel vorbei ist, startet eine nette Regenbogenanimation.

Preislich mußt Du noch ein kräftiges Netzteil einplanen, 100*60mA=6A. Als Bibliothek FastLED.

Nur so als Anregung :slight_smile:

Danke, habe ich vorhin auch schon gefunden.
Mal schauen, ob es da auf ebay die einzelnen LEDs auch günstiger gibt :slight_smile:
So wie ich das sehe, gibt es da eine Library, wo ich die sogar ganz einfach einzeln ansprechen kann.
Kann ich da auch die Helligkeit jeder einzelnen LED regeln?

Programmieren werde ich das dann wohl über 2D-Arrays.

Für die Taster habe ich dies hier gefunden:

Schaut auch sehr interessant aus.

Lost-Wolf:
Mal schauen, ob es da auf ebay die einzelnen LEDs auch günstiger gibt :slight_smile:

Gibt es. Adafruit hat eine gute Übersicht und auch schöne Anleitungen.

Lost-Wolf:
Kann ich da auch die Helligkeit jeder einzelnen LED regeln?

Ja, 0 bis 255 je Farbe.

Lost-Wolf:
Programmieren werde ich das dann wohl über 2D-Arrays.

FastLED kann auch Matrixansteuerung.

Lost-Wolf:
mcp23017

Da gibt es von Adafruit eine Bibliothek zur einfachen Ansteuerung.

agmue:
FastLED kann auch Matrixansteuerung.

OK, Matrixansteuerung sagt mir jetzt nichts :smiley:
Muss ich mich mal einlesen.

Ich hätte das Array jetzt Inhalt für Inhalt (in einer Schleife) auf die LEDs geschrieben und auch abgefragt ob da ein Schiff ist oder nicht.
z.B.:
0 Wasser
1 Schiff
2 beschossen
3 Treffer

Beim Schießen kann man auch einen Joystick zum Zielen verwenden. Das ist einfacher und billiger als 20 Tasten.

Lost-Wolf:
OK, Matrixansteuerung sagt mir jetzt nichts :smiley:

Schaue Dir mal das Beispiel XYMatrix.ino mit kMatrixSerpentineLayout=true/false an.

Lost-Wolf:
... ob da ein Schiff ist oder nicht.

Du brauchst ein Feld für die LEDs (Standard bei FastLED mit einem Byte pro Farbe) und zusätzlich die Information, wo sich das unsichtbare Ziel befindet.

DrDiettrich:
... einen Joystick zum Zielen verwenden ...

Eventuell mit Fadenkreuz ...

Au ja, Fadenkreuz als zusätzliche Farbe :slight_smile:

Das macht die Implementierung aber etwas anspruchsvoller :wink:

Und ohne Bilder glaube ich Euch eh Nichts!!

Interessante Idee, kommt in den Hinterkopf zum 'will ich auch Mal bauen'-Kram :wink:

100Stk WS2812B zum Ausbrechen
Achtung: Die Löterei ist bei dem Kram nicht ganz ohne - habe bisher nur 400 Lötpunkte fertig ... die Datenleitungen fehlen noch komplett.
Der Link ist nur als Beispiel, Meine sind schon einige Tage älter, trotzdem noch nicht fertig.

MfG

Warum tust Du Dir das an und nimmst keine Stripes oder Matritzen?

Gruß Tommy

Hi

Gute Frage ... "masochistisch veranlagt" liegt mir gerade auf der Zunge.
Eigentlich wollte ich mir eine Aufnahme fräsen und dort die LEDs quasi auslegen und frei fliegend verdrahten.
Ala Mensch-Ärgere-Dich-Nicht ... aber da kam mir dann der Gedanke, wenn der µC schon das Würfeln übernimmt und die Figuren setzt ... braucht Der mich auch nicht mehr zum Spielen.
Dann dachte ich mir: eine 10x10er Matrix hat doch bestimmt auch was ... jo, kurze Storry :wink:

MfG

Wenn Du "dicke Bretter bohren" möchtest, kannst Du auch Adalight Boblight verwenden.

Lost-Wolf:
OK, Matrixansteuerung sagt mir jetzt nichts :smiley:

Die LEDs werden von 0 an in der Reihenfolge, wie sie mechanisch aneinanderhängen, gezählt. Bei einer Matrix möchtest Du aber LEDs in x- und y-Koordinaten wie beim Schachbrett angeben. Praktisch ist es, wenn die Umrechnung von einer Bibliothek übernommen wird.

Viel Umrechnung habe ich da ja bei 10*10 nicht.
Solange ich die LED0 für was anderes verwende.
Erste Reihe 1-10
Zweite Reihe 10-20
usw.

Also will ich nach unten springen +10 rechnen

Lost-Wolf:
Erste Reihe 1-10
Zweite Reihe 10-20

Schon falsch: 1 - 10, 11 - 20 (Sorry dafür ::slight_smile: )

Bei Serpentine: 1 -10, 20 -11

Wenn man den Ergeiz hat, kann man die Bibliotheksunterstützung natürlich auch ignorieren. Ich möchte niemanden vom Selbermachen abhalten, wollte nur die Frage beantworten :slight_smile:

Aaaarg.... Kopf an Wand :stuck_out_tongue:
logisch :smiley:

Das kenne ich halt bereits und muss mich nicht in eine neue Library reindenken.
Und man will ja auch Spaß dran haben :stuck_out_tongue:
Aber natürlich trotzdem vielen Dank für den Vorschlag und die Antworten :slight_smile:

Aaaarg.... Kopf an Wand
l

noch falscher
0 ... 9
10 ... 19

old56man:
noch falscher
0 ... 9
10 ... 19

Lost-Wolf:
Solange ich die LED0 für was anderes verwende.

Wegen dieser zugegebenermaßen etwas eigenwilligen Annahme geht es bei 1 und nicht bei 0 los.

Aber das merkt der TO dann schon noch, Lernpotenzial scheint vorhanden :slight_smile: