Arduino Chess Assistent/Schach Assistent

Hallo Ihr Lieben,

ich hoffe aber bin mir auch recht sicher, dass bisher keine ähnlichen Einträge bestehen. Ich habe auf jeden Fall keine gefunden bin allerdings auch absolut neu hier.

Und zwar fange ich gerade erst an mit der Microcontrollerprogrammierung, digitalWrite und Read kenne ich schon :joy:

Wie man aus der Überschrift entnehmen kann, plane ich für ein Schulprojekt einen Schach Assistenten zu bauen. Dieser soll sehr simpel gehalten werden, da ich vermute, dass selbst das als Anfänger nicht ohne ist.

Im Grunde habe ich um es kurz und einfach auszudrücken eine Schachbrett(Plexiglasscheibe) unter dem sich einzelne geschlossene Kavitäten befinden in denen jeweils eine LED eine NeoPixel-Stripes liegt (64 stk)
Ich will im Grunde, eine Figur mittels Joystick auswählen könne (das Feld auf dem der Joystick gerade liegt soll in weiß markiert werden) und mit dem Klick auf den Joystick eine Figur bestätigen können.

Daraufhin sollen mir die möglichen Schritte angezeigt werden in z.B. weiß (hier soll natürlich der Arduino ebenfalls wissen das ein Feld, das eigentlich begangen werden kann, dass aber durch eine eigene Figur blockiert wird, nicht begehbar ist und die Felder davor natürlich auch nicht) --> Sonderfall Springer.
Mittels des Joysticks soll dann ein Feld ausgewählt und durch einen Weiteren Klick bestätigt werden.

Die Figuren muss er nicht erkennen, diese will ich manuell im nachhinein nachziehen. (der Einfachheithalber)
Danach soll der weiße Auswahlcurser auf die Seite des Gegners wechseln.

Eine mögliche zu schlagende Figur des Gegners soll rot markiert werden.

Der Springer muss Figuren natürlich überspringen können.
Eine Rochade kann aber muss nicht inbegriffen sein
Der erste Zug eines Bauern darf 2 Felder voranschreiten.

So das zu den Rahmenbedingungen zu meinem Projekt!

Nun habe ich mir die letzten Tage Gedanken darüber gemacht und versucht mich etwas schlau zu lesen und natürlich auch Beispiele zu finden.
Ich habe leider nur Schachroboter gefunden deren Programme ich leider mit meinen lauen Kenntnissen nur schwer begreifen konnte.
Ich habe mir aber die Option gefunden die Aufgabe mittels der Definition einer Matrix 8x8 zu lösen...
leider weiß ich nicht genau wo bzw. wie ich damit am besten starte und dachte mir, dass eventuell jemand gutmütiges aus dem Forum mir ein zwei Anreize, Tipps oder Quellen weiterreichen kann.
Ich weiß, dass diese Anfrage sehr wage und breitflächig ist und es muss ja auch keiner darauf antworten, der sich dadurch gestört fühlt. Umso mehr freue ich mir über jegliche helfende Ratschläge.
Danke im Voraus schonmal!!

Grüße!

Hello Friends,

I hope I am also quite sure that there are no similar entries so far. I definitely didn't find any, but I'm also absolutely new here.
I'm just starting with microcontroller programming, digitalWrite and Read I already know :joy:

As you can see from the title, I plan to build a chess assistant for a school project. This should be kept very simple, as I suspect that even that as a beginner is not without.
Basically, to put it briefly and simply, I have a chessboard (plexiglass pane) under which there are individual closed cavities in each of which is an LED a NeoPixel stripes (64 pcs)

Basically, I want to be able to select a figure using a joystick (the field on which the joystick is currently lying should be marked in white) and confirm a figure by clicking on the joystick.
Then the possible steps should be displayed to me in e.g. white (here, of course, the Arduino should also know that a field that can actually be committed, but which is blocked by its own figure, is not accessible and the fields in front of it of course not) --> special case Springer.

Using the joystick, a field should then be selected and confirmed by another click.

He doesn't have to recognize the figures, I want to follow them manually afterwards. (for simplicity's sake)
After that, the white selection curser should switch to the side of the other player.

