I continued to work on the large microphone only to find it was not working. It was weird as it has same characteristics as the small microphone and the design worked on the small microphone. I tried to change the width of the debouncer and tried a design without debouncer as well but it still did not work. Dr. Shawn pointed out if it might be a speaker, producing sounds instead of detecting sounds. Hence, I executed the buzzer design on that module but the results are still the same. I went through the documentation and it says the module should have 4 pins (VCC, GND, Analog Output, Digital Output) yet this module only has 3 pins. Therefore, I do not know if the output pin was actually analog or digital. If it outputs an analog signal, then it might be the reason it was not working when tested on the FPGA board. Or it might just be damaged.
I moved on to temperature and humidity sensor along with vibration switch sensor but they were all unstable. Unstable as in sometimes the LED do light up when it should, but sometimes it did not. The test bench was working alright so I was unsure if the designs should be different or the modules are damaged. When both modules were unstable, I only tested with different widths of debouncer of 4, 7 and 15. Width 4 resulted in 160 ns while width 15 resulted in 1.28 µs. I thought testing 3 widths of debouncing time on these modules was already good enough to verify if it worked or not. I thought the difference of the time tested was already quite huge.
This was when good enough is not good enough. I only knew this with the next module I worked on, the ball switch sensor as it was also unstable. I was not satisfied that all the sensors I was working on had become unstable. This time, I tested with a larger width of debounce time, 22 which resulted about 0.33 ms. Then the ball switch eventually worked! Thus I realized why the widths I tested on before was not good enough that it made the module unstable. With lower debounce time, the LED to indicate any changes flashes too fast to be seen with human eyes. When I caught it flickering I thought it was working, but when I didn’t see any changes of LED when it should, I thought the design was causing the instability.
Therefore, I had to test every module previously that was not working or that was unstable all over again. Most of the module then worked consistently stable including the IR Receiver. The designs were actually correct all along, just that it could not be seen with human eyes. Towards the end of the week, I made documentations on the design of these modules, still a lot to update. Hope I can get it all done quickly and meticulously.
Dr. Shawn brought us all out on Saturday for my farewell lunch and a welcome lunch for the new intern. Had good healthy food and it was definitely delightful!