This is the code that runs on the microcontroller inside the FrznChessboard, handling the chess logic and physical interface
This commit adds a bunch of getters/setters for accessing the boardGrid. This is a simpler way to allow both Piece and all the inherited classes to access the Board without having to declare every single class a friend. So now when we want to access boardGrid, we use getPieceAt() or setPieceAt(). They are overloaded to accept rank/file, Square, or int/int. There's also a convenience function to check if the square is empty, though that may get re-written to use the existing Square.isValid(). |
||
|---|---|---|
| inc | ||
| nbproject | ||
| .gitignore | ||
| Board.cpp | ||
| Doxyfile | ||
| graphics.cpp | ||
| main.cpp | ||
| Makefile | ||
| NeoPixel.cpp | ||
| Piece.cpp | ||
| README.md | ||
| strFuncs.cpp | ||
FrznChessboard
Overview
This project is a nascent effort at creating a low-cost, open-source, easily reproducible alternative to the expensive and proprietary digital chess boards currently on the market. The features we aim to implement are:
- Recording of human-vs-human games, with built-in clock support
- Communication with popular chess websites for online play
- UCI support to allow playing against an engine running on a companion computer
- Import and export of games and positions as FEN or PGN files
- All squares on the board will have individually addressible RGB LEDs, both to indicate computer and online play moves, as well as to show suggestions, opening lessons, etc.
- Both sides will have a small, optional OLED screen facing them that can show a menu, the current clock, whose turn it is, connection status, etc.
- Communication with the companion computer may be over Bluetooth or USB -- final decisions haven't been made yet on this front. There are pros and cons to each
- Built-in rechargeable battery for wireless use; this could be human vs human (take it to the park with you) or online play with possible wireless connections
Software and hardware
This repository contains the software. As of this writing, it's now targetting the PIC32MX series with USB, but may change to a different Microchip MCU depending.