diff options
Diffstat (limited to 'content/projects/guitar-hero')
-rw-r--r-- | content/projects/guitar-hero/index.md | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/content/projects/guitar-hero/index.md b/content/projects/guitar-hero/index.md new file mode 100644 index 0000000..4603a4b --- /dev/null +++ b/content/projects/guitar-hero/index.md @@ -0,0 +1,69 @@ +--- +title: "Guitar Hero" +date: 2023-10-23T23:18:05-04:00 +mermaid: true +draft: false +--- + +One of my University classes tasked me with creating a custom pcb remote as +well as a GUI software that interfaced with it. I decided to create a *Guitar +Hero* clone capable of reading files created for the similar project *Clone +Hero* using C++ and QT. + +The goal of this class was to teach Computer Science students about GUI design +as well as teach electrical engineers about PCB design. Both type of students +would also get to learn about software and hardware integration. On the +hardware side, the requirements were quite simple: + +- The designed PCB needed to be less then or equal to 10x15cm +- A minimum of 5 switches were needed +- A joystick as well as an accelerometer had to get integrated +- We could choose wether to integrate a 5 segment or a bar graph display + +{{<mermaid>}} +classDiagram + Animal <|-- Duck + Animal <|-- Fish + Animal <|-- Zebra + Animal : +int age + Animal : +String gender + Animal: +isMammal() + Animal: +mate() + class Duck{ + +String beakColor + +swim() + +quack() + } + class Fish{ + -int sizeInFeet + -canEat() + } + class Zebra{ + +bool is_wild + +run() + } +{{</mermaid>}} + +After a little back and forth with our teachers, we came to an agreement that +we could configure some of our switches outside the pcb and mount them directly +to the guitar. This way, the pcb itself could be located at the base of a guitar +and host the strumming mechanism. We also convinced them it would be best for our +usecase to also mount the accelerometer on a guitar shaft and configure it as some +sort of trigger for a bonus streak. In the end, this is what we came up with: + +<!-- Integration https://youtu.be/FKOd6nEcEC8 --> +<!-- Song https://youtu.be/G2GX4o7dhNY --> +<!-- Accelerometer https://youtu.be/xl-ZMSSMalw --> +<!-- Bar Graph https://youtu.be/WZeAdRM9tGo --> +<!-- Strumming https://youtu.be/TxubEPih7yw --> +<!-- Joystick https://youtu.be/q-Qc5jLBBzU --> +<!-- Demo1 https://youtu.be/c_Gxq5UKYd4 --> +<!-- Demo2 https://youtu.be/69InfsTlqqA --> + + +On the software side of things, requirements were even more forgiving. All we +needed was to use the QT C++ library without any QML or QSS. It took very +little convincing to get my team on board with the *Guitar Hero* clone idea. + + +{{< youtubepl PLGcbRdKslprBkKg2NyGtS4AGuB2Ng_22e >}} |