Battleship Hit Detection
For the battleship storyboard, detecting where a ball lands in a grid, and being able to communicate this information to the players is crucial for an exciting game experience. This model sought to explore if this detection was feasible, and whether or not there could be a reliable method of relaying the relevant information back to the players.
For this sketch model, only a 2x2 grid was constructed in an effort to evaluate the feasibility of the concept of hit detection. Below is an image of the completed design, which is composed of four equally sized squares constructed of foam core.
A noticeable feature of the design is that while the walls are all vertical, the floor of each box is tilted to one corner. The reasoning behind this is two-fold. First, the balls must be ultimately returned to the other side of the game board for the next group, and allowing for the balls to be gravitational fed back is an efficient solution to this problem. The second, is that as each ball is funneled to one side of each square, so a contact switch could be placed here to detect when a ball rolls over it, and therefore know which square was hit by the players.
The switch, as mentioned before, is a simple contact button that is normally open, but closes the circuit when depressed. When a ball is thrown into one of the squares, it is fed to one corner, and activates the switch. Upon activation, a light flashes on immediately to indicate the position of the ball to the players.
The circuitry is simple yet effective for this model. With the switch effectively acting as a simple toggle, the Arduino is constantly searching for any analog input from any of the switches in the model. As soon as it reads a voltage from a given square, it relays this information to the appropriate digital output to light up the corresponding LED.
A cause of concern for this model is how exactly the balls would return to the starting location, and how they would avoid incidental activation of other squares. It is true that if a ball is tossed into a square, for it to return strictly by gravity, it would have to pass through other squares. The false hits that would result can easily be prevented by enacting a delay on the controller, such that once a square is hit, only after 5 seconds will it begin to detect again. This delay can also be tied in with the dispensing mechanism for the users, such that not only will the users only be able to throw one ball at a time, but it will be done in a more controllable method.