The purpose of the project is to design an interactive rhythm game that reflects the players' reaction time. The game will consist of 2 drums, each of which will be associated with a light that's going to light up either randomly or according to a pattern. The player should hit the drum which contains a sensor when the drum is illuminated and his/her score will be calculated based on his/her accuracy.
Henry Doyle, Yu-De Chen
Journal Entry 1 (9/28/15)
Today we focused on the specific parts we will need to carry out our project design. We determined we will need roughly 50 LEDs, a button, an Arduino, an Arduino display, and a breadboard. The LEDs will light up when it is time to push the button. A score will be given in the display based on the level of accuracy of the timing of the player. We also constructed a high level box diagram, illustrating the structure of the game. The diagram begins with a power source, and branches to a button, LEDs, and a microprocessor. Eventually we hope to replace the button with a vibration sensor (possibly PIezo).
Journal Entry 2 (10/5/15)
Parts List:
- Piezo vibration sensor (X2)
- Number Display
- op-amp
- Breadboard (X3)
- Arduino
- 12 LEDS (4 red, 4 yellow, 4 green)
Today we revised certain aspects of our project. We determined that the concept of 50 LEDs pulsating in a circle was a little too complex at this stage in our project. Instead, we have elected to use a line of 6 LEDs per drum, that light up 2 red, 2 yellow, 2 green at a time. The button we initially attempted to work with was highly sensitive and gave simultaneous output that would be difficult to read. We will attempt to troubleshoot this sensitivity issue to get the button to cooperate. Eventually we plan on graduating to the Piezo sensor instead of the button. We found we will need to make use of 9 pins on the Arduino, that will be connected to the LEDs (6 pins), sensors/buttons (2 pins), and number display (1 pin).
Journal Entry 3 (10/12/15)
http://davidhoulding.blogspot.com/2014/02/high-sensitivity-vibration-sensor-using.html This is the circuit we will implement for the piezo element vibration sensor. It incorporates op-amps to help carry the current to the Arduino.
http://www.ti.com/product/lm358-n?CMP=AFC-conv_SF_SEP data sheet for LM358N (the op-amp we will use)
We are still waiting on our sensors so we couldn't do much with them today. However, we anticipate the piezo will be highly sensitive and may output a signal for too long due to too much noise from vibration. We hope to minimize this by changing the output time in the coding. We also anticipate that we will need a battery to supply current for the op-amps, because Arduino alone is not a sufficient power source. Next week hopefully we can start doing more of the coding involved, and start working hands-on with the sensors.
Journal Entry 4 (10/19/15)
Today we collected our parts. We received the number display but no sensor. We got the leds to light up on a time interval and in succession. The next major problem is figuring out how to incorporate the button with the delay that is in place for the animation. Pressing the button with the delay would cause the program to freeze. We need to find out a way to implement both, possibly with another Arduino.
Journal Entry 5 (10/26/15)
http://dunkels.com/adam/pt/ (possible way to multithread arduino)
We still need to find a way to implement a multithread in Arduino, however Arduino hardware doesn't support multithread. The above link uses Protothreads to overcome this issue. This could be a possible solution to our problem. We need the lights to fade in so the user has fair warning to hit the button, and this requires multithread. Next week we plan on building the circuit that implements the Piezo vibration sensor into the project. (http://davidhoulding.blogspot.com/2014/02/high-sensitivity-vibration-sensor-using.html)
Journal Entry 6 (11/2/15)
Today we started constructing the circuit that uses the piezo vibration sensor. We soldered the piezo to wires, and got a zener diode from the shop. We put all the components of the circuit in place, but were unable to test it due to time constraints. Also, we have bypassed our issue with the multithread by eliminating the delay from our code. Instead, we will measure the brightness of the LED with the code in order to use a single thread.
Journal Entry 7 (11/9/15)
We tested our circuit with the piezo vibration sensor and the LED, and it worked. However the piezo we used broke, so we had to get a new one, and had the old one repaired. After testing the circuit again with this new piezo, the circuit failed to respond initially but after some tinkering we got it to work. Both piezos worked in our circuit. There is a lot of noise associated with the sensor currently, so we need to add capacitors. We are also attempting to make sense of our number display, but it is more complex than we thought.
Journal Entry 8 (11/16/15)
http://www.datasheetarchive.com/dlmain/Datasheets-115/DSAP002260.pdf (Datasheet for LTC-617 LCD display)
The only remaining task in our project is implementing the LCD display into our game, which displays the user's score. However, we have two problems we need to overcome. The first being an insufficient number of pins on Arduino. We need two more pins than we currently have to hook up our LCD display. We're going to overcome this issue buy using Arduino mega. We also need to figure out how to display multiple numbers at once. For example if we want to display the number 25, we want the pins for 2 to be on and the pins for 5 to be on, however that's impossible to do at the same time. The only way we can see making this work is turning the digits on and off in one loop, so it appears to display the number 25, but its really display 2 and 5 separately, but just so fast that the user doesn't notice.