A possible piece of the enemy to be beaten should be marked red.

Of course, the Knight must be able to skip pieces.
A castling can not be included
The first move of a pawn is allowed to advance 2 squares.

So that to the framework conditions for my project!

Now I've been thinking about it for the last few days and trying to read something smart and of course to find examples.
Unfortunately, I only found chess robots whose programs I could hardly understand with my low knowledge.
But I found the option to solve the problem by defining a matrix 8x8...
unfortunately I do not know exactly where or how to start with it best and thought that maybe someone good-natured from the forum can pass me on two incentives, tips or sources.

I know that this question is very vague and wide-ranging, and no one has to answer it who feels disturbed by it. All the more I am happy about any helpful advice.
Thanks in advance!!

Greetings!

Vielleicht können Sie sich ein Bild von folgenden Projekten machen:
https://create.arduino.cc/projecthub/Varun2905/autonomous-chess-playing-robotic-arm-b34807

1 Like

Das Projekt ist ambitioniert, aber sicherlich machbar und interessant.
Sehr hilfreich (sprich notwendig) ist es, das Projekt in einzelne Schritte zu teilen und einen Schritt nach dem anderen zu verwirklichen. Z.B.

  • Feld mit Joystick auswählen und bestätigen
  • Erfassen, welche Figur auf dem Feld steht
  • Potenzielle Züge dieser Figur anzeigen
    ....
    Allein aus diesen 3 Punkten wird klar, dass Voraussetzungen geschaffen werden müssen, damit sie ausgeführt werden können. Daraus entsteht dann eine to-do-Liste.

Hilfreich bei einem solchen Projekt dürfte auch sein, einzelne Module als separate Funktion zu schreiben, dann bleibt die Struktur des Sketches übersichtlich. Die Funktion 'switch ...case' würde ich mir auch mal genau anschauen.
Viel Erfolg, und halte uns auf dem Laufenden.

1 Like

Danke dir Aggertoll,

switch case kannte ich noch nicht, werde ich mir auf jeden Fall angucken!
Als Neuling kenne ich wie gesagt kaum Funktionen und versuche mir über Übungs Tutoriels eben jene anzueignen, daher war das wirklich hilfreich!

Das Programm im ganzen zu Gliedern ist auch denke ich der einzige Weg für mich, das anzugehen. Den Anfang zu finden ist nur recht schwer :smiley:
Darf ich dich fragen, wie du die Figuren/Felder definieren würdest ?
Bei meinem ersten Versuch, habe ich jedem Feld und jeder Figur eine integer Variabel zugeordnet aber das scheint mir nicht der richtige Ansatz zu sein...

Google mal Arduino LED cube. (Wenn du nach 8x8 Matrix suchst, bekommst du Lösungen mit fertigen Displaymodulen, das wird dir wenig nutzen.) Ein Beispiel für einen LED-Würfel reduziertst du einfach auf 2D. Diese Beispiel zeigt auch sehr schön, wie einzelne Tasks in Funktionen ausgegliedert sind, um Loop() schlank und den Sketch übersichtlich zu halten.

1 Like

Figuren definieren ist dann ein völlig neuer Schritt. Erstmal definieren, was genau das Programm wissen/können muss, daraus ergeben sich die Anforderungen an die Definition.

Werde ich auch mal nach schauen, der Tipp mit 'switch case' war übrigens super, ich erkenne selbst als Laie das Potenzial für mein Projekt in der Funktion, ich muss mich nur etwas mit der Anwendung auseinandersetzen.

Die Figuren habe ich nach deiner ersten Antwort in der Prioritätsliste nach hinten geschoben, der Sketch war noch von davor. :slight_smile: Erstmal schauen das ich den Stripe mit dem Joystick angesteuert bekomme, so wie ich mir das vorstelle.. Erstmal gucken wie ich den Joystick nutze.

Alles klar, ich hatte beim erstellen des Beitrages (dachte ich|nicht bemerkt das man scrollen konnte) nur die Auswahl aus vier Themenbereichen und das schien mir am nächsten zu liegen.

Steht auf International Deutsch, ich hoffe, dass ist das was du meintest.
Danke für den Hinweis

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.