A tabletop warehouse that knows what's on its shelves and lights the cheapest way to fetch it. Seven shelves and an entrance sit on a board joined by paths of LEDs. Press a button on an infrared remote and the Arduino runs Dijkstra's algorithm and lights the route, one path at a time.
- shelves and the entrance
- 7 + 1
- weighted paths between them
- 10
- 74HC595 shift registers driving every LED
- 3
- 220 Ω resistors, all hand-soldered
- 18
On this page
My part
This was a group project at FUTA. I did about 90% of it: the system design, the code, the physical model, the wiring and the sensors. The group wrote the reports.
Weights that mean something
A path isn't only a distance. Each path's weight blends three normalised factors in equal thirds: the travel distance, how fragile the stock on its shelves is, and what that stock is worth. Glass sits at 0.80 to 0.85 on the fragility scale, ceramic at 0.50 to 0.65, plastic at 0.25 to 0.55, so a route past glass costs more than its length alone.



Out of pins
A button and an LED per shelf would have needed sixteen pins before a single path lit up. The remote replaced the buttons, and three daisy-chained shift registers drive every shelf and path LED from three Arduino pins. The LEDs along one path share a register output, so a path lights as a single piece.


What the remote does
Buttons 1 to 8 mark a shelf stocked or empty. Button 0 finds the nearest stocked shelf of plastic kitchenware, 9 the nearest ceramic, and play the nearest glass; the route lights edge by edge from the entrance.
Then a neural network
The second version put a small graph neural network on the Arduino itself. It learns each path's weight from the shelves' occupancy, category, position, fragility and cost: an input layer, four hidden neurons, and one output per edge, trained in fixed-point arithmetic five epochs at a time and refreshed every minute. Its predictions feed the same Dijkstra search.



In use: a retrieval
A clerk needs glass tumblers. They press play. The Arduino searches from the entrance over the weighted paths and lights the route to the nearest stocked glass shelf, one edge after another. It isn't always the shortest route, because a path past fragile, valuable stock costs more to take.
When that shelf runs out, the clerk marks it empty with its button and asks again, and the board lights the next best route.
A worked example of the model in use.