Guten Tag liebe Elektronik-Mikrocontroller-Freunde! Ich bin Laie, würde für mich ein Projekt interessant finden. Ich habe in Foren gelesen, daß es Schachprogramme auf Mikrocontrollern gibt, diese aber relativ schwach sind. Nun gibt es Schachprogramme (z. B. Stockfish), welche sehr stark sind und dessen C++-Quellcodes frei zur Verfügung stehen. Meine Frage: Kann man diese C++-Quellcodes nicht in einen Mikrocontroller übertragen? Wäre dafür ein Arduino Due geeignet (oder andere)? 'Versteht' ein Mikrocontroller/Arduino C++? Man müßte dann wohl den Quellcode umändern, damit die Ein- und Ausgabe per Tasten und LCD-Anzeige erfolgt. Würde das funktionieren? Vielen Dank für informative Antworten Dirk
Grundsätzlich wird das vermutlich schon gehen. Ein C/C++ Programm kann auf den meisten handelsüblichen Architekturen laufen; besser gesagt dafür übersetzt werden. (Siehe unten). Aber für einen Laien ist das (sehr wahrscheinlich) nicht zu machen. Oder jedenfalls erst nach längerer Einarbeitung. Ich rede hier von mehreren Monaten. Es gibt leider (für mich) einige Unbekannte dabei: 1. Speicherbedarf (wird mit einem AVR vermutlich nur mit externem RAM gehen). 2. Codegrösse (falls überhaupt, dann vermutlich in einem der sehr grossen AVRs). 3. Geschwindigkeit (hier vermute ich mal das ein AVR unannehmbar lange Antwortzeiten hätte). Das wäre erstmal nicht schlimm. Vermutlich wird es auf einem grossen ST oder auch dem Raspberry Pi genug Speicher und Geschwindigkeit geben. Nebenbei bemerkt: Ein Mikrocontroller versteht kein C oder C++. Das sind sogenannte "Hochsprachen" die ein Compiler erst in "Maschinencode" übersetzen muss. Aber es geht. Ich kenne noch Zeiten in denen es Schachendspielprogramme für den 6502 und 1KB Code gab. Das Problem ist eigentlich grundsätzlich, dass der übliche MiniMax-Algorithmus je nach Suchtiefe und der Anzahl der noch im Spiel befindlichen Fiugren recht viel Speicher braucht. Aber, probiere es einfach. Nur mach Dich als "Laie" auf eine sehr harte Zeit gefasst. Besser wäre es wenn Du erstmal die Grundlagen von C/C++ und uCs lernst. Dann so in einem Jahr magst Du an dieses Vorhaben nochmal denken.
Dirk E. schrieb: > Meine Frage: Kann man diese C++-Quellcodes nicht in einen > Mikrocontroller übertragen? Theoretisch kann man alles übertragen. Die interessante Frage ist wie viel Speicher und Rechenleistung das Programm braucht. Wenn es am PC 1 Minute rechnet, wirds es selbst auf den großen ARM Mikrocontrollern vermutlich 1 Tag brauchen... Dirk E. schrieb: > Man müßte dann wohl > den Quellcode umändern, damit die Ein- und Ausgabe per Tasten und > LCD-Anzeige erfolgt. Das wird vermutlich das geringste Problem... Wenn das Programm schon fertig ist, ist es wohl am einfachsten, einen Raspberry PI, Handy oder Smartphone dafür zu nehmen.
Hallo, Auf einem Raspberry Pi gibt es das schon: http://www.chess.fortherapy.co.uk/ Auf dem Raspberry Pi läuft jedoch ein Betriebssystem. Damit ist es natürlich wesentlich leichter, stockfish zum laufen zu kriegen, also ohne. Für den Controller auf dem Arduino Due gibt es C++ Compiler (z.B. mitgeliefert mit dem Atmel Studio). Damit könnte es was werden, mit der Arduino-Entwicklungsumgebung samt Bibliothek jedoch eher nicht. Man wird den Quellcode ändern müssen. Beispielsweise verwendet book.cpp iostream, um auf Dateien (vermutlich Eröffnungsbücher?) zuzugreifen. Auf einem nackten Mikrocontroller, der kein Dateisystem mitbringt, funktioniert das nicht ohne weiteres. Viele Grüße Michael
Bitflüsterer schrieb: > Es gibt leider (für mich) einige Unbekannte dabei: > 1. Speicherbedarf (wird mit einem AVR vermutlich nur mit externem RAM > gehen). > 2. Codegrösse (falls überhaupt, dann vermutlich in einem der sehr > grossen AVRs). > 3. Geschwindigkeit (hier vermute ich mal das ein AVR unannehmbar lange > Antwortzeiten hätte). Auf einem Arduino Due, der vom TO vorgeschlagen wurde, sitzt ein Cortex M3. Die von dir genannten Probleme dürften jedoch auch hier bestehen.
Dirk E. schrieb: > Guten Tag liebe Elektronik-Mikrocontroller-Freunde! > Ich bin Laie, würde für mich ein Projekt interessant finden. > Ich habe in Foren gelesen, daß es Schachprogramme auf Mikrocontrollern > gibt, diese aber relativ schwach sind. Das liegt doch aber nicht (nur) am Programm, sondern an den Beschränkungen der Hardware. > Nun gibt es Schachprogramme (z. B. Stockfish), welche sehr stark sind > und dessen C++-Quellcodes frei zur Verfügung stehen. Ein Schachprogramm frisst nun mal große Mengen an Arbeitsspeicher und Rechenleistung, wenn es wirklich gut sein soll. Somit ist klar, dass ein Mikrocontroller dafür eher nicht die geeignete Hardware ist. Ohne ein Betriebssystem wird Stockfish sowieso schon mal gar nicht funktionieren. Da kommt man mit einem Arduino Due nicht weit. 96 kB SRAM und 512 kB Flash - nee, lass ma gut sein. :-) Sorry, aber Deine Fragestellung geht ein bisschen in die Richtung "Ich will Tempo 100 fahren - mit einem Fahrrad". Warum darf es nicht ein Auto sein? ;-)
:
Bearbeitet durch User
HI >Ein Schachprogramm frisst nun mal große Mengen an Arbeitsspeicher und >Rechenleistung, wenn es wirklich gut sein soll. Somit ist klar, dass ein >Mikrocontroller dafür eher nicht die geeignete Hardware ist. In den 80ern kamen Schachcomputer mit ca. 10k ROM und 1-2K RAM aus. Taktfrequenz 2,5...4 MHz. MfG Spess
spess53 schrieb: > In den 80ern kamen Schachcomputer mit ca. 10k ROM und 1-2K RAM aus. > Taktfrequenz 2,5...4 MHz. Die dürften allerdings auch nicht annähernd die Spielstärke von Stockfish erreicht haben, oder?
c-hater schrieb: > Die dürften allerdings auch nicht annähernd die Spielstärke von > Stockfish erreicht haben, oder? Stockfisch liegt bei ELO 3112, die berühmten Mephistios aus den 80ern mit 680xx zwischen 12 und 14mHz bei etwa 2000. Die Fidelity anfang der 80er mit 6502 und etwa 4MHz bei 1600-1700. Das sollte man mit einem AVR erreichen können.
c-hater schrieb: >> In den 80ern kamen Schachcomputer mit ca. 10k ROM und 1-2K RAM aus. >> Taktfrequenz 2,5...4 MHz. > > Die dürften allerdings auch nicht annähernd die Spielstärke von > Stockfish erreicht haben, oder? Na ja, über 2000 ELO kamen die aber gut hinaus was für die Kreisliga reichen dürfte (6502 mit 4MHz und 32kRam). War aber alles Assembler und viel schachspezifisches Wissen drinnen (Eröffnungen, Endspielthorie). Hab da früher mitgearbeitet. Also ein CortexM3 hat gute Karten da auch in der Bezirksliga die Show zu stehlen. rgds
6A66 schrieb: > Na ja, über 2000 ELO kamen die aber gut hinau Korrektur, hab gerade die ELO lIste durchgesehen: Knapp 2000 http://www.schach-computer.info/wiki/index.php/Mephisto_Nigel_Short
Ein klassischer Mikrocontroller dürfte tatsächlich überfordert sein. Geht es dir allerdings in erster Linie über die Bauform und -groesse sei dir folgende Plattform empfohlen: http://hardkernel.com/main/products/prdt_info.php Denk lieber garnicht an den RasPi. Der ist 10-20x langsamer als der Odroid und kostet nur unbedeutend weniger.
Ja gut, wenn man die Anforderung reduziert auf "es muss nicht Stockfish sein, sondern einfach irgendein Schachprogramm, das auf einem Mikrocontroller läuft" - das geht natürlich schon. Ich denke halt dass es für jemanden, der komplett neu in die Mikrocontroller-Welt einsteigt, geeignetere erste Ziele gibt. Lieber erstmal eine LED zum Blinken bringen, ein LCD anschließen und Texte darauf ausgeben... wenn das alles klappt, kann man gerne anfangen größer zu denken.
Hallo, danke für Eure doch recht zahlreichen, kompetenten und nützlichen Antworten ... hab ich gar nicht so erwartet. Ich werd´s dann doch sein lassen, zu kompliziert! Wie michael mit seinem Link http://www.chess.fortherapy.co.uk/ gezeigt hat, gibt´s sowas auch schon. Ich aber werde mir ein Android-Smartphone besorgen und dann mach ich Stockfish drauf :-) Nochmals danke Dirk
Dirk E. schrieb: > Ich aber werde mir ein Android-Smartphone > besorgen und dann mach ich Stockfish drauf :-) Ich würde da eher zu einem Tablet greifen. Das Display eines Smartphones wäre mir zu klein, ein 7 Zoll Tablet finde ich gerade noch in Ordnung. Die App Droidfish funktioniert übrigens gut.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.