Introduction

We created an assistive device for an older adult that would improve a certain aspect of their daily routine or bring more positivity to their life. We collaborated with our Osher client, Fredrick, and communicated with him throughout the process of the project to help us figure out the design for our intervention. The problem we decided to tackle was how we could make Fredrick’s daily exercise routine more interesting by creating a guide and friend that could not only carry the routine sequence but make the process more engaging.

What We Built

Our device is a hand-sized interactive device that will act as your exercise guide and companion that will shuffle your exercise routine and encourage you to finish each session. The device will say the exercise title through speakers and it will also display the exercise title on its screen in the front. You communicate to the device when you have completed that exercise by making a loud sound (this means that the environment you are working out in should not have too many loud noises or disturbances). The device will track your overall progress with the exercise routines and at the very end, it will congratulate you that you have accomplished all the exercises.

Final Product

Our Exercise Companion device

How the device lights up

Where to change the batteries

The rotary encoder allows you to switch to a different set of routines and shuffle routine

Simulation of a button press to shuffle an exercise routine in a category

Simulation of button rotation to go to next exercise category

 

Animation of how the device works overall

TinkerCad

The main interaction stimulated in TinkerCAD.

The celebration when the workout is finished

Physical Mockups

A prototype of how the device could work

On one of the screens portrays a digital face

Prototype of how the device could look

Interacting with the button press

To learn more about our prototypes, click here 

Narrative Sketch

To map out all the interactions Frederick might have with the exercise companion, we developed storyboards of different use scenarios.

The exercise companion is powered on with a long press of the button. A personalized welcome message is displayed on the LCD screen and is announced on the speaker. The eyes on the device respond by blinking.

The user can move on to the next exercise by pressing the button once. The name of the exercise is announced on the speaker and LED lights of the progress bar indicates the progress through the exercise session.

Alternatively, the user can also skip to the next exercise with an audio input by saying “next” out loud.

The exercise companion celebrates with an audio and a visual message when the exercise session is complete and the lights on the progress bar are all lit up.

The user can switch between different exercise routines by turning the rotary dial on the exercise companion.

How We Got Here

We initially interviewed Fredrick and brainstormed multiple ideas with him.  In the end, we decided to pursue the exercise companion because it was the most feasible, and Fredrick also agreed that it would be something fun and useful for him.

Our Zoom interview with Fredrick

A sample of our interview

To see our full interview story click here

The basic concept was to have a device that would shuffle his exercise routines. He would press the button to shuffle the exercise routine and the device would countdown each exercise for Fredrick to follow along. There would also be LED lights to track the overall progression of the routine.  But as we got into the specifics, we changed and developed our device to better solve the problem:

A collaborative drawing done by all team members over Zoom. This incorporated all of our individual prototype designs.

  1. Adding voice feedback

The first time we revealed to Fredrick what we were making, we had a button that he would be able to press every time he completed a workout. However, he raised the concern that it would be very cumbersome to get up to press the button every time, therefore, this was when we decided to use sound to go to the next workout.

Initially, we had a button but changed it to a rotary encoder to better fit Fredrick’s needs. The voice recognition would be inside the device near the speaker holes.

2. Instead of two touch screen faces on opposite ends, we used a 16×2 LCD screen

In our first final prototype, we decided to have a cubic screen with a face that acts as the “personality” of the device and changed according to the progression and accomplishment of the exercises. Another screen was in the back to have the title of the routines, in case Fredrick did not hear the exercises being called out through the speakers. However, we realized this was a little unnecessary and would add bulk to our physical size, therefore, we simplified this concept by using the form of the 16×2 LCD screen as the mouth of the device. The eyes of the mouth would be cut out from the body of the device and placed  with acrylic on top to be able to see LED lights inside. The LED lights in the eyes would then flash to animate the face.

Initial rendering of the device with two cubic screens, one in front and one in the back

Final design of device with one side of the cube with a face made from acrylic, a 16×2 LCD screen, and a LED strip progression bar. The back is empty.

The face is now constructed by essential functions of the device

3.  Adding multiple routines with a rotary encoder

We realized if we shuffled all the workout exercises, it would be difficult changing back and forth from a  standing position to a floor exercise. Therefore, this is when we incorporated workout categories for Fredrick’s exercises. Instead of shuffling all the exercises, we would shuffle the exercises in a category. Thus we replaced the button we planned to use before, to a rotary encoder, where the dial part of the rotary encoder would be able to switch between categories, and the button is able to shuffle the exercises in that category.

Using a rotary encoder instead of a button

4. Congratulatory  responses

As we developed our idea of the exercise companion, we wanted to animate the device, even more, to give it more personality. Therefore, we added features where the device would congratulate you at the end of the workout and play a song that you can choose. This detail we hope would allow the user to enjoy the device more.

To see this please look at the video of the interaction under the section, Final Product.

Conclusions and Lessons Learned

During our presentation, one of the verbal comments was that the device had “an infantile appeal” to it.  We thought this was very interesting where we did not mean to make it appear like that at all, in fact, we tried to create the device so that it would appear as a neutral face. Perhaps to make it more friendly, we could animate the expressions and have them more lifelike that way. Looking at our written feedback we also received feedback that stated our device’s appearance was “cute” and they “love the look”. This shows us that our device may have successfully taken a neutral ambiguous look and that is why people are having different reactions to it – it is up to the user to determine the mood of the face. For our case, our user is Fredrick and during our meetings with him to show our device, he enjoyed the appearance. Moving forward, it may be better to include more “faces” to make the device more lively, as pointed out in one of the comments. One of the biggest limitations, however, comes from the LCD display, which has limited ability to display graphics or animation.

In our written comments, more than one person wrote that they were afraid that the user may “game the system” by actively skipping over the exercise right away.  This may be the case, but for our client’s specific situation, he did his exercises daily anyways and only needed this tool to make his routines more interesting. The device is not meant to push him to do the exercises, therefore, this would not have been a problem. If we were to design something for the purpose of helping users exercise, then we could include a mandatory timer for each exercise.

Another comment we received was that “to display the time remaining”. We initially had this feature, but our client declined it as he told us that he wanted to take charge of how long he would spend doing an exercise. He did not want the device to rush him. We think through this project, we learned that designing a device for a one person’s needs makes the device’s functions very specific, therefore, when other’s try to imagine using it, they might not always realize the background information behind it and will not be able to relate to the device as much.

Working remotely was a new experience for all of us, and although it becomes more time-efficient without the scheduling of physical meetings and the making, communicating was more difficult. It was not always very clear what each person was doing and the pace of work was difficult to track as well. The Gantt sheet was good to help us schedule what we needed to accomplish, but what was most effective was actually meeting through the Zoom meetings. Since members of the group did not meet, accountability for accomplishing work was also very individualized, which can be difficult for people facing different situations. This experience made us realize how important physical meetings were. On the other hand, working remotely has turned out to be a better experience than we expected. Even though we cannot have in-person interaction which is important for any activity, we can still communicate effectively through technology if we have the resolution. For example, brainstorming as a group may become harder or different, but with the whiteboard feature on Zoom, it is actually quite easy and engaging.

We really enjoyed talking with the Osher students and making these interesting devices where we didn’t need to think about the cases for multiple users and just one. We hope to take our plans for this project and actually create it in real life sometime in the future and finally be able to hold our hard work in our hands.

Our biggest takeaway from this project would be seeing how important the research and communication with the users are. By talking and understanding our client, Fredrick, our design was changed and guided by his needs. Without this information, the device would not have been as useful and meaningful as it is. This would apply to our future projects as well where we want to focus more time on planning and building a strong foundation of study and research for a design project that I am doing. In addition, we have learned that everyone has their own standard of what a good device or product should be. In the process of designing, we start by envisioning the device in our perspectives. Then it is crucial to communicate with the actual users to find what is working and what is off. Oftentimes there may be features that the designers thought is important but not so by the users, or features that the users value but are not considered by the designers.

Technical Details

Breadboard Image

This is the annotated breadboard image

Code

  1. <span class="com">/*Exercise Companion
  2. * Zerui Huo
  3. * The code makes a robot-shaped device show the exericise names through the selected workout set. It goes to the next execise when it detects sound that has volume
  4. over the threshold. It also shows reward when the user finishes a group of exercises or the whole set. A newpixel strip shows the progress through the workout.
  5. *Pin mapping:
  6. pin | mode | description
  7. ------|--------|------------
  8. 6 INPUT This pin represents the press button on a rotary encoder.
  9. 7 OUTPUT The pin that controls the Neopixel ligt strip/stick
  10. 8 INPUT The pin that connects to the microphone that sense any audio input from the user.
  11. 10 OUTPUT The pin that controls one of the two speakers.
  12. 13 OUTPUT The pin that controls one of the two speakers.
  13. A0 INPUT The pin that represents the rotary turner on the a rotary encoder.
  14. A3 OUTPUT Used as digital pin to control LEDS light.
  15. A4 OUTPUT Used as digital pin to control LEDS light.
  16. VCC The pin for power to go into the Arduino pro mini.Connected to a 9V battery.
  17. *Credit to example codes or reference:
  18. *The code that generates the custom characters in LCD is written in the help of the website https://maxpromer.github.io/LCD-Character-Creator/.
  19. *The code for the neopixel light strip is written by refering to the information in the website https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-use. It is a turtorial on how to use the neopixel library.
  20. *Note: In each workout set, exercises requiring similar pose are put into groups. Tree pose, for example, is grouped with other yoga exericise with standing pose.
  21. The workout sets always have the same groups of exercises,but the sequence of the groups is randomized every time. In addition, the sequence for exerices in
  22. each group is also randomized.
  23. */</span><span class="pln">
  24. </span><span class="com">//Included the needed Libraries</span><span class="pln">
  25. </span><span class="com">#include</span><span class="pln"> </span><span class="str"><Wire.h></span><span class="pln">
  26. </span><span class="com">#include</span><span class="pln"> </span><span class="str"><LiquidCrystal.h></span><span class="pln">
  27. </span><span class="com">#include</span><span class="pln"> </span><span class="str"><Adafruit_NeoPixel.h></span><span class="pln">
  28. </span><span class="com">//Defining the "audio files" for the exerice names</span><span class="pln">
  29. </span><span class="com">#define</span><span class="pln"> NOTE_C3 </span><span class="lit">131</span><span class="pln">
  30. </span><span class="com">#define</span><span class="pln"> NOTE_CS3 </span><span class="lit">139</span><span class="pln">
  31. </span><span class="com">#define</span><span class="pln"> NOTE_D3 </span><span class="lit">147</span><span class="pln">
  32. </span><span class="com">#define</span><span class="pln"> NOTE_DS3 </span><span class="lit">156</span><span class="pln">
  33. </span><span class="com">#define</span><span class="pln"> NOTE_E3 </span><span class="lit">165</span><span class="pln">
  34. </span><span class="com">#define</span><span class="pln"> NOTE_F3 </span><span class="lit">175</span><span class="pln">
  35. </span><span class="com">#define</span><span class="pln"> NOTE_FS3 </span><span class="lit">185</span><span class="pln">
  36. </span><span class="com">#define</span><span class="pln"> NOTE_G3 </span><span class="lit">196</span><span class="pln">
  37. </span><span class="com">#define</span><span class="pln"> NOTE_GS3 </span><span class="lit">208</span><span class="pln">
  38. </span><span class="com">#define</span><span class="pln"> NOTE_A3 </span><span class="lit">220</span><span class="pln">
  39. </span><span class="com">#define</span><span class="pln"> NOTE_AS3 </span><span class="lit">233</span><span class="pln">
  40. </span><span class="com">#define</span><span class="pln"> NOTE_B3 </span><span class="lit">247</span><span class="pln">
  41. </span><span class="com">#define</span><span class="pln"> NOTE_C4 </span><span class="lit">262</span><span class="pln">
  42. </span><span class="com">#define</span><span class="pln"> NOTE_CS4 </span><span class="lit">277</span><span class="pln">
  43. </span><span class="com">#define</span><span class="pln"> NOTE_D4 </span><span class="lit">294</span><span class="pln">
  44. </span><span class="com">#define</span><span class="pln"> NOTE_DS4 </span><span class="lit">311</span><span class="pln">
  45. </span><span class="com">#define</span><span class="pln"> NOTE_E4 </span><span class="lit">330</span><span class="pln">
  46. </span><span class="com">#define</span><span class="pln"> NOTE_F4 </span><span class="lit">349</span><span class="pln">
  47. </span><span class="com">#define</span><span class="pln"> NOTE_FS4 </span><span class="lit">370</span><span class="pln">
  48. </span><span class="com">#define</span><span class="pln"> NOTE_G4 </span><span class="lit">392</span><span class="pln">
  49. </span><span class="com">#define</span><span class="pln"> NOTE_GS4 </span><span class="lit">415</span><span class="pln">
  50. </span><span class="com">#define</span><span class="pln"> NOTE_A4 </span><span class="lit">440</span><span class="pln">
  51. </span><span class="com">#define</span><span class="pln"> NOTE_AS4 </span><span class="lit">466</span><span class="pln">
  52. </span><span class="com">#define</span><span class="pln"> NOTE_B4 </span><span class="lit">494</span><span class="pln">
  53. </span><span class="com">#define</span><span class="pln"> NOTE_C5 </span><span class="lit">523</span><span class="pln">
  54. </span><span class="com">#define</span><span class="pln"> NOTE_CS5 </span><span class="lit">554</span><span class="pln">
  55. </span><span class="com">#define</span><span class="pln"> NOTE_D5 </span><span class="lit">587</span><span class="pln">
  56. </span><span class="com">#define</span><span class="pln"> NOTE_DS5 </span><span class="lit">622</span><span class="pln">
  57. </span><span class="com">#define</span><span class="pln"> NOTE_E5 </span><span class="lit">659</span><span class="pln">
  58. </span><span class="com">#define</span><span class="pln"> NOTE_F5 </span><span class="lit">698</span><span class="pln">
  59. </span><span class="com">#define</span><span class="pln"> NOTE_FS5 </span><span class="lit">740</span><span class="pln">
  60. </span><span class="com">#define</span><span class="pln"> NOTE_G5 </span><span class="lit">784</span><span class="pln">
  61. </span><span class="com">#define</span><span class="pln"> NOTE_GS5 </span><span class="lit">831</span><span class="pln">
  62. </span><span class="com">#define</span><span class="pln"> NOTE_A5 </span><span class="lit">880</span><span class="pln">
  63. </span><span class="com">#define</span><span class="pln"> NOTE_AS5 </span><span class="lit">932</span><span class="pln">
  64. </span><span class="com">#define</span><span class="pln"> NOTE_B5 </span><span class="lit">988</span><span class="pln">
  65. </span><span class="com">#define</span><span class="pln"> NOTE_C6 </span><span class="lit">1047</span><span class="pln">
  66. </span><span class="com">#define</span><span class="pln"> NOTE_CS6 </span><span class="lit">1109</span><span class="pln">
  67. </span><span class="com">#define</span><span class="pln"> NOTE_D6 </span><span class="lit">1175</span><span class="pln">
  68. </span><span class="com">#define</span><span class="pln"> NOTE_DS6 </span><span class="lit">1245</span><span class="pln">
  69. </span><span class="com">#define</span><span class="pln"> NOTE_E6 </span><span class="lit">1319</span><span class="pln">
  70. </span><span class="com">#define</span><span class="pln"> NOTE_F6 </span><span class="lit">1397</span><span class="pln">
  71. </span><span class="com">#define</span><span class="pln"> NOTE_FS6 </span><span class="lit">1480</span><span class="pln">
  72. </span><span class="com">#define</span><span class="pln"> NOTE_G6 </span><span class="lit">1568</span><span class="pln">
  73. </span><span class="com">#define</span><span class="pln"> NOTE_GS6 </span><span class="lit">1661</span><span class="pln">
  74. </span><span class="com">#define</span><span class="pln"> NOTE_A6 </span><span class="lit">1760</span><span class="pln">
  75. </span><span class="com">#define</span><span class="pln"> NOTE_AS6 </span><span class="lit">1865</span><span class="pln">
  76. </span><span class="com">#define</span><span class="pln"> NOTE_B6 </span><span class="lit">1976</span><span class="pln">
  77. </span><span class="com">#define</span><span class="pln"> NOTE_C7 </span><span class="lit">2093</span><span class="pln">
  78. </span><span class="com">#define</span><span class="pln"> NOTE_CS7 </span><span class="lit">2217</span><span class="pln">
  79. </span><span class="com">#define</span><span class="pln"> NOTE_D7 </span><span class="lit">2349</span><span class="pln">
  80. </span><span class="com">#define</span><span class="pln"> NOTE_DS7 </span><span class="lit">2489</span><span class="pln">
  81. </span><span class="com">#define</span><span class="pln"> NOTE_E7 </span><span class="lit">2637</span><span class="pln">
  82. </span><span class="com">#define</span><span class="pln"> NOTE_F7 </span><span class="lit">2794</span><span class="pln">
  83. </span><span class="com">#define</span><span class="pln"> NOTE_FS7 </span><span class="lit">2960</span><span class="pln">
  84. </span><span class="com">#define</span><span class="pln"> NOTE_G7 </span><span class="lit">3136</span><span class="pln">
  85. </span><span class="com">#define</span><span class="pln"> NOTE_GS7 </span><span class="lit">3322</span><span class="pln">
  86. </span><span class="com">#define</span><span class="pln"> NOTE_A7 </span><span class="lit">3520</span><span class="pln">
  87. </span><span class="com">#define</span><span class="pln"> NOTE_AS7 </span><span class="lit">3729</span><span class="pln">
  88. </span><span class="com">#define</span><span class="pln"> NOTE_B7 </span><span class="lit">3951</span><span class="pln">
  89. </span><span class="com">#define</span><span class="pln"> NOTE_C8 </span><span class="lit">4186</span><span class="pln">
  90. </span><span class="com">#define</span><span class="pln"> NOTE_CS8 </span><span class="lit">4435</span><span class="pln">
  91. </span><span class="com">#define</span><span class="pln"> NOTE_D8 </span><span class="lit">4699</span><span class="pln">
  92. </span><span class="com">#define</span><span class="pln"> NOTE_DS8 </span><span class="lit">4978</span><span class="pln">
  93. </span><span class="com">//Naming all the pins according to stimulation in TinkerCad</span><span class="pln">
  94. </span><span class="com">//Remember to change the pin according to your wiring</span><span class="pln">
  95. </span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> ROTARY_BUTTON </span><span class="pun">=</span><span class="pln"> </span><span class="lit">6</span><span class="pun">;</span><span class="pln">
  96. </span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> ROTARY_TURNER </span><span class="pun">=</span><span class="pln"> A0</span><span class="pun">;</span><span class="pln">
  97. </span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> MICROPHONE </span><span class="pun">=</span><span class="pln"> </span><span class="lit">8</span><span class="pun">;</span><span class="pln">
  98. </span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> SPEAKER1 </span><span class="pun">=</span><span class="pln"> </span><span class="lit">10</span><span class="pun">;</span><span class="pln">
  99. </span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> SPEAKER2 </span><span class="pun">=</span><span class="pln"> </span><span class="lit">13</span><span class="pun">;</span><span class="pln">
  100. </span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> NEOPIXELSTRIP </span><span class="pun">=</span><span class="pln"> </span><span class="lit">7</span><span class="pun">;</span><span class="pln">
  101. </span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> LED1 </span><span class="pun">=</span><span class="pln"> A3</span><span class="pun">;</span><span class="pln">
  102. </span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> LED2 </span><span class="pun">=</span><span class="pln"> A4</span><span class="pun">;</span><span class="pln">
  103. </span><span class="com">//Setting the constant ints. Fre stands for the frequency to check a specific timer. Period is the period for some events to last.</span><span class="pln">
  104. </span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> LED_COUNT </span><span class="pun">=</span><span class="pln"> </span><span class="lit">6</span><span class="pun">;</span><span class="pln">
  105. </span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> SELECTINGFRE </span><span class="pun">=</span><span class="pln"> </span><span class="lit">100</span><span class="pun">;</span><span class="pln">
  106. </span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> MICROPHONEFRE </span><span class="pun">=</span><span class="pln"> </span><span class="lit">20</span><span class="pun">;</span><span class="pln">
  107. </span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> AUDIOPERIOD </span><span class="pun">=</span><span class="pln"> </span><span class="lit">60</span><span class="pun">;</span><span class="pln">
  108. </span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> STRIPPERIOD </span><span class="pun">=</span><span class="pln"> </span><span class="lit">100</span><span class="pun">;</span><span class="pln">
  109. </span><span class="com">//Global varibales that change</span><span class="pln">
  110. </span><span class="com">//Timers for "run without block"</span><span class="pln">
  111. </span><span class="kwd">unsigned</span><span class="pln"> </span><span class="kwd">long</span><span class="pln"> selectingTimer </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  112. </span><span class="kwd">unsigned</span><span class="pln"> </span><span class="kwd">long</span><span class="pln"> microphoneTimer </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  113. </span><span class="kwd">unsigned</span><span class="pln"> </span><span class="kwd">long</span><span class="pln"> audioTimer </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  114. </span><span class="kwd">unsigned</span><span class="pln"> </span><span class="kwd">long</span><span class="pln"> stripTimer </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  115. </span><span class="kwd">int</span><span class="pln"> on_off </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
  116. </span><span class="kwd">int</span><span class="pln"> </span><span class="kwd">select</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
  117. </span><span class="kwd">int</span><span class="pln"> cursor </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  118. </span><span class="kwd">int</span><span class="pln"> row</span><span class="pun">;</span><span class="pln">
  119. </span><span class="kwd">int</span><span class="pln"> column </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  120. </span><span class="kwd">int</span><span class="pln"> rowIncrement </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  121. </span><span class="kwd">int</span><span class="pln"> columnIncrement </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  122. </span><span class="kwd">int</span><span class="pln"> num_of_groups</span><span class="pun">;</span><span class="pln">
  123. </span><span class="com">//Lists that store informations</span><span class="pln">
  124. </span><span class="com">//The set names</span><span class="pln">
  125. </span><span class="typ">String</span><span class="pln"> sets</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="str">"Yoga Set"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Weights"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Aerobics"</span><span class="pun">};</span><span class="pln">
  126. </span><span class="com">//The list that tells the row number that a set starts and ends</span><span class="pln">
  127. </span><span class="kwd">int</span><span class="pln"> set_row</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">};</span><span class="pln">
  128. </span><span class="com">//Example workout sets. The "0" represents a null, and the device will go to the next group of exercises in the set.</span><span class="pln">
  129. </span><span class="typ">String</span><span class="pln"> exercise</span><span class="pun">[][</span><span class="lit">3</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  130. </span><span class="pun">{</span><span class="str">"Jumping Jack Jumping Jack Jumping Jack"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Cobbler Pose"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Abdominal Plank"</span><span class="pun">},</span><span class="pln">
  131. </span><span class="pun">{</span><span class="str">"hee"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"ha"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"yo"</span><span class="pun">},</span><span class="pln">
  132. </span><span class="pun">{</span><span class="str">"Tree Pose"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"dance"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Upward Facing Dog"</span><span class="pun">},</span><span class="pln">
  133. </span><span class="pun">{</span><span class="str">"Cat-cow"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Knee-to-chest"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"0"</span><span class="pun">},</span><span class="pln">
  134. </span><span class="pun">{</span><span class="str">"Knees-to-chest"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Hip flexor"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Torso rotation"</span><span class="pun">},</span><span class="pln">
  135. </span><span class="pun">{</span><span class="str">"Tree pose"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Full body"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Child's Pose"</span><span class="pun">},</span><span class="pln">
  136. </span><span class="pun">{</span><span class="str">"Cat-cow"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Crescent warrior"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"0"</span><span class="pun">},</span><span class="pln">
  137. </span><span class="pun">{</span><span class="str">"Ab plank"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Cobbler Pose"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"0"</span><span class="pun">},</span><span class="pln">
  138. </span><span class="pun">};</span><span class="pln">
  139. </span><span class="com">//Micmic the SD card that stores the audio files of the names of the exercise</span><span class="pln">
  140. </span><span class="kwd">int</span><span class="pln"> exercise_audio</span><span class="pun">[][</span><span class="lit">3</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  141. </span><span class="pun">{</span><span class="pln">NOTE_C3</span><span class="pun">,</span><span class="pln"> NOTE_D3</span><span class="pun">,</span><span class="pln"> NOTE_E3</span><span class="pun">},</span><span class="pln">
  142. </span><span class="pun">{</span><span class="pln">NOTE_F3</span><span class="pun">,</span><span class="pln"> NOTE_G3</span><span class="pun">,</span><span class="pln"> NOTE_A3</span><span class="pun">},</span><span class="pln">
  143. </span><span class="pun">{</span><span class="pln">NOTE_B3</span><span class="pun">,</span><span class="pln"> NOTE_C4</span><span class="pun">,</span><span class="pln"> NOTE_D4</span><span class="pun">},</span><span class="pln">
  144. </span><span class="pun">{</span><span class="pln">NOTE_E4</span><span class="pun">,</span><span class="pln"> NOTE_F4</span><span class="pun">,</span><span class="pln"> NOTE_F5</span><span class="pun">},</span><span class="pln">
  145. </span><span class="pun">{</span><span class="pln">NOTE_G4</span><span class="pun">,</span><span class="pln"> NOTE_A4</span><span class="pun">,</span><span class="pln">NOTE_B4</span><span class="pun">},</span><span class="pln">
  146. </span><span class="pun">{</span><span class="pln">NOTE_C5</span><span class="pun">,</span><span class="pln"> NOTE_D5</span><span class="pun">,</span><span class="pln"> NOTE_E5</span><span class="pun">},</span><span class="pln">
  147. </span><span class="pun">{</span><span class="pln">NOTE_F5</span><span class="pun">,</span><span class="pln"> NOTE_G5</span><span class="pun">,</span><span class="pln"> NOTE_A5</span><span class="pun">},</span><span class="pln">
  148. </span><span class="pun">{</span><span class="pln">NOTE_B5</span><span class="pun">,</span><span class="pln"> NOTE_C6</span><span class="pun">,</span><span class="pln"> NOTE_D6</span><span class="pun">},</span><span class="pln">
  149. </span><span class="pun">};</span><span class="pln">
  150. </span><span class="com">//Creating the custom characters for the "face" of the robot</span><span class="pln">
  151. </span><span class="com">//surprise face</span><span class="pln">
  152. </span><span class="kwd">byte</span><span class="pln"> SURPRISE_06</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  153. B00000</span><span class="pun">,</span><span class="pln">
  154. B00001</span><span class="pun">,</span><span class="pln">
  155. B00010</span><span class="pun">,</span><span class="pln">
  156. B00100</span><span class="pun">,</span><span class="pln">
  157. B01000</span><span class="pun">,</span><span class="pln">
  158. B01000</span><span class="pun">,</span><span class="pln">
  159. B01000</span><span class="pun">,</span><span class="pln">
  160. B01000
  161. </span><span class="pun">};</span><span class="pln">
  162. </span><span class="kwd">byte</span><span class="pln"> SURPRISE_07</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  163. B01111</span><span class="pun">,</span><span class="pln">
  164. B10000</span><span class="pun">,</span><span class="pln">
  165. B00000</span><span class="pun">,</span><span class="pln">
  166. B00000</span><span class="pun">,</span><span class="pln">
  167. B00000</span><span class="pun">,</span><span class="pln">
  168. B00000</span><span class="pun">,</span><span class="pln">
  169. B00000</span><span class="pun">,</span><span class="pln">
  170. B00000
  171. </span><span class="pun">};</span><span class="pln">
  172. </span><span class="kwd">byte</span><span class="pln"> SURPRISE_08</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  173. B11110</span><span class="pun">,</span><span class="pln">
  174. B00001</span><span class="pun">,</span><span class="pln">
  175. B00000</span><span class="pun">,</span><span class="pln">
  176. B00000</span><span class="pun">,</span><span class="pln">
  177. B00000</span><span class="pun">,</span><span class="pln">
  178. B00000</span><span class="pun">,</span><span class="pln">
  179. B00000</span><span class="pun">,</span><span class="pln">
  180. B00000
  181. </span><span class="pun">};</span><span class="pln">
  182. </span><span class="kwd">byte</span><span class="pln"> SURPRISE_09</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  183. B00000</span><span class="pun">,</span><span class="pln">
  184. B10000</span><span class="pun">,</span><span class="pln">
  185. B01000</span><span class="pun">,</span><span class="pln">
  186. B00100</span><span class="pun">,</span><span class="pln">
  187. B00010</span><span class="pun">,</span><span class="pln">
  188. B00010</span><span class="pun">,</span><span class="pln">
  189. B00010</span><span class="pun">,</span><span class="pln">
  190. B00010
  191. </span><span class="pun">};</span><span class="pln">
  192. </span><span class="kwd">byte</span><span class="pln"> SURPRISE_16</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  193. B01000</span><span class="pun">,</span><span class="pln">
  194. B01000</span><span class="pun">,</span><span class="pln">
  195. B01000</span><span class="pun">,</span><span class="pln">
  196. B01000</span><span class="pun">,</span><span class="pln">
  197. B00100</span><span class="pun">,</span><span class="pln">
  198. B00010</span><span class="pun">,</span><span class="pln">
  199. B00001</span><span class="pun">,</span><span class="pln">
  200. B00000
  201. </span><span class="pun">};</span><span class="pln">
  202. </span><span class="kwd">byte</span><span class="pln"> SURPRISE_17</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  203. B00000</span><span class="pun">,</span><span class="pln">
  204. B00000</span><span class="pun">,</span><span class="pln">
  205. B00000</span><span class="pun">,</span><span class="pln">
  206. B00000</span><span class="pun">,</span><span class="pln">
  207. B00000</span><span class="pun">,</span><span class="pln">
  208. B00000</span><span class="pun">,</span><span class="pln">
  209. B10000</span><span class="pun">,</span><span class="pln">
  210. B01111
  211. </span><span class="pun">};</span><span class="pln">
  212. </span><span class="kwd">byte</span><span class="pln"> SURPRISE_18</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  213. B00000</span><span class="pun">,</span><span class="pln">
  214. B00000</span><span class="pun">,</span><span class="pln">
  215. B00000</span><span class="pun">,</span><span class="pln">
  216. B00000</span><span class="pun">,</span><span class="pln">
  217. B00000</span><span class="pun">,</span><span class="pln">
  218. B00000</span><span class="pun">,</span><span class="pln">
  219. B00001</span><span class="pun">,</span><span class="pln">
  220. B11110
  221. </span><span class="pun">};</span><span class="pln">
  222. </span><span class="kwd">byte</span><span class="pln"> SURPRISE_19</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  223. B00010</span><span class="pun">,</span><span class="pln">
  224. B00010</span><span class="pun">,</span><span class="pln">
  225. B00010</span><span class="pun">,</span><span class="pln">
  226. B00010</span><span class="pun">,</span><span class="pln">
  227. B00100</span><span class="pun">,</span><span class="pln">
  228. B01000</span><span class="pun">,</span><span class="pln">
  229. B10000</span><span class="pun">,</span><span class="pln">
  230. B00000
  231. </span><span class="pun">};</span><span class="pln">
  232. </span><span class="com">//smiley face</span><span class="pln">
  233. </span><span class="kwd">byte</span><span class="pln"> SMILE_04</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  234. B00000</span><span class="pun">,</span><span class="pln">
  235. B00000</span><span class="pun">,</span><span class="pln">
  236. B00000</span><span class="pun">,</span><span class="pln">
  237. B00000</span><span class="pun">,</span><span class="pln">
  238. B00000</span><span class="pun">,</span><span class="pln">
  239. B00001</span><span class="pun">,</span><span class="pln">
  240. B00010</span><span class="pun">,</span><span class="pln">
  241. B00100
  242. </span><span class="pun">};</span><span class="pln">
  243. </span><span class="kwd">byte</span><span class="pln"> SMILE_05</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  244. B00000</span><span class="pun">,</span><span class="pln">
  245. B00000</span><span class="pun">,</span><span class="pln">
  246. B00000</span><span class="pun">,</span><span class="pln">
  247. B01000</span><span class="pun">,</span><span class="pln">
  248. B11000</span><span class="pun">,</span><span class="pln">
  249. B00100</span><span class="pun">,</span><span class="pln">
  250. B00010</span><span class="pun">,</span><span class="pln">
  251. B00001
  252. </span><span class="pun">};</span><span class="pln">
  253. </span><span class="kwd">byte</span><span class="pln"> SMILE_010</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  254. B00000</span><span class="pun">,</span><span class="pln">
  255. B00000</span><span class="pun">,</span><span class="pln">
  256. B00000</span><span class="pun">,</span><span class="pln">
  257. B00010</span><span class="pun">,</span><span class="pln">
  258. B00010</span><span class="pun">,</span><span class="pln">
  259. B00101</span><span class="pun">,</span><span class="pln">
  260. B01000</span><span class="pun">,</span><span class="pln">
  261. B10000
  262. </span><span class="pun">};</span><span class="pln">
  263. </span><span class="kwd">byte</span><span class="pln"> SMILE_011</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  264. B00000</span><span class="pun">,</span><span class="pln">
  265. B00000</span><span class="pun">,</span><span class="pln">
  266. B00000</span><span class="pun">,</span><span class="pln">
  267. B00000</span><span class="pun">,</span><span class="pln">
  268. B00000</span><span class="pun">,</span><span class="pln">
  269. B00000</span><span class="pun">,</span><span class="pln">
  270. B10000</span><span class="pun">,</span><span class="pln">
  271. B01000
  272. </span><span class="pun">};</span><span class="pln">
  273. </span><span class="kwd">byte</span><span class="pln"> SMILE_16</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  274. B10000</span><span class="pun">,</span><span class="pln">
  275. B01000</span><span class="pun">,</span><span class="pln">
  276. B00100</span><span class="pun">,</span><span class="pln">
  277. B00010</span><span class="pun">,</span><span class="pln">
  278. B00001</span><span class="pun">,</span><span class="pln">
  279. B00000</span><span class="pun">,</span><span class="pln">
  280. B00000</span><span class="pun">,</span><span class="pln">
  281. B00000
  282. </span><span class="pun">};</span><span class="pln">
  283. </span><span class="kwd">byte</span><span class="pln"> SMILE_17</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  284. B00000</span><span class="pun">,</span><span class="pln">
  285. B00000</span><span class="pun">,</span><span class="pln">
  286. B00000</span><span class="pun">,</span><span class="pln">
  287. B00000</span><span class="pun">,</span><span class="pln">
  288. B00000</span><span class="pun">,</span><span class="pln">
  289. B10000</span><span class="pun">,</span><span class="pln">
  290. B01111</span><span class="pun">,</span><span class="pln">
  291. B00000
  292. </span><span class="pun">};</span><span class="pln">
  293. </span><span class="kwd">byte</span><span class="pln"> SMILE_18</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  294. B00000</span><span class="pun">,</span><span class="pln">
  295. B00000</span><span class="pun">,</span><span class="pln">
  296. B00000</span><span class="pun">,</span><span class="pln">
  297. B00000</span><span class="pun">,</span><span class="pln">
  298. B00000</span><span class="pun">,</span><span class="pln">
  299. B00001</span><span class="pun">,</span><span class="pln">
  300. B11110</span><span class="pun">,</span><span class="pln">
  301. B00000
  302. </span><span class="pun">};</span><span class="pln">
  303. </span><span class="kwd">byte</span><span class="pln"> SMILE_19</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  304. B00001</span><span class="pun">,</span><span class="pln">
  305. B00010</span><span class="pun">,</span><span class="pln">
  306. B00100</span><span class="pun">,</span><span class="pln">
  307. B01000</span><span class="pun">,</span><span class="pln">
  308. B10000</span><span class="pun">,</span><span class="pln">
  309. B00000</span><span class="pun">,</span><span class="pln">
  310. B00000</span><span class="pun">,</span><span class="pln">
  311. B00000
  312. </span><span class="pun">};</span><span class="pln">
  313. </span><span class="com">// generating a random sequence for exerices in each exercise group</span><span class="pln">
  314. </span><span class="kwd">int</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> generate_randnumb_exercise</span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> min</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> length</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  315. </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> rando</span><span class="pun">[</span><span class="lit">10</span><span class="pun">];</span><span class="pln">
  316. </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> min</span><span class="pun">;</span><span class="pln"> i </span><span class="pun"><</span><span class="pln"> min </span><span class="pun">+</span><span class="pln"> length</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  317. rando</span><span class="pun">[</span><span class="pln">i </span><span class="pun">-</span><span class="pln"> min</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> i</span><span class="pun">;</span><span class="pln">
  318. </span><span class="pun">}</span><span class="pln">
  319. randomSeed</span><span class="pun">(</span><span class="pln">digitalRead</span><span class="pun">(</span><span class="pln">A5</span><span class="pun">));</span><span class="pln">
  320. </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun"><</span><span class="pln"> </span><span class="lit">200</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  321. </span><span class="kwd">int</span><span class="pln"> rand1</span><span class="pun">;</span><span class="pln">
  322. </span><span class="kwd">int</span><span class="pln"> rand2</span><span class="pun">;</span><span class="pln">
  323. </span><span class="kwd">int</span><span class="pln"> old_rand1</span><span class="pun">;</span><span class="pln">
  324. </span><span class="kwd">int</span><span class="pln"> old_rand2</span><span class="pun">;</span><span class="pln">
  325. rand1 </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> length </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  326. rand2 </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> length </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  327. old_rand1 </span><span class="pun">=</span><span class="pln"> rando</span><span class="pun">[</span><span class="pln">rand1</span><span class="pun">];</span><span class="pln">
  328. old_rand2 </span><span class="pun">=</span><span class="pln"> rando</span><span class="pun">[</span><span class="pln">rand2</span><span class="pun">];</span><span class="pln">
  329. rando</span><span class="pun">[</span><span class="pln">rand1</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> old_rand2</span><span class="pun">;</span><span class="pln">
  330. rando</span><span class="pun">[</span><span class="pln">rand2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> old_rand1</span><span class="pun">;</span><span class="pln">
  331. </span><span class="pun">}</span><span class="pln">
  332. </span><span class="kwd">return</span><span class="pln"> rando</span><span class="pun">;</span><span class="pln">
  333. </span><span class="pun">}</span><span class="pln">
  334. </span><span class="com">// generating a random sequence for exerice group in set1</span><span class="pln">
  335. </span><span class="kwd">int</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> generate_randnumb_set1</span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> min</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> length</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  336. </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> rando2</span><span class="pun">[</span><span class="lit">10</span><span class="pun">];</span><span class="pln">
  337. </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> min</span><span class="pun">;</span><span class="pln"> i </span><span class="pun"><</span><span class="pln"> min </span><span class="pun">+</span><span class="pln"> length</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  338. rando2</span><span class="pun">[</span><span class="pln">i </span><span class="pun">-</span><span class="pln"> min</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> i</span><span class="pun">;</span><span class="pln">
  339. </span><span class="pun">}</span><span class="pln">
  340. randomSeed</span><span class="pun">(</span><span class="pln">digitalRead</span><span class="pun">(</span><span class="pln">A5</span><span class="pun">));</span><span class="pln">
  341. </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun"><</span><span class="pln"> </span><span class="lit">200</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  342. </span><span class="kwd">int</span><span class="pln"> rand1</span><span class="pun">;</span><span class="pln">
  343. </span><span class="kwd">int</span><span class="pln"> rand2</span><span class="pun">;</span><span class="pln">
  344. </span><span class="kwd">int</span><span class="pln"> old_rand1</span><span class="pun">;</span><span class="pln">
  345. </span><span class="kwd">int</span><span class="pln"> old_rand2</span><span class="pun">;</span><span class="pln">
  346. rand1 </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> length </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  347. rand2 </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> length </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  348. old_rand1 </span><span class="pun">=</span><span class="pln"> rando2</span><span class="pun">[</span><span class="pln">rand1</span><span class="pun">];</span><span class="pln">
  349. old_rand2 </span><span class="pun">=</span><span class="pln"> rando2</span><span class="pun">[</span><span class="pln">rand2</span><span class="pun">];</span><span class="pln">
  350. rando2</span><span class="pun">[</span><span class="pln">rand1</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> old_rand2</span><span class="pun">;</span><span class="pln">
  351. rando2</span><span class="pun">[</span><span class="pln">rand2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> old_rand1</span><span class="pun">;</span><span class="pln">
  352. </span><span class="pun">}</span><span class="pln">
  353. </span><span class="kwd">return</span><span class="pln"> rando2</span><span class="pun">;</span><span class="pln">
  354. </span><span class="pun">}</span><span class="pln">
  355. </span><span class="com">// generating a random sequence for exerice group in set2</span><span class="pln">
  356. </span><span class="kwd">int</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> generate_randnumb_set2</span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> min</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> length</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  357. </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> rando3</span><span class="pun">[</span><span class="lit">10</span><span class="pun">];</span><span class="pln">
  358. </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> min</span><span class="pun">;</span><span class="pln"> i </span><span class="pun"><</span><span class="pln"> min </span><span class="pun">+</span><span class="pln"> length</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  359. rando3</span><span class="pun">[</span><span class="pln">i </span><span class="pun">-</span><span class="pln"> min</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> i</span><span class="pun">;</span><span class="pln">
  360. </span><span class="pun">}</span><span class="pln">
  361. randomSeed</span><span class="pun">(</span><span class="pln">digitalRead</span><span class="pun">(</span><span class="pln">A5</span><span class="pun">));</span><span class="pln">
  362. </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun"><</span><span class="pln"> </span><span class="lit">200</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  363. </span><span class="kwd">int</span><span class="pln"> rand1</span><span class="pun">;</span><span class="pln">
  364. </span><span class="kwd">int</span><span class="pln"> rand2</span><span class="pun">;</span><span class="pln">
  365. </span><span class="kwd">int</span><span class="pln"> old_rand1</span><span class="pun">;</span><span class="pln">
  366. </span><span class="kwd">int</span><span class="pln"> old_rand2</span><span class="pun">;</span><span class="pln">
  367. rand1 </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> length </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  368. rand2 </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> length </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  369. old_rand1 </span><span class="pun">=</span><span class="pln"> rando3</span><span class="pun">[</span><span class="pln">rand1</span><span class="pun">];</span><span class="pln">
  370. old_rand2 </span><span class="pun">=</span><span class="pln"> rando3</span><span class="pun">[</span><span class="pln">rand2</span><span class="pun">];</span><span class="pln">
  371. rando3</span><span class="pun">[</span><span class="pln">rand1</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> old_rand2</span><span class="pun">;</span><span class="pln">
  372. rando3</span><span class="pun">[</span><span class="pln">rand2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> old_rand1</span><span class="pun">;</span><span class="pln">
  373. </span><span class="pun">}</span><span class="pln">
  374. </span><span class="kwd">return</span><span class="pln"> rando3</span><span class="pun">;</span><span class="pln">
  375. </span><span class="pun">}</span><span class="pln">
  376. </span><span class="com">// generating a random sequence for exerice group in set3</span><span class="pln">
  377. </span><span class="kwd">int</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> generate_randnumb_set3</span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> min</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> length</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  378. </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> rando4</span><span class="pun">[</span><span class="lit">10</span><span class="pun">];</span><span class="pln">
  379. </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> min</span><span class="pun">;</span><span class="pln"> i </span><span class="pun"><</span><span class="pln"> min </span><span class="pun">+</span><span class="pln"> length</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  380. rando4</span><span class="pun">[</span><span class="pln">i </span><span class="pun">-</span><span class="pln"> min</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> i</span><span class="pun">;</span><span class="pln">
  381. </span><span class="pun">}</span><span class="pln">
  382. randomSeed</span><span class="pun">(</span><span class="pln">digitalRead</span><span class="pun">(</span><span class="pln">A5</span><span class="pun">));</span><span class="pln">
  383. </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun"><</span><span class="pln"> </span><span class="lit">200</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  384. </span><span class="kwd">int</span><span class="pln"> rand1</span><span class="pun">;</span><span class="pln">
  385. </span><span class="kwd">int</span><span class="pln"> rand2</span><span class="pun">;</span><span class="pln">
  386. </span><span class="kwd">int</span><span class="pln"> old_rand1</span><span class="pun">;</span><span class="pln">
  387. </span><span class="kwd">int</span><span class="pln"> old_rand2</span><span class="pun">;</span><span class="pln">
  388. rand1 </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> length </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  389. rand2 </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> length </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  390. old_rand1 </span><span class="pun">=</span><span class="pln"> rando4</span><span class="pun">[</span><span class="pln">rand1</span><span class="pun">];</span><span class="pln">
  391. old_rand2 </span><span class="pun">=</span><span class="pln"> rando4</span><span class="pun">[</span><span class="pln">rand2</span><span class="pun">];</span><span class="pln">
  392. rando4</span><span class="pun">[</span><span class="pln">rand1</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> old_rand2</span><span class="pun">;</span><span class="pln">
  393. rando4</span><span class="pun">[</span><span class="pln">rand2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> old_rand1</span><span class="pun">;</span><span class="pln">
  394. </span><span class="pun">}</span><span class="pln">
  395. </span><span class="kwd">return</span><span class="pln"> rando4</span><span class="pun">;</span><span class="pln">
  396. </span><span class="pun">}</span><span class="pln">
  397. </span><span class="com">//Pointers that refers to the sequence of exercise/exercise groups</span><span class="pln">
  398. </span><span class="kwd">int</span><span class="pln"> </span><span class="pun">*</span><span class="pln">sequenceExercise </span><span class="pun">=</span><span class="pln"> generate_randnumb_exercise</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">);</span><span class="pln">
  399. </span><span class="kwd">int</span><span class="pln"> </span><span class="pun">*</span><span class="pln">sequenceSet1 </span><span class="pun">=</span><span class="pln"> generate_randnumb_set1</span><span class="pun">(</span><span class="pln">set_row</span><span class="pun">[</span><span class="lit">0</span><span class="pun">],</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">0</span><span class="pun">]);</span><span class="pln">
  400. </span><span class="kwd">int</span><span class="pln"> </span><span class="pun">*</span><span class="pln">sequenceSet2 </span><span class="pun">=</span><span class="pln"> generate_randnumb_set2</span><span class="pun">(</span><span class="pln">set_row</span><span class="pun">[</span><span class="lit">1</span><span class="pun">],</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]);</span><span class="pln">
  401. </span><span class="kwd">int</span><span class="pln"> </span><span class="pun">*</span><span class="pln">sequenceSet3 </span><span class="pun">=</span><span class="pln"> generate_randnumb_set3</span><span class="pun">(</span><span class="pln">set_row</span><span class="pun">[</span><span class="lit">2</span><span class="pun">],</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">3</span><span class="pun">]</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]);</span><span class="pln">
  402. </span><span class="com">//set up of the lcd</span><span class="pln">
  403. </span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> rs </span><span class="pun">=</span><span class="pln"> </span><span class="lit">12</span><span class="pun">,</span><span class="pln"> en </span><span class="pun">=</span><span class="pln"> </span><span class="lit">11</span><span class="pun">,</span><span class="pln"> d4 </span><span class="pun">=</span><span class="pln"> </span><span class="lit">5</span><span class="pun">,</span><span class="pln"> d5 </span><span class="pun">=</span><span class="pln"> </span><span class="lit">4</span><span class="pun">,</span><span class="pln"> d6 </span><span class="pun">=</span><span class="pln"> </span><span class="lit">3</span><span class="pun">,</span><span class="pln"> d7 </span><span class="pun">=</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln">
  404. </span><span class="typ">LiquidCrystal</span><span class="pln"> lcd</span><span class="pun">(</span><span class="pln">rs</span><span class="pun">,</span><span class="pln"> en</span><span class="pun">,</span><span class="pln"> d4</span><span class="pun">,</span><span class="pln"> d5</span><span class="pun">,</span><span class="pln"> d6</span><span class="pun">,</span><span class="pln"> d7</span><span class="pun">);</span><span class="pln">
  405. </span><span class="com">//set up the neopixel strip</span><span class="pln">
  406. </span><span class="typ">Adafruit_NeoPixel</span><span class="pln"> strip</span><span class="pun">(</span><span class="pln">LED_COUNT</span><span class="pun">,</span><span class="pln"> NEOPIXELSTRIP</span><span class="pun">,</span><span class="pln"> NEO_GRB </span><span class="pun">+</span><span class="pln"> NEO_KHZ800</span><span class="pun">);</span><span class="pln">
  407. </span><span class="com">//defining the color for the neopixel strip</span><span class="pln">
  408. </span><span class="typ">uint32_t</span><span class="pln"> deep_sky_blue </span><span class="pun">=</span><span class="pln"> strip</span><span class="pun">.</span><span class="typ">Color</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">191</span><span class="pun">,</span><span class="pln"> </span><span class="lit">255</span><span class="pun">);</span><span class="pln">
  409. </span><span class="com">//Supplemental Functions</span><span class="pln">
  410. </span><span class="com">//Functions for selecting a workout set</span><span class="pln">
  411. </span><span class="com">//Determine which set the rotary turner is "pointing at"</span><span class="pln">
  412. </span><span class="kwd">int</span><span class="pln"> which_set </span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  413. </span><span class="kwd">int</span><span class="pln"> error_angle </span><span class="pun">=</span><span class="pln"> </span><span class="lit">30</span><span class="pun">;</span><span class="pln">
  414. </span><span class="kwd">int</span><span class="pln"> potenValue </span><span class="pun">=</span><span class="pln"> analogRead</span><span class="pun">(</span><span class="pln">ROTARY_TURNER</span><span class="pun">);</span><span class="pln">
  415. </span><span class="kwd">int</span><span class="pln"> </span><span class="kwd">set</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  416. </span><span class="com">//Display the name of set 1 when the potentiometer is at 0 degree</span><span class="pln">
  417. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">potenValue </span><span class="pun"><=</span><span class="pln"> </span><span class="lit">1023</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> error_angle </span><span class="pun">/</span><span class="pln"> </span><span class="lit">300</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  418. </span><span class="kwd">set</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
  419. </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">set</span><span class="pun">;</span><span class="pln">
  420. </span><span class="pun">}</span><span class="pln">
  421. </span><span class="kwd">else</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">potenValue </span><span class="pun">>=</span><span class="pln"> </span><span class="lit">512</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1023</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> error_angle </span><span class="pun">/</span><span class="pln"> </span><span class="lit">300</span><span class="pln"> </span><span class="pun">&&</span><span class="pln"> potenValue </span><span class="pun"><=</span><span class="pln"> </span><span class="lit">512</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1023</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> error_angle </span><span class="pun">/</span><span class="pln"> </span><span class="lit">300</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  422. </span><span class="kwd">set</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln">
  423. </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">set</span><span class="pun">;</span><span class="pln">
  424. </span><span class="pun">}</span><span class="pln">
  425. </span><span class="com">//set 3</span><span class="pln">
  426. </span><span class="kwd">else</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">potenValue </span><span class="pun">>=</span><span class="pln"> </span><span class="lit">1023</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> </span><span class="pun">(</span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> error_angle </span><span class="pun">/</span><span class="pln"> </span><span class="lit">300</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  427. </span><span class="kwd">set</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">3</span><span class="pun">;</span><span class="pln">
  428. </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">set</span><span class="pun">;</span><span class="pln">
  429. </span><span class="pun">}</span><span class="pln">
  430. </span><span class="pun">}</span><span class="pln">
  431. </span><span class="com">//Display the name of the workout set that is currently looking at</span><span class="pln">
  432. </span><span class="kwd">void</span><span class="pln"> select_set</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  433. </span><span class="kwd">int</span><span class="pln"> buttonState </span><span class="pun">=</span><span class="pln"> digitalRead</span><span class="pun">(</span><span class="pln">ROTARY_BUTTON</span><span class="pun">);</span><span class="pln">
  434. </span><span class="kwd">int</span><span class="pln"> </span><span class="kwd">set</span><span class="pun">;</span><span class="pln">
  435. </span><span class="kwd">set</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> which_set</span><span class="pun">();</span><span class="pln">
  436. </span><span class="typ">String</span><span class="pln"> text </span><span class="pun">=</span><span class="pln"> sets</span><span class="pun">[</span><span class="kwd">set</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">];</span><span class="pln">
  437. </span><span class="kwd">int</span><span class="pln"> startingColumn </span><span class="pun">=</span><span class="pln"> ceil</span><span class="pun">((</span><span class="lit">16</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> text</span><span class="pun">.</span><span class="pln">length</span><span class="pun">())</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="lit">2</span><span class="pun">);</span><span class="pln">
  438. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">2</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
  439. lcd</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="str">"Select a Set"</span><span class="pun">);</span><span class="pln">
  440. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">on_off </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  441. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="pln">startingColumn</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  442. lcd</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="pln">text</span><span class="pun">);</span><span class="pln">
  443. </span><span class="pun">}</span><span class="pln">
  444. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">on_off </span><span class="pun">==</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  445. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="pln">startingColumn</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  446. lcd</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="str">" "</span><span class="pun">);</span><span class="pln">
  447. </span><span class="pun">}</span><span class="pln">
  448. </span><span class="com">//When the pressbutton on rotary encoder is pressed</span><span class="pln">
  449. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">buttonState </span><span class="pun">==</span><span class="pln"> LOW</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  450. </span><span class="kwd">select</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  451. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">set</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  452. row </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*</span><span class="pln">sequenceSet1</span><span class="pun">;</span><span class="pln">
  453. num_of_groups </span><span class="pun">=</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]-</span><span class="pln">set_row</span><span class="pun">[</span><span class="lit">0</span><span class="pun">];</span><span class="pln">
  454. </span><span class="typ">Serial</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="pln">row</span><span class="pun">);</span><span class="pln">
  455. </span><span class="pun">}</span><span class="pln">
  456. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">set</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">2</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  457. row </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*</span><span class="pln">sequenceSet2</span><span class="pun">;</span><span class="pln">
  458. num_of_groups </span><span class="pun">=</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]-</span><span class="pln">set_row</span><span class="pun">[</span><span class="lit">1</span><span class="pun">];</span><span class="pln">
  459. </span><span class="typ">Serial</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="pln">row</span><span class="pun">);</span><span class="pln">
  460. </span><span class="pun">}</span><span class="pln">
  461. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">set</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">3</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  462. row </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*</span><span class="pln">sequenceSet3</span><span class="pun">;</span><span class="pln">
  463. num_of_groups </span><span class="pun">=</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">3</span><span class="pun">]-</span><span class="pln">set_row</span><span class="pun">[</span><span class="lit">2</span><span class="pun">];</span><span class="pln">
  464. </span><span class="typ">Serial</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="pln">row</span><span class="pun">);</span><span class="pln">
  465. </span><span class="pun">}</span><span class="pln">
  466. lcd</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
  467. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">3</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
  468. lcd</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="str">"Lets Begin!"</span><span class="pun">);</span><span class="pln">
  469. delay</span><span class="pun">(</span><span class="lit">1500</span><span class="pun">);</span><span class="pln">
  470. lcd</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
  471. </span><span class="com">//Call the function robot_face to show a smiley face on the lcd</span><span class="pln">
  472. robot_face</span><span class="pun">(</span><span class="str">"smiley"</span><span class="pun">);</span><span class="pln">
  473. delay</span><span class="pun">(</span><span class="lit">2000</span><span class="pun">);</span><span class="pln">
  474. lcd</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
  475. audioTimer </span><span class="pun">=</span><span class="pln"> millis</span><span class="pun">();</span><span class="pln">
  476. </span><span class="pun">}</span><span class="pln">
  477. </span><span class="pun">}</span><span class="pln">
  478. </span><span class="com">//Sumplementary function for display exercise name onto the LCD display</span><span class="pln">
  479. </span><span class="com">//This function scroll the text when it is too long to display on the 16-digit screen</span><span class="pln">
  480. </span><span class="kwd">void</span><span class="pln"> scrollLeft</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="kwd">string</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> row</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  481. </span><span class="kwd">int</span><span class="pln"> length </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">string</span><span class="pun">.</span><span class="pln">length</span><span class="pun">();</span><span class="pln">
  482. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">millis</span><span class="pun">()</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> selectingTimer </span><span class="pun">></span><span class="pln"> SELECTINGFRE</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  483. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">cursor </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun"><=</span><span class="pln"> length </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  484. cursor </span><span class="pun">=</span><span class="pln"> cursor </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
  485. </span><span class="pun">}</span><span class="pln">
  486. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">cursor </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">></span><span class="pln"> length</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  487. cursor </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  488. </span><span class="pun">}</span><span class="pln">
  489. selectingTimer </span><span class="pun">=</span><span class="pln"> millis</span><span class="pun">();</span><span class="pln">
  490. lcd</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
  491. </span><span class="pun">}</span><span class="pln">
  492. </span><span class="typ">String</span><span class="pln"> text </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">string</span><span class="pun">.</span><span class="pln">substring</span><span class="pun">(</span><span class="pln">cursor</span><span class="pun">);</span><span class="pln">
  493. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> row</span><span class="pun">);</span><span class="pln">
  494. lcd</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="pln">text</span><span class="pun">);</span><span class="pln">
  495. </span><span class="pun">}</span><span class="pln">
  496. </span><span class="com">//Function that show the name of the current exercise</span><span class="pln">
  497. </span><span class="kwd">void</span><span class="pln"> display_text</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="kwd">string</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  498. </span><span class="kwd">int</span><span class="pln"> length </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">string</span><span class="pun">.</span><span class="pln">length</span><span class="pun">();</span><span class="pln">
  499. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">length </span><span class="pun"><=</span><span class="pln"> </span><span class="lit">16</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  500. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="pln">ceil</span><span class="pun">((</span><span class="lit">16</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> length</span><span class="pun">)</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="lit">2</span><span class="pun">),</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
  501. lcd</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="kwd">string</span><span class="pun">);</span><span class="pln">
  502. </span><span class="pun">}</span><span class="pln">
  503. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">length </span><span class="pun">></span><span class="pln"> </span><span class="lit">16</span><span class="pln"> </span><span class="pun">&&</span><span class="pln"> length </span><span class="pun"><</span><span class="pln"> </span><span class="lit">32</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  504. </span><span class="kwd">int</span><span class="pln"> indexofSpace </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">string</span><span class="pun">.</span><span class="pln">indexOf</span><span class="pun">(</span><span class="str">" "</span><span class="pun">);</span><span class="pln">
  505. </span><span class="typ">String</span><span class="pln"> firstWord </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">string</span><span class="pun">.</span><span class="pln">substring</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> indexofSpace</span><span class="pun">);</span><span class="pln">
  506. </span><span class="typ">String</span><span class="pln"> secondWord </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">string</span><span class="pun">.</span><span class="pln">substring</span><span class="pun">(</span><span class="pln">indexofSpace </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  507. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">firstWord</span><span class="pun">.</span><span class="pln">length</span><span class="pun">()</span><span class="pln"> </span><span class="pun">></span><span class="pln"> </span><span class="lit">16</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  508. scrollLeft</span><span class="pun">(</span><span class="pln">firstWord</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
  509. </span><span class="pun">}</span><span class="pln">
  510. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">firstWord</span><span class="pun">.</span><span class="pln">length</span><span class="pun">()</span><span class="pln"> </span><span class="pun"><=</span><span class="pln"> </span><span class="lit">16</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  511. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="pln">ceil</span><span class="pun">((</span><span class="lit">16</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> firstWord</span><span class="pun">.</span><span class="pln">length</span><span class="pun">())</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="lit">2</span><span class="pun">),</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
  512. lcd</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="pln">firstWord</span><span class="pun">);</span><span class="pln">
  513. </span><span class="pun">}</span><span class="pln">
  514. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">secondWord</span><span class="pun">.</span><span class="pln">length</span><span class="pun">()</span><span class="pln"> </span><span class="pun">></span><span class="pln"> </span><span class="lit">16</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  515. scrollLeft</span><span class="pun">(</span><span class="pln">secondWord</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  516. </span><span class="pun">}</span><span class="pln">
  517. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">secondWord</span><span class="pun">.</span><span class="pln">length</span><span class="pun">()</span><span class="pln"> </span><span class="pun"><=</span><span class="pln"> </span><span class="lit">16</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  518. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="pln">ceil</span><span class="pun">((</span><span class="lit">16</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> secondWord</span><span class="pun">.</span><span class="pln">length</span><span class="pun">())</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="lit">2</span><span class="pun">),</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  519. lcd</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="pln">secondWord</span><span class="pun">);</span><span class="pln">
  520. </span><span class="pun">}</span><span class="pln">
  521. </span><span class="pun">}</span><span class="pln">
  522. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">length </span><span class="pun">>=</span><span class="pln"> </span><span class="lit">32</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  523. scrollLeft</span><span class="pun">(</span><span class="kwd">string</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  524. </span><span class="pun">}</span><span class="pln">
  525. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">string</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="str">"end"</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  526. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="pln">ceil</span><span class="pun">((</span><span class="lit">16</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">11</span><span class="pun">)</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="lit">2</span><span class="pun">),</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
  527. lcd</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="str">"The workout"</span><span class="pun">);</span><span class="pln">
  528. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="pln">ceil</span><span class="pun">((</span><span class="lit">16</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">11</span><span class="pun">)</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="lit">2</span><span class="pun">),</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  529. lcd</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="str">"is finished"</span><span class="pun">);</span><span class="pln">
  530. </span><span class="pun">}</span><span class="pln">
  531. </span><span class="pun">}</span><span class="pln">
  532. </span><span class="com">//This micmics the function of the mini mp3 player, which plays a audio record of the name of the exercise.</span><span class="pln">
  533. </span><span class="kwd">void</span><span class="pln"> play_audio</span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> audio</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  534. </span><span class="kwd">while</span><span class="pln"> </span><span class="pun">(</span><span class="pln">millis</span><span class="pun">()</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> audioTimer </span><span class="pun"><</span><span class="pln"> AUDIOPERIOD</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  535. tone</span><span class="pun">(</span><span class="pln">SPEAKER1</span><span class="pun">,</span><span class="pln">audio</span><span class="pun">);</span><span class="pln">
  536. tone</span><span class="pun">(</span><span class="pln">SPEAKER2</span><span class="pun">,</span><span class="pln">audio</span><span class="pun">);</span><span class="pln">
  537. </span><span class="pun">}</span><span class="pln">
  538. noTone</span><span class="pun">(</span><span class="pln">SPEAKER1</span><span class="pun">);</span><span class="pln">
  539. noTone</span><span class="pun">(</span><span class="pln">SPEAKER2</span><span class="pun">);</span><span class="pln">
  540. </span><span class="pun">}</span><span class="pln">
  541. </span><span class="com">//Rolling the light on the Neopixel light strip as a reward when a exercise group is finished</span><span class="pln">
  542. </span><span class="kwd">void</span><span class="pln"> light_up_strip</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  543. </span><span class="kwd">while</span><span class="pln"> </span><span class="pun">(</span><span class="pln">millis</span><span class="pun">()</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> stripTimer </span><span class="pun"><</span><span class="pln"> STRIPPERIOD</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  544. </span><span class="kwd">int</span><span class="pln"> redColor </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">255</span><span class="pun">);</span><span class="pln">
  545. </span><span class="kwd">int</span><span class="pln"> greenColor </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="lit">255</span><span class="pun">);</span><span class="pln">
  546. </span><span class="kwd">int</span><span class="pln"> blueColor </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">255</span><span class="pun">);</span><span class="pln">
  547. </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i</span><span class="pun">=</span><span class="lit">0</span><span class="pun">;</span><span class="pln">i </span><span class="pun"><</span><span class="pln"> </span><span class="lit">6</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  548. strip</span><span class="pun">.</span><span class="pln">setPixelColor</span><span class="pun">(</span><span class="pln">i</span><span class="pun">,</span><span class="pln">strip</span><span class="pun">.</span><span class="typ">Color</span><span class="pun">(</span><span class="pln">redColor</span><span class="pun">,</span><span class="pln">greenColor</span><span class="pun">,</span><span class="pln">blueColor</span><span class="pun">));</span><span class="pln">
  549. </span><span class="pun">}</span><span class="pln">
  550. strip</span><span class="pun">.</span><span class="pln">show</span><span class="pun">();</span><span class="pln">
  551. </span><span class="pun">}</span><span class="pln">
  552. strip</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
  553. </span><span class="pun">}</span><span class="pln">
  554. </span><span class="com">//That function that put the custom characters onto the lcd</span><span class="pln">
  555. </span><span class="kwd">void</span><span class="pln"> robot_face</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> face</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  556. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">face </span><span class="pun">==</span><span class="pln"> </span><span class="str">"surprise"</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  557. </span><span class="com">//Create the custom characters</span><span class="pln">
  558. lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> SURPRISE_06</span><span class="pun">);</span><span class="pln">
  559. lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> SURPRISE_07</span><span class="pun">);</span><span class="pln">
  560. lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">2</span><span class="pun">,</span><span class="pln"> SURPRISE_08</span><span class="pun">);</span><span class="pln">
  561. lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">3</span><span class="pun">,</span><span class="pln"> SURPRISE_09</span><span class="pun">);</span><span class="pln">
  562. lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">4</span><span class="pun">,</span><span class="pln"> SURPRISE_16</span><span class="pun">);</span><span class="pln">
  563. lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">5</span><span class="pun">,</span><span class="pln"> SURPRISE_17</span><span class="pun">);</span><span class="pln">
  564. lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">6</span><span class="pun">,</span><span class="pln"> SURPRISE_18</span><span class="pun">);</span><span class="pln">
  565. lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">7</span><span class="pun">,</span><span class="pln"> SURPRISE_19</span><span class="pun">);</span><span class="pln">
  566. </span><span class="com">//write the characters to their places</span><span class="pln">
  567. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">6</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
  568. lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="kwd">byte</span><span class="pun">(</span><span class="lit">0</span><span class="pun">));</span><span class="pln">
  569. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">7</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
  570. lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  571. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">8</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
  572. lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">2</span><span class="pun">);</span><span class="pln">
  573. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">9</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
  574. lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">3</span><span class="pun">);</span><span class="pln">
  575. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">6</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  576. lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">4</span><span class="pun">);</span><span class="pln">
  577. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">7</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  578. lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">5</span><span class="pun">);</span><span class="pln">
  579. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">8</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  580. lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">6</span><span class="pun">);</span><span class="pln">
  581. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">9</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  582. lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">7</span><span class="pun">);</span><span class="pln">
  583. </span><span class="pun">}</span><span class="pln">
  584. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">face </span><span class="pun">==</span><span class="pln"> </span><span class="str">"smiley"</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  585. </span><span class="com">//Create the custom characters</span><span class="pln">
  586. lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> SMILE_04</span><span class="pun">);</span><span class="pln">
  587. lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> SMILE_05</span><span class="pun">);</span><span class="pln">
  588. lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">2</span><span class="pun">,</span><span class="pln"> SMILE_010</span><span class="pun">);</span><span class="pln">
  589. lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">3</span><span class="pun">,</span><span class="pln"> SMILE_011</span><span class="pun">);</span><span class="pln">
  590. lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">4</span><span class="pun">,</span><span class="pln"> SMILE_16</span><span class="pun">);</span><span class="pln">
  591. lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">5</span><span class="pun">,</span><span class="pln"> SMILE_17</span><span class="pun">);</span><span class="pln">
  592. lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">6</span><span class="pun">,</span><span class="pln"> SMILE_18</span><span class="pun">);</span><span class="pln">
  593. lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">7</span><span class="pun">,</span><span class="pln"> SMILE_19</span><span class="pun">);</span><span class="pln">
  594. </span><span class="com">//write the characters to their places</span><span class="pln">
  595. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">4</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
  596. lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="kwd">byte</span><span class="pun">(</span><span class="lit">0</span><span class="pun">));</span><span class="pln">
  597. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">5</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
  598. lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  599. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">10</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
  600. lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">2</span><span class="pun">);</span><span class="pln">
  601. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">11</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
  602. lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">3</span><span class="pun">);</span><span class="pln">
  603. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">6</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  604. lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">4</span><span class="pun">);</span><span class="pln">
  605. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">7</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  606. lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">5</span><span class="pun">);</span><span class="pln">
  607. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">8</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  608. lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">6</span><span class="pun">);</span><span class="pln">
  609. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">9</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  610. lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">7</span><span class="pun">);</span><span class="pln">
  611. </span><span class="pun">}</span><span class="pln">
  612. </span><span class="pun">}</span><span class="pln">
  613. </span><span class="com">//Simple function that turn the led on and off</span><span class="pln">
  614. </span><span class="kwd">void</span><span class="pln"> ledSwith</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> command</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  615. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">command </span><span class="pun">==</span><span class="pln"> </span><span class="str">"on"</span><span class="pun">){</span><span class="pln">
  616. digitalWrite</span><span class="pun">(</span><span class="pln">LED1</span><span class="pun">,</span><span class="pln">HIGH</span><span class="pun">);</span><span class="pln">
  617. digitalWrite</span><span class="pun">(</span><span class="pln">LED2</span><span class="pun">,</span><span class="pln">HIGH</span><span class="pun">);</span><span class="pln">
  618. </span><span class="pun">}</span><span class="pln">
  619. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">command </span><span class="pun">==</span><span class="pln"> </span><span class="str">"off"</span><span class="pun">){</span><span class="pln">
  620. digitalWrite</span><span class="pun">(</span><span class="pln">LED1</span><span class="pun">,</span><span class="pln">LOW</span><span class="pun">);</span><span class="pln">
  621. digitalWrite</span><span class="pun">(</span><span class="pln">LED2</span><span class="pun">,</span><span class="pln">LOW</span><span class="pun">);</span><span class="pln">
  622. </span><span class="pun">}</span><span class="pln">
  623. </span><span class="pun">}</span><span class="pln">
  624. </span><span class="com">//The function that determines what happens when the workout set is finished</span><span class="pln">
  625. </span><span class="kwd">void</span><span class="pln"> </span><span class="kwd">end</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  626. display_text</span><span class="pun">(</span><span class="str">"end"</span><span class="pun">);</span><span class="pln">
  627. delay</span><span class="pun">(</span><span class="lit">2000</span><span class="pun">);</span><span class="pln">
  628. lcd</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
  629. display_text</span><span class="pun">(</span><span class="str">"Great Job!"</span><span class="pun">);</span><span class="pln">
  630. delay</span><span class="pun">(</span><span class="lit">2000</span><span class="pun">);</span><span class="pln">
  631. lcd</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
  632. robot_face</span><span class="pun">(</span><span class="str">"smiley"</span><span class="pun">);</span><span class="pln">
  633. </span><span class="kwd">int</span><span class="pln"> redColor </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">255</span><span class="pun">);</span><span class="pln">
  634. </span><span class="kwd">int</span><span class="pln"> greenColor </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="lit">255</span><span class="pun">);</span><span class="pln">
  635. </span><span class="kwd">int</span><span class="pln"> blueColor </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">255</span><span class="pun">);</span><span class="pln">
  636. </span><span class="com">//The for loop rolls the lgiht on the LED light strip until the device is powered off</span><span class="pln">
  637. </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i</span><span class="pun">=</span><span class="lit">0</span><span class="pun">;</span><span class="pln">i </span><span class="pun"><</span><span class="pln"> </span><span class="lit">6</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  638. strip</span><span class="pun">.</span><span class="pln">setPixelColor</span><span class="pun">(</span><span class="pln">i</span><span class="pun">,</span><span class="pln">strip</span><span class="pun">.</span><span class="typ">Color</span><span class="pun">(</span><span class="pln">redColor</span><span class="pun">,</span><span class="pln">greenColor</span><span class="pun">,</span><span class="pln">blueColor</span><span class="pun">));</span><span class="pln">
  639. strip</span><span class="pun">.</span><span class="pln">show</span><span class="pun">();</span><span class="pln">
  640. delay</span><span class="pun">(</span><span class="lit">400</span><span class="pun">);</span><span class="pln">
  641. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">i</span><span class="pun">==</span><span class="lit">5</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  642. i </span><span class="pun">=</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pun">;</span><span class="pln">
  643. redColor </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">255</span><span class="pun">);</span><span class="pln">
  644. greenColor </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="lit">255</span><span class="pun">);</span><span class="pln">
  645. blueColor </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">255</span><span class="pun">);</span><span class="pln">
  646. </span><span class="pun">}</span><span class="pln">
  647. </span><span class="pun">}</span><span class="pln">
  648. </span><span class="pun">}</span><span class="pln">
  649. </span><span class="kwd">void</span><span class="pln"> show_exercise</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  650. </span><span class="com">//Displaying the name of the exercise by feeding the word to function display_text()</span><span class="pln">
  651. </span><span class="com">//If the selected workout set is set 1</span><span class="pln">
  652. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">row </span><span class="pun"><</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">1</span><span class="pun">])</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  653. row </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceSet1 </span><span class="pun">+</span><span class="pln"> rowIncrement</span><span class="pun">);</span><span class="pln">
  654. column </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceExercise </span><span class="pun">+</span><span class="pln"> columnIncrement</span><span class="pun">);</span><span class="pln">
  655. </span><span class="com">// columnIncrement in the if-statement should be set to the number of columns in each row</span><span class="pln">
  656. </span><span class="com">//The if statement checks if the exercise group is finished</span><span class="pln">
  657. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">exercise</span><span class="pun">[</span><span class="pln">row</span><span class="pun">][</span><span class="pln">column</span><span class="pun">]</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="str">"0"</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> columnIncrement </span><span class="pun">==</span><span class="pln"> </span><span class="lit">3</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  658. rowIncrement </span><span class="pun">=</span><span class="pln"> rowIncrement </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
  659. columnIncrement </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  660. row </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceSet1 </span><span class="pun">+</span><span class="pln"> rowIncrement</span><span class="pun">);</span><span class="pln">
  661. column </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceExercise </span><span class="pun">+</span><span class="pln"> columnIncrement</span><span class="pun">);</span><span class="pln">
  662. ledSwith</span><span class="pun">(</span><span class="str">"on"</span><span class="pun">);</span><span class="pln">
  663. robot_face</span><span class="pun">(</span><span class="str">"surprise"</span><span class="pun">);</span><span class="pln">
  664. light_up_strip</span><span class="pun">();</span><span class="pln">
  665. lcd</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
  666. ledSwith</span><span class="pun">(</span><span class="str">"off"</span><span class="pun">);</span><span class="pln">
  667. audioTimer </span><span class="pun">=</span><span class="pln"> millis</span><span class="pun">();</span><span class="pln">
  668. </span><span class="com">//to check if the set is finished</span><span class="pln">
  669. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">rowIncrement </span><span class="pun">==</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">1</span><span class="pun">])</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  670. </span><span class="kwd">end</span><span class="pun">();</span><span class="pln">
  671. </span><span class="pun">}</span><span class="pln">
  672. </span><span class="pun">}</span><span class="pln">
  673. display_text</span><span class="pun">(</span><span class="pln">exercise</span><span class="pun">[</span><span class="pln">row</span><span class="pun">][</span><span class="pln">column</span><span class="pun">]);</span><span class="pln">
  674. play_audio</span><span class="pun">(</span><span class="pln">exercise_audio</span><span class="pun">[</span><span class="pln">row</span><span class="pun">][</span><span class="pln">column</span><span class="pun">]);</span><span class="pln">
  675. </span><span class="pun">}</span><span class="pln">
  676. </span><span class="com">//If the selected workout set is set 2</span><span class="pln">
  677. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">row </span><span class="pun">>=</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]</span><span class="pln"> </span><span class="pun">&&</span><span class="pln"> row </span><span class="pun"><</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">2</span><span class="pun">])</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  678. row </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceSet2 </span><span class="pun">+</span><span class="pln"> rowIncrement</span><span class="pun">);</span><span class="pln">
  679. column </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceExercise </span><span class="pun">+</span><span class="pln"> columnIncrement</span><span class="pun">);</span><span class="pln">
  680. </span><span class="com">// columnIncrement in the if-statement should be set to the number of columns in each row</span><span class="pln">
  681. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">exercise</span><span class="pun">[</span><span class="pln">row</span><span class="pun">][</span><span class="pln">column</span><span class="pun">]</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="str">"0"</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> columnIncrement </span><span class="pun">==</span><span class="pln"> </span><span class="lit">3</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  682. rowIncrement </span><span class="pun">=</span><span class="pln"> rowIncrement </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
  683. columnIncrement </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  684. row </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceSet2 </span><span class="pun">+</span><span class="pln"> rowIncrement</span><span class="pun">);</span><span class="pln">
  685. column </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceExercise </span><span class="pun">+</span><span class="pln"> columnIncrement</span><span class="pun">);</span><span class="pln">
  686. ledSwith</span><span class="pun">(</span><span class="str">"on"</span><span class="pun">);</span><span class="pln">
  687. robot_face</span><span class="pun">(</span><span class="str">"surprise"</span><span class="pun">);</span><span class="pln">
  688. light_up_strip</span><span class="pun">();</span><span class="pln">
  689. lcd</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
  690. ledSwith</span><span class="pun">(</span><span class="str">"off"</span><span class="pun">);</span><span class="pln">
  691. audioTimer </span><span class="pun">=</span><span class="pln"> millis</span><span class="pun">();</span><span class="pln">
  692. </span><span class="com">//to check if the set is finished</span><span class="pln">
  693. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">rowIncrement </span><span class="pun">==</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">1</span><span class="pun">])</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  694. </span><span class="kwd">end</span><span class="pun">();</span><span class="pln">
  695. </span><span class="pun">}</span><span class="pln">
  696. </span><span class="pun">}</span><span class="pln">
  697. display_text</span><span class="pun">(</span><span class="pln">exercise</span><span class="pun">[</span><span class="pln">row</span><span class="pun">][</span><span class="pln">column</span><span class="pun">]);</span><span class="pln">
  698. play_audio</span><span class="pun">(</span><span class="pln">exercise_audio</span><span class="pun">[</span><span class="pln">row</span><span class="pun">][</span><span class="pln">column</span><span class="pun">]);</span><span class="pln">
  699. </span><span class="pun">}</span><span class="pln">
  700. </span><span class="com">//If the selected workout set is set 3</span><span class="pln">
  701. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">row </span><span class="pun">>=</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">&&</span><span class="pln"> row </span><span class="pun"><</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">3</span><span class="pun">])</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  702. row </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceSet3 </span><span class="pun">+</span><span class="pln"> rowIncrement</span><span class="pun">);</span><span class="pln">
  703. column </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceExercise </span><span class="pun">+</span><span class="pln"> columnIncrement</span><span class="pun">);</span><span class="pln">
  704. </span><span class="com">// columnIncrement in the if-statement should be set to the number of columns in each row</span><span class="pln">
  705. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">exercise</span><span class="pun">[</span><span class="pln">row</span><span class="pun">][</span><span class="pln">column</span><span class="pun">]</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="str">"0"</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> columnIncrement </span><span class="pun">==</span><span class="pln"> </span><span class="lit">3</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  706. rowIncrement </span><span class="pun">=</span><span class="pln"> rowIncrement </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
  707. columnIncrement </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  708. row </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceSet3 </span><span class="pun">+</span><span class="pln"> rowIncrement</span><span class="pun">);</span><span class="pln">
  709. column </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceExercise </span><span class="pun">+</span><span class="pln"> columnIncrement</span><span class="pun">);</span><span class="pln">
  710. robot_face</span><span class="pun">(</span><span class="str">"surprise"</span><span class="pun">);</span><span class="pln">
  711. ledSwith</span><span class="pun">(</span><span class="str">"on"</span><span class="pun">);</span><span class="pln">
  712. light_up_strip</span><span class="pun">();</span><span class="pln">
  713. lcd</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
  714. ledSwith</span><span class="pun">(</span><span class="str">"off"</span><span class="pun">);</span><span class="pln">
  715. audioTimer </span><span class="pun">=</span><span class="pln"> millis</span><span class="pun">();</span><span class="pln">
  716. </span><span class="com">//to check if the set is finished</span><span class="pln">
  717. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">rowIncrement </span><span class="pun">==</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">3</span><span class="pun">]</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">2</span><span class="pun">])</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  718. </span><span class="kwd">end</span><span class="pun">();</span><span class="pln">
  719. </span><span class="pun">}</span><span class="pln">
  720. </span><span class="pun">}</span><span class="pln">
  721. display_text</span><span class="pun">(</span><span class="pln">exercise</span><span class="pun">[</span><span class="pln">row</span><span class="pun">][</span><span class="pln">column</span><span class="pun">]);</span><span class="pln">
  722. play_audio</span><span class="pun">(</span><span class="pln">exercise_audio</span><span class="pun">[</span><span class="pln">row</span><span class="pun">][</span><span class="pln">column</span><span class="pun">]);</span><span class="pln">
  723. </span><span class="pun">}</span><span class="pln">
  724. </span><span class="pun">}</span><span class="pln">
  725. </span><span class="com">//This funtion controls the neopixel strip to show the progress through the set</span><span class="pln">
  726. </span><span class="kwd">void</span><span class="pln"> show_progress</span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> num_of_groups</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  727. </span><span class="kwd">int</span><span class="pln"> lightedPixel </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">rowIncrement</span><span class="pun">*</span><span class="lit">6</span><span class="pun">)/</span><span class="pln">num_of_groups</span><span class="pun">;</span><span class="pln">
  728. </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i</span><span class="pun">=</span><span class="lit">0</span><span class="pun">;</span><span class="pln">i </span><span class="pun"><</span><span class="pln"> lightedPixel</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  729. strip</span><span class="pun">.</span><span class="pln">setPixelColor</span><span class="pun">(</span><span class="pln">i</span><span class="pun">,</span><span class="pln">deep_sky_blue</span><span class="pun">);</span><span class="pln">
  730. </span><span class="pun">}</span><span class="pln">
  731. strip</span><span class="pun">.</span><span class="pln">show</span><span class="pun">();</span><span class="pln">
  732. </span><span class="pun">}</span><span class="pln">
  733. </span><span class="kwd">void</span><span class="pln"> setup</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  734. </span><span class="com">// Setting up the pins</span><span class="pln">
  735. pinMode</span><span class="pun">(</span><span class="pln">ROTARY_BUTTON</span><span class="pun">,</span><span class="pln"> INPUT_PULLUP</span><span class="pun">);</span><span class="pln">
  736. pinMode</span><span class="pun">(</span><span class="pln">ROTARY_TURNER</span><span class="pun">,</span><span class="pln"> INPUT</span><span class="pun">);</span><span class="pln">
  737. pinMode</span><span class="pun">(</span><span class="pln">SPEAKER1</span><span class="pun">,</span><span class="pln"> OUTPUT</span><span class="pun">);</span><span class="pln">
  738. pinMode</span><span class="pun">(</span><span class="pln">SPEAKER2</span><span class="pun">,</span><span class="pln"> OUTPUT</span><span class="pun">);</span><span class="pln">
  739. pinMode</span><span class="pun">(</span><span class="pln">MICROPHONE</span><span class="pun">,</span><span class="pln">INPUT_PULLUP</span><span class="pun">);</span><span class="pln">
  740. pinMode</span><span class="pun">(</span><span class="pln">LED1</span><span class="pun">,</span><span class="pln"> OUTPUT</span><span class="pun">);</span><span class="pln">
  741. pinMode</span><span class="pun">(</span><span class="pln">LED2</span><span class="pun">,</span><span class="pln"> OUTPUT</span><span class="pun">);</span><span class="pln">
  742. </span><span class="com">//Setting up for the lcd screen</span><span class="pln">
  743. lcd</span><span class="pun">.</span><span class="kwd">begin</span><span class="pun">(</span><span class="lit">16</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">);</span><span class="pln">
  744. lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">2</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
  745. lcd</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="str">"Lets Exercise!"</span><span class="pun">);</span><span class="pln">
  746. delay</span><span class="pun">(</span><span class="lit">1500</span><span class="pun">);</span><span class="pln">
  747. lcd</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
  748. </span><span class="com">//Initiate the Neopixel Strip</span><span class="pln">
  749. strip</span><span class="pun">.</span><span class="kwd">begin</span><span class="pun">();</span><span class="pln">
  750. strip</span><span class="pun">.</span><span class="pln">show</span><span class="pun">();</span><span class="pln">
  751. </span><span class="com">//Initiate Serial Print</span><span class="pln">
  752. </span><span class="typ">Serial</span><span class="pun">.</span><span class="kwd">begin</span><span class="pun">(</span><span class="lit">9600</span><span class="pun">);</span><span class="pln">
  753. </span><span class="pun">}</span><span class="pln">
  754. </span><span class="kwd">void</span><span class="pln"> loop</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  755. </span><span class="kwd">while</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">select</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  756. select_set</span><span class="pun">();</span><span class="pln">
  757. </span><span class="com">//Timer to make the chosen workout set "flash" </span><span class="pln">
  758. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">millis</span><span class="pun">()</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> selectingTimer </span><span class="pun">></span><span class="pln"> SELECTINGFRE</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  759. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">on_off </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  760. on_off </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  761. </span><span class="pun">}</span><span class="pln">
  762. </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  763. on_off </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
  764. </span><span class="pun">}</span><span class="pln">
  765. selectingTimer </span><span class="pun">=</span><span class="pln"> millis</span><span class="pun">();</span><span class="pln">
  766. </span><span class="pun">}</span><span class="pln">
  767. </span><span class="pun">}</span><span class="pln">
  768. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">millis</span><span class="pun">()</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> microphoneTimer </span><span class="pun">></span><span class="pln"> MICROPHONEFRE</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  769. </span><span class="kwd">int</span><span class="pln"> buttonState </span><span class="pun">=</span><span class="pln"> digitalRead</span><span class="pun">(</span><span class="pln">MICROPHONE</span><span class="pun">);</span><span class="pln">
  770. </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">buttonState </span><span class="pun">==</span><span class="pln"> LOW</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  771. audioTimer </span><span class="pun">=</span><span class="pln"> millis</span><span class="pun">();</span><span class="pln">
  772. stripTimer </span><span class="pun">=</span><span class="pln"> millis</span><span class="pun">();</span><span class="pln">
  773. columnIncrement </span><span class="pun">=</span><span class="pln"> columnIncrement </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
  774. lcd</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
  775. </span><span class="pun">}</span><span class="pln">
  776. microphoneTimer </span><span class="pun">=</span><span class="pln"> millis</span><span class="pun">();</span><span class="pln">
  777. </span><span class="pun">}</span><span class="pln">
  778. show_exercise</span><span class="pun">();</span><span class="pln">
  779. show_progress</span><span class="pun">(</span><span class="pln">num_of_groups</span><span class="pun">);</span><span class="pln">
  780. </span><span class="pun">}</span>
<span class="com">/*Exercise Companion
 * Zerui Huo
 * The code makes a robot-shaped device show the exericise names through the selected workout set. It goes to the next execise when it detects sound that has volume
   over the threshold. It also shows reward when the user finishes a group of exercises or the whole set. A newpixel strip shows the progress through the workout.

 *Pin mapping:
  
     pin   | mode   | description
     ------|--------|------------
     6      INPUT     This pin represents the press button on a rotary encoder.
     7      OUTPUT    The pin that controls the Neopixel ligt strip/stick
     8      INPUT     The pin that connects to the microphone that sense any audio input from the user.
     10     OUTPUT    The pin that controls one of the two speakers.
     13     OUTPUT    The pin that controls one of the two speakers.
     A0     INPUT     The pin that represents the rotary turner on the a rotary encoder.
     A3     OUTPUT    Used as digital pin to control LEDS light.
     A4     OUTPUT    Used as digital pin to control LEDS light.
     VCC              The pin for power to go into the Arduino pro mini.Connected to a 9V battery.
     

 *Credit to example codes or reference:
  *The code that generates the custom characters in LCD is written in the help of the website https://maxpromer.github.io/LCD-Character-Creator/.
  *The code for the neopixel light strip is written by refering to the information in the website https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-use. It is a turtorial on how to use the neopixel library.
  

 *Note: In each workout set, exercises requiring similar pose are put into groups. Tree pose, for example, is grouped with other yoga exericise with standing pose.
        The workout sets always have the same groups of exercises,but the sequence of the groups is randomized every time. In addition, the sequence for exerices in
        each group is also randomized.
*/</span><span class="pln">


</span><span class="com">//Included the needed Libraries</span><span class="pln">
</span><span class="com">#include</span><span class="pln"> </span><span class="str"><Wire.h></span><span class="pln">
</span><span class="com">#include</span><span class="pln"> </span><span class="str"><LiquidCrystal.h></span><span class="pln">
</span><span class="com">#include</span><span class="pln"> </span><span class="str"><Adafruit_NeoPixel.h></span><span class="pln">

</span><span class="com">//Defining the "audio files" for the exerice names</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_C3  </span><span class="lit">131</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_CS3 </span><span class="lit">139</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_D3  </span><span class="lit">147</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_DS3 </span><span class="lit">156</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_E3  </span><span class="lit">165</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_F3  </span><span class="lit">175</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_FS3 </span><span class="lit">185</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_G3  </span><span class="lit">196</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_GS3 </span><span class="lit">208</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_A3  </span><span class="lit">220</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_AS3 </span><span class="lit">233</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_B3  </span><span class="lit">247</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_C4  </span><span class="lit">262</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_CS4 </span><span class="lit">277</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_D4  </span><span class="lit">294</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_DS4 </span><span class="lit">311</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_E4  </span><span class="lit">330</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_F4  </span><span class="lit">349</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_FS4 </span><span class="lit">370</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_G4  </span><span class="lit">392</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_GS4 </span><span class="lit">415</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_A4  </span><span class="lit">440</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_AS4 </span><span class="lit">466</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_B4  </span><span class="lit">494</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_C5  </span><span class="lit">523</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_CS5 </span><span class="lit">554</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_D5  </span><span class="lit">587</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_DS5 </span><span class="lit">622</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_E5  </span><span class="lit">659</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_F5  </span><span class="lit">698</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_FS5 </span><span class="lit">740</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_G5  </span><span class="lit">784</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_GS5 </span><span class="lit">831</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_A5  </span><span class="lit">880</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_AS5 </span><span class="lit">932</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_B5  </span><span class="lit">988</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_C6  </span><span class="lit">1047</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_CS6 </span><span class="lit">1109</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_D6  </span><span class="lit">1175</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_DS6 </span><span class="lit">1245</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_E6  </span><span class="lit">1319</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_F6  </span><span class="lit">1397</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_FS6 </span><span class="lit">1480</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_G6  </span><span class="lit">1568</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_GS6 </span><span class="lit">1661</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_A6  </span><span class="lit">1760</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_AS6 </span><span class="lit">1865</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_B6  </span><span class="lit">1976</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_C7  </span><span class="lit">2093</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_CS7 </span><span class="lit">2217</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_D7  </span><span class="lit">2349</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_DS7 </span><span class="lit">2489</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_E7  </span><span class="lit">2637</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_F7  </span><span class="lit">2794</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_FS7 </span><span class="lit">2960</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_G7  </span><span class="lit">3136</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_GS7 </span><span class="lit">3322</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_A7  </span><span class="lit">3520</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_AS7 </span><span class="lit">3729</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_B7  </span><span class="lit">3951</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_C8  </span><span class="lit">4186</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_CS8 </span><span class="lit">4435</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_D8  </span><span class="lit">4699</span><span class="pln">
</span><span class="com">#define</span><span class="pln"> NOTE_DS8 </span><span class="lit">4978</span><span class="pln">



</span><span class="com">//Naming all the pins according to stimulation in TinkerCad</span><span class="pln">
</span><span class="com">//Remember to change the pin according to your wiring</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> ROTARY_BUTTON </span><span class="pun">=</span><span class="pln"> </span><span class="lit">6</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> ROTARY_TURNER </span><span class="pun">=</span><span class="pln"> A0</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> MICROPHONE </span><span class="pun">=</span><span class="pln"> </span><span class="lit">8</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> SPEAKER1 </span><span class="pun">=</span><span class="pln"> </span><span class="lit">10</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> SPEAKER2 </span><span class="pun">=</span><span class="pln"> </span><span class="lit">13</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> NEOPIXELSTRIP </span><span class="pun">=</span><span class="pln"> </span><span class="lit">7</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> LED1 </span><span class="pun">=</span><span class="pln"> A3</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> LED2 </span><span class="pun">=</span><span class="pln"> A4</span><span class="pun">;</span><span class="pln">

</span><span class="com">//Setting the constant ints. Fre stands for the frequency to check a specific timer. Period is the period for some events to last.</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> LED_COUNT </span><span class="pun">=</span><span class="pln"> </span><span class="lit">6</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> SELECTINGFRE </span><span class="pun">=</span><span class="pln"> </span><span class="lit">100</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> MICROPHONEFRE </span><span class="pun">=</span><span class="pln"> </span><span class="lit">20</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> AUDIOPERIOD </span><span class="pun">=</span><span class="pln"> </span><span class="lit">60</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> STRIPPERIOD </span><span class="pun">=</span><span class="pln"> </span><span class="lit">100</span><span class="pun">;</span><span class="pln">

</span><span class="com">//Global varibales that change</span><span class="pln">
</span><span class="com">//Timers for "run without block"</span><span class="pln">
</span><span class="kwd">unsigned</span><span class="pln"> </span><span class="kwd">long</span><span class="pln"> selectingTimer </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">unsigned</span><span class="pln"> </span><span class="kwd">long</span><span class="pln"> microphoneTimer </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">unsigned</span><span class="pln"> </span><span class="kwd">long</span><span class="pln"> audioTimer </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">unsigned</span><span class="pln"> </span><span class="kwd">long</span><span class="pln"> stripTimer </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">

</span><span class="kwd">int</span><span class="pln"> on_off </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> </span><span class="kwd">select</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> cursor </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> row</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> column </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> rowIncrement </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> columnIncrement </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> num_of_groups</span><span class="pun">;</span><span class="pln">

</span><span class="com">//Lists that store informations</span><span class="pln">
</span><span class="com">//The set names</span><span class="pln">
</span><span class="typ">String</span><span class="pln"> sets</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="str">"Yoga Set"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Weights"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Aerobics"</span><span class="pun">};</span><span class="pln">

</span><span class="com">//The list that tells the row number that a set starts and ends</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> set_row</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">};</span><span class="pln">

</span><span class="com">//Example workout sets. The "0" represents a null, and the device will go to the next group of exercises in the set.</span><span class="pln">
</span><span class="typ">String</span><span class="pln"> exercise</span><span class="pun">[][</span><span class="lit">3</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="pun">{</span><span class="str">"Jumping Jack Jumping Jack Jumping Jack"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Cobbler Pose"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Abdominal Plank"</span><span class="pun">},</span><span class="pln">
  </span><span class="pun">{</span><span class="str">"hee"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"ha"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"yo"</span><span class="pun">},</span><span class="pln">
  </span><span class="pun">{</span><span class="str">"Tree Pose"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"dance"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Upward Facing Dog"</span><span class="pun">},</span><span class="pln">
  </span><span class="pun">{</span><span class="str">"Cat-cow"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Knee-to-chest"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"0"</span><span class="pun">},</span><span class="pln">
  </span><span class="pun">{</span><span class="str">"Knees-to-chest"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Hip flexor"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Torso rotation"</span><span class="pun">},</span><span class="pln">
  </span><span class="pun">{</span><span class="str">"Tree pose"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Full body"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Child's Pose"</span><span class="pun">},</span><span class="pln">
  </span><span class="pun">{</span><span class="str">"Cat-cow"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Crescent warrior"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"0"</span><span class="pun">},</span><span class="pln">
  </span><span class="pun">{</span><span class="str">"Ab plank"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Cobbler Pose"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"0"</span><span class="pun">},</span><span class="pln">
</span><span class="pun">};</span><span class="pln">

</span><span class="com">//Micmic the SD card that stores the audio files of the names of the exercise</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> exercise_audio</span><span class="pun">[][</span><span class="lit">3</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="pun">{</span><span class="pln">NOTE_C3</span><span class="pun">,</span><span class="pln"> NOTE_D3</span><span class="pun">,</span><span class="pln"> NOTE_E3</span><span class="pun">},</span><span class="pln">
  </span><span class="pun">{</span><span class="pln">NOTE_F3</span><span class="pun">,</span><span class="pln"> NOTE_G3</span><span class="pun">,</span><span class="pln"> NOTE_A3</span><span class="pun">},</span><span class="pln">
  </span><span class="pun">{</span><span class="pln">NOTE_B3</span><span class="pun">,</span><span class="pln"> NOTE_C4</span><span class="pun">,</span><span class="pln">  NOTE_D4</span><span class="pun">},</span><span class="pln">
  </span><span class="pun">{</span><span class="pln">NOTE_E4</span><span class="pun">,</span><span class="pln"> NOTE_F4</span><span class="pun">,</span><span class="pln"> NOTE_F5</span><span class="pun">},</span><span class="pln">
  </span><span class="pun">{</span><span class="pln">NOTE_G4</span><span class="pun">,</span><span class="pln"> NOTE_A4</span><span class="pun">,</span><span class="pln">NOTE_B4</span><span class="pun">},</span><span class="pln">
  </span><span class="pun">{</span><span class="pln">NOTE_C5</span><span class="pun">,</span><span class="pln"> NOTE_D5</span><span class="pun">,</span><span class="pln"> NOTE_E5</span><span class="pun">},</span><span class="pln">
  </span><span class="pun">{</span><span class="pln">NOTE_F5</span><span class="pun">,</span><span class="pln"> NOTE_G5</span><span class="pun">,</span><span class="pln">  NOTE_A5</span><span class="pun">},</span><span class="pln">
  </span><span class="pun">{</span><span class="pln">NOTE_B5</span><span class="pun">,</span><span class="pln"> NOTE_C6</span><span class="pun">,</span><span class="pln"> NOTE_D6</span><span class="pun">},</span><span class="pln">
</span><span class="pun">};</span><span class="pln">

</span><span class="com">//Creating the custom characters for the "face" of the robot</span><span class="pln">
</span><span class="com">//surprise face</span><span class="pln">
</span><span class="kwd">byte</span><span class="pln"> SURPRISE_06</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00001</span><span class="pun">,</span><span class="pln">
  B00010</span><span class="pun">,</span><span class="pln">
  B00100</span><span class="pun">,</span><span class="pln">
  B01000</span><span class="pun">,</span><span class="pln">
  B01000</span><span class="pun">,</span><span class="pln">
  B01000</span><span class="pun">,</span><span class="pln">
  B01000
</span><span class="pun">};</span><span class="pln">

</span><span class="kwd">byte</span><span class="pln"> SURPRISE_07</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  B01111</span><span class="pun">,</span><span class="pln">
  B10000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000
</span><span class="pun">};</span><span class="pln">

</span><span class="kwd">byte</span><span class="pln"> SURPRISE_08</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  B11110</span><span class="pun">,</span><span class="pln">
  B00001</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000
</span><span class="pun">};</span><span class="pln">

</span><span class="kwd">byte</span><span class="pln"> SURPRISE_09</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B10000</span><span class="pun">,</span><span class="pln">
  B01000</span><span class="pun">,</span><span class="pln">
  B00100</span><span class="pun">,</span><span class="pln">
  B00010</span><span class="pun">,</span><span class="pln">
  B00010</span><span class="pun">,</span><span class="pln">
  B00010</span><span class="pun">,</span><span class="pln">
  B00010
</span><span class="pun">};</span><span class="pln">

</span><span class="kwd">byte</span><span class="pln"> SURPRISE_16</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  B01000</span><span class="pun">,</span><span class="pln">
  B01000</span><span class="pun">,</span><span class="pln">
  B01000</span><span class="pun">,</span><span class="pln">
  B01000</span><span class="pun">,</span><span class="pln">
  B00100</span><span class="pun">,</span><span class="pln">
  B00010</span><span class="pun">,</span><span class="pln">
  B00001</span><span class="pun">,</span><span class="pln">
  B00000
</span><span class="pun">};</span><span class="pln">


</span><span class="kwd">byte</span><span class="pln"> SURPRISE_17</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B10000</span><span class="pun">,</span><span class="pln">
  B01111
</span><span class="pun">};</span><span class="pln">

</span><span class="kwd">byte</span><span class="pln"> SURPRISE_18</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00001</span><span class="pun">,</span><span class="pln">
  B11110
</span><span class="pun">};</span><span class="pln">

</span><span class="kwd">byte</span><span class="pln"> SURPRISE_19</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  B00010</span><span class="pun">,</span><span class="pln">
  B00010</span><span class="pun">,</span><span class="pln">
  B00010</span><span class="pun">,</span><span class="pln">
  B00010</span><span class="pun">,</span><span class="pln">
  B00100</span><span class="pun">,</span><span class="pln">
  B01000</span><span class="pun">,</span><span class="pln">
  B10000</span><span class="pun">,</span><span class="pln">
  B00000
</span><span class="pun">};</span><span class="pln">

</span><span class="com">//smiley face</span><span class="pln">
</span><span class="kwd">byte</span><span class="pln"> SMILE_04</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00001</span><span class="pun">,</span><span class="pln">
  B00010</span><span class="pun">,</span><span class="pln">
  B00100
</span><span class="pun">};</span><span class="pln">

</span><span class="kwd">byte</span><span class="pln"> SMILE_05</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B01000</span><span class="pun">,</span><span class="pln">
  B11000</span><span class="pun">,</span><span class="pln">
  B00100</span><span class="pun">,</span><span class="pln">
  B00010</span><span class="pun">,</span><span class="pln">
  B00001
</span><span class="pun">};</span><span class="pln">


</span><span class="kwd">byte</span><span class="pln"> SMILE_010</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00010</span><span class="pun">,</span><span class="pln">
  B00010</span><span class="pun">,</span><span class="pln">
  B00101</span><span class="pun">,</span><span class="pln">
  B01000</span><span class="pun">,</span><span class="pln">
  B10000
</span><span class="pun">};</span><span class="pln">

</span><span class="kwd">byte</span><span class="pln"> SMILE_011</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B10000</span><span class="pun">,</span><span class="pln">
  B01000
</span><span class="pun">};</span><span class="pln">

</span><span class="kwd">byte</span><span class="pln"> SMILE_16</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  B10000</span><span class="pun">,</span><span class="pln">
  B01000</span><span class="pun">,</span><span class="pln">
  B00100</span><span class="pun">,</span><span class="pln">
  B00010</span><span class="pun">,</span><span class="pln">
  B00001</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000
</span><span class="pun">};</span><span class="pln">

</span><span class="kwd">byte</span><span class="pln"> SMILE_17</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B10000</span><span class="pun">,</span><span class="pln">
  B01111</span><span class="pun">,</span><span class="pln">
  B00000
</span><span class="pun">};</span><span class="pln">

</span><span class="kwd">byte</span><span class="pln">  SMILE_18</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00001</span><span class="pun">,</span><span class="pln">
  B11110</span><span class="pun">,</span><span class="pln">
  B00000
</span><span class="pun">};</span><span class="pln">


</span><span class="kwd">byte</span><span class="pln"> SMILE_19</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  B00001</span><span class="pun">,</span><span class="pln">
  B00010</span><span class="pun">,</span><span class="pln">
  B00100</span><span class="pun">,</span><span class="pln">
  B01000</span><span class="pun">,</span><span class="pln">
  B10000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000</span><span class="pun">,</span><span class="pln">
  B00000
</span><span class="pun">};</span><span class="pln">




</span><span class="com">// generating a random sequence for exerices in each exercise group</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> generate_randnumb_exercise</span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> min</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> length</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> rando</span><span class="pun">[</span><span class="lit">10</span><span class="pun">];</span><span class="pln">
  </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> min</span><span class="pun">;</span><span class="pln"> i </span><span class="pun"><</span><span class="pln"> min </span><span class="pun">+</span><span class="pln"> length</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    rando</span><span class="pun">[</span><span class="pln">i </span><span class="pun">-</span><span class="pln"> min</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> i</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">



  randomSeed</span><span class="pun">(</span><span class="pln">digitalRead</span><span class="pun">(</span><span class="pln">A5</span><span class="pun">));</span><span class="pln">
  </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun"><</span><span class="pln"> </span><span class="lit">200</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">int</span><span class="pln"> rand1</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">int</span><span class="pln"> rand2</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">int</span><span class="pln"> old_rand1</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">int</span><span class="pln"> old_rand2</span><span class="pun">;</span><span class="pln">
    rand1 </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> length </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
    rand2 </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> length </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
    old_rand1 </span><span class="pun">=</span><span class="pln"> rando</span><span class="pun">[</span><span class="pln">rand1</span><span class="pun">];</span><span class="pln">
    old_rand2 </span><span class="pun">=</span><span class="pln"> rando</span><span class="pun">[</span><span class="pln">rand2</span><span class="pun">];</span><span class="pln">
    rando</span><span class="pun">[</span><span class="pln">rand1</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> old_rand2</span><span class="pun">;</span><span class="pln">
    rando</span><span class="pun">[</span><span class="pln">rand2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> old_rand1</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="kwd">return</span><span class="pln"> rando</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">// generating a random sequence for exerice group in set1</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> generate_randnumb_set1</span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> min</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> length</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> rando2</span><span class="pun">[</span><span class="lit">10</span><span class="pun">];</span><span class="pln">
  </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> min</span><span class="pun">;</span><span class="pln"> i </span><span class="pun"><</span><span class="pln"> min </span><span class="pun">+</span><span class="pln"> length</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    rando2</span><span class="pun">[</span><span class="pln">i </span><span class="pun">-</span><span class="pln"> min</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> i</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">


  randomSeed</span><span class="pun">(</span><span class="pln">digitalRead</span><span class="pun">(</span><span class="pln">A5</span><span class="pun">));</span><span class="pln">
  </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun"><</span><span class="pln"> </span><span class="lit">200</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">int</span><span class="pln"> rand1</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">int</span><span class="pln"> rand2</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">int</span><span class="pln"> old_rand1</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">int</span><span class="pln"> old_rand2</span><span class="pun">;</span><span class="pln">
    rand1 </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> length </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
    rand2 </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> length </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
    old_rand1 </span><span class="pun">=</span><span class="pln"> rando2</span><span class="pun">[</span><span class="pln">rand1</span><span class="pun">];</span><span class="pln">
    old_rand2 </span><span class="pun">=</span><span class="pln"> rando2</span><span class="pun">[</span><span class="pln">rand2</span><span class="pun">];</span><span class="pln">
    rando2</span><span class="pun">[</span><span class="pln">rand1</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> old_rand2</span><span class="pun">;</span><span class="pln">
    rando2</span><span class="pun">[</span><span class="pln">rand2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> old_rand1</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="kwd">return</span><span class="pln"> rando2</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">


</span><span class="com">// generating a random sequence for exerice group in set2</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> generate_randnumb_set2</span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> min</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> length</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> rando3</span><span class="pun">[</span><span class="lit">10</span><span class="pun">];</span><span class="pln">
  </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> min</span><span class="pun">;</span><span class="pln"> i </span><span class="pun"><</span><span class="pln"> min </span><span class="pun">+</span><span class="pln"> length</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    rando3</span><span class="pun">[</span><span class="pln">i </span><span class="pun">-</span><span class="pln"> min</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> i</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">



  randomSeed</span><span class="pun">(</span><span class="pln">digitalRead</span><span class="pun">(</span><span class="pln">A5</span><span class="pun">));</span><span class="pln">
  </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun"><</span><span class="pln"> </span><span class="lit">200</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">int</span><span class="pln"> rand1</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">int</span><span class="pln"> rand2</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">int</span><span class="pln"> old_rand1</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">int</span><span class="pln"> old_rand2</span><span class="pun">;</span><span class="pln">
    rand1 </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> length </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
    rand2 </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> length </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
    old_rand1 </span><span class="pun">=</span><span class="pln"> rando3</span><span class="pun">[</span><span class="pln">rand1</span><span class="pun">];</span><span class="pln">
    old_rand2 </span><span class="pun">=</span><span class="pln"> rando3</span><span class="pun">[</span><span class="pln">rand2</span><span class="pun">];</span><span class="pln">
    rando3</span><span class="pun">[</span><span class="pln">rand1</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> old_rand2</span><span class="pun">;</span><span class="pln">
    rando3</span><span class="pun">[</span><span class="pln">rand2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> old_rand1</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="kwd">return</span><span class="pln"> rando3</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">


</span><span class="com">// generating a random sequence for exerice group in set3</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> generate_randnumb_set3</span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> min</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> length</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> rando4</span><span class="pun">[</span><span class="lit">10</span><span class="pun">];</span><span class="pln">
  </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> min</span><span class="pun">;</span><span class="pln"> i </span><span class="pun"><</span><span class="pln"> min </span><span class="pun">+</span><span class="pln"> length</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    rando4</span><span class="pun">[</span><span class="pln">i </span><span class="pun">-</span><span class="pln"> min</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> i</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">



  randomSeed</span><span class="pun">(</span><span class="pln">digitalRead</span><span class="pun">(</span><span class="pln">A5</span><span class="pun">));</span><span class="pln">
  </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun"><</span><span class="pln"> </span><span class="lit">200</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">int</span><span class="pln"> rand1</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">int</span><span class="pln"> rand2</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">int</span><span class="pln"> old_rand1</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">int</span><span class="pln"> old_rand2</span><span class="pun">;</span><span class="pln">
    rand1 </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> length </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
    rand2 </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> length </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
    old_rand1 </span><span class="pun">=</span><span class="pln"> rando4</span><span class="pun">[</span><span class="pln">rand1</span><span class="pun">];</span><span class="pln">
    old_rand2 </span><span class="pun">=</span><span class="pln"> rando4</span><span class="pun">[</span><span class="pln">rand2</span><span class="pun">];</span><span class="pln">
    rando4</span><span class="pun">[</span><span class="pln">rand1</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> old_rand2</span><span class="pun">;</span><span class="pln">
    rando4</span><span class="pun">[</span><span class="pln">rand2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> old_rand1</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="kwd">return</span><span class="pln"> rando4</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">//Pointers that refers to the sequence of exercise/exercise groups</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> </span><span class="pun">*</span><span class="pln">sequenceExercise </span><span class="pun">=</span><span class="pln"> generate_randnumb_exercise</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">);</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> </span><span class="pun">*</span><span class="pln">sequenceSet1 </span><span class="pun">=</span><span class="pln"> generate_randnumb_set1</span><span class="pun">(</span><span class="pln">set_row</span><span class="pun">[</span><span class="lit">0</span><span class="pun">],</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">0</span><span class="pun">]);</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> </span><span class="pun">*</span><span class="pln">sequenceSet2 </span><span class="pun">=</span><span class="pln"> generate_randnumb_set2</span><span class="pun">(</span><span class="pln">set_row</span><span class="pun">[</span><span class="lit">1</span><span class="pun">],</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]);</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> </span><span class="pun">*</span><span class="pln">sequenceSet3 </span><span class="pun">=</span><span class="pln"> generate_randnumb_set3</span><span class="pun">(</span><span class="pln">set_row</span><span class="pun">[</span><span class="lit">2</span><span class="pun">],</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">3</span><span class="pun">]</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]);</span><span class="pln">

</span><span class="com">//set up of the lcd</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> rs </span><span class="pun">=</span><span class="pln"> </span><span class="lit">12</span><span class="pun">,</span><span class="pln"> en </span><span class="pun">=</span><span class="pln"> </span><span class="lit">11</span><span class="pun">,</span><span class="pln"> d4 </span><span class="pun">=</span><span class="pln"> </span><span class="lit">5</span><span class="pun">,</span><span class="pln"> d5 </span><span class="pun">=</span><span class="pln"> </span><span class="lit">4</span><span class="pun">,</span><span class="pln"> d6 </span><span class="pun">=</span><span class="pln"> </span><span class="lit">3</span><span class="pun">,</span><span class="pln"> d7 </span><span class="pun">=</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln">
</span><span class="typ">LiquidCrystal</span><span class="pln"> lcd</span><span class="pun">(</span><span class="pln">rs</span><span class="pun">,</span><span class="pln"> en</span><span class="pun">,</span><span class="pln"> d4</span><span class="pun">,</span><span class="pln"> d5</span><span class="pun">,</span><span class="pln"> d6</span><span class="pun">,</span><span class="pln"> d7</span><span class="pun">);</span><span class="pln">

</span><span class="com">//set up the neopixel strip</span><span class="pln">
</span><span class="typ">Adafruit_NeoPixel</span><span class="pln"> strip</span><span class="pun">(</span><span class="pln">LED_COUNT</span><span class="pun">,</span><span class="pln"> NEOPIXELSTRIP</span><span class="pun">,</span><span class="pln"> NEO_GRB </span><span class="pun">+</span><span class="pln"> NEO_KHZ800</span><span class="pun">);</span><span class="pln">
</span><span class="com">//defining the color for the neopixel strip</span><span class="pln">
</span><span class="typ">uint32_t</span><span class="pln"> deep_sky_blue </span><span class="pun">=</span><span class="pln"> strip</span><span class="pun">.</span><span class="typ">Color</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">191</span><span class="pun">,</span><span class="pln"> </span><span class="lit">255</span><span class="pun">);</span><span class="pln">


</span><span class="com">//Supplemental Functions</span><span class="pln">
</span><span class="com">//Functions for selecting a workout set</span><span class="pln">
</span><span class="com">//Determine which set the rotary turner is "pointing at"</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> which_set </span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">int</span><span class="pln"> error_angle </span><span class="pun">=</span><span class="pln"> </span><span class="lit">30</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">int</span><span class="pln"> potenValue </span><span class="pun">=</span><span class="pln"> analogRead</span><span class="pun">(</span><span class="pln">ROTARY_TURNER</span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">int</span><span class="pln"> </span><span class="kwd">set</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">

  </span><span class="com">//Display the name of set 1 when the potentiometer is at 0 degree</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">potenValue </span><span class="pun"><=</span><span class="pln"> </span><span class="lit">1023</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> error_angle </span><span class="pun">/</span><span class="pln"> </span><span class="lit">300</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">set</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">set</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">


  </span><span class="kwd">else</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">potenValue </span><span class="pun">>=</span><span class="pln"> </span><span class="lit">512</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1023</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> error_angle </span><span class="pun">/</span><span class="pln"> </span><span class="lit">300</span><span class="pln"> </span><span class="pun">&&</span><span class="pln"> potenValue </span><span class="pun"><=</span><span class="pln"> </span><span class="lit">512</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1023</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> error_angle </span><span class="pun">/</span><span class="pln"> </span><span class="lit">300</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">set</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">set</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="com">//set 3</span><span class="pln">
  </span><span class="kwd">else</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">potenValue </span><span class="pun">>=</span><span class="pln"> </span><span class="lit">1023</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> </span><span class="pun">(</span><span class="lit">1</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> error_angle </span><span class="pun">/</span><span class="pln"> </span><span class="lit">300</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">set</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">3</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">set</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">//Display the name of the workout set that is currently looking at</span><span class="pln">
</span><span class="kwd">void</span><span class="pln"> select_set</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">int</span><span class="pln"> buttonState </span><span class="pun">=</span><span class="pln"> digitalRead</span><span class="pun">(</span><span class="pln">ROTARY_BUTTON</span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">int</span><span class="pln"> </span><span class="kwd">set</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">set</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> which_set</span><span class="pun">();</span><span class="pln">
  </span><span class="typ">String</span><span class="pln"> text </span><span class="pun">=</span><span class="pln"> sets</span><span class="pun">[</span><span class="kwd">set</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">];</span><span class="pln">
  </span><span class="kwd">int</span><span class="pln"> startingColumn </span><span class="pun">=</span><span class="pln"> ceil</span><span class="pun">((</span><span class="lit">16</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> text</span><span class="pun">.</span><span class="pln">length</span><span class="pun">())</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="lit">2</span><span class="pun">);</span><span class="pln">

  lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">2</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
  lcd</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="str">"Select a Set"</span><span class="pun">);</span><span class="pln">


  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">on_off </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="pln">startingColumn</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
    lcd</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="pln">text</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">on_off </span><span class="pun">==</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="pln">startingColumn</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
    lcd</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="str">"               "</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="com">//When the pressbutton on rotary encoder is pressed</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">buttonState </span><span class="pun">==</span><span class="pln"> LOW</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">select</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">set</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      row </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*</span><span class="pln">sequenceSet1</span><span class="pun">;</span><span class="pln">
      num_of_groups </span><span class="pun">=</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]-</span><span class="pln">set_row</span><span class="pun">[</span><span class="lit">0</span><span class="pun">];</span><span class="pln">
      </span><span class="typ">Serial</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="pln">row</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">set</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">2</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      row </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*</span><span class="pln">sequenceSet2</span><span class="pun">;</span><span class="pln">
      num_of_groups </span><span class="pun">=</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]-</span><span class="pln">set_row</span><span class="pun">[</span><span class="lit">1</span><span class="pun">];</span><span class="pln">
      </span><span class="typ">Serial</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="pln">row</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">set</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">3</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      row </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*</span><span class="pln">sequenceSet3</span><span class="pun">;</span><span class="pln">
      num_of_groups </span><span class="pun">=</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">3</span><span class="pun">]-</span><span class="pln">set_row</span><span class="pun">[</span><span class="lit">2</span><span class="pun">];</span><span class="pln">
      </span><span class="typ">Serial</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="pln">row</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    lcd</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
    lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">3</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
    lcd</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="str">"Lets Begin!"</span><span class="pun">);</span><span class="pln">
    delay</span><span class="pun">(</span><span class="lit">1500</span><span class="pun">);</span><span class="pln">
    lcd</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
    </span><span class="com">//Call the function robot_face to show a smiley face on the lcd</span><span class="pln">
    robot_face</span><span class="pun">(</span><span class="str">"smiley"</span><span class="pun">);</span><span class="pln">
    delay</span><span class="pun">(</span><span class="lit">2000</span><span class="pun">);</span><span class="pln">
    lcd</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
    audioTimer </span><span class="pun">=</span><span class="pln"> millis</span><span class="pun">();</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">//Sumplementary function for display exercise name onto the LCD display</span><span class="pln">
</span><span class="com">//This function scroll the text when it is too long to display on the 16-digit screen</span><span class="pln">
</span><span class="kwd">void</span><span class="pln"> scrollLeft</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="kwd">string</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> row</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">int</span><span class="pln"> length </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">string</span><span class="pun">.</span><span class="pln">length</span><span class="pun">();</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">millis</span><span class="pun">()</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> selectingTimer </span><span class="pun">></span><span class="pln"> SELECTINGFRE</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">cursor </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun"><=</span><span class="pln"> length </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      cursor </span><span class="pun">=</span><span class="pln"> cursor </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">cursor </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">></span><span class="pln"> length</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      cursor </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    selectingTimer </span><span class="pun">=</span><span class="pln"> millis</span><span class="pun">();</span><span class="pln">
    lcd</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="typ">String</span><span class="pln"> text </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">string</span><span class="pun">.</span><span class="pln">substring</span><span class="pun">(</span><span class="pln">cursor</span><span class="pun">);</span><span class="pln">
  lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> row</span><span class="pun">);</span><span class="pln">
  lcd</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="pln">text</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">//Function that show the name of the current exercise</span><span class="pln">
</span><span class="kwd">void</span><span class="pln"> display_text</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="kwd">string</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">int</span><span class="pln"> length </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">string</span><span class="pun">.</span><span class="pln">length</span><span class="pun">();</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">length </span><span class="pun"><=</span><span class="pln"> </span><span class="lit">16</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="pln">ceil</span><span class="pun">((</span><span class="lit">16</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> length</span><span class="pun">)</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="lit">2</span><span class="pun">),</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
    lcd</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="kwd">string</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">length </span><span class="pun">></span><span class="pln"> </span><span class="lit">16</span><span class="pln"> </span><span class="pun">&&</span><span class="pln"> length </span><span class="pun"><</span><span class="pln"> </span><span class="lit">32</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">int</span><span class="pln"> indexofSpace </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">string</span><span class="pun">.</span><span class="pln">indexOf</span><span class="pun">(</span><span class="str">" "</span><span class="pun">);</span><span class="pln">
    </span><span class="typ">String</span><span class="pln"> firstWord </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">string</span><span class="pun">.</span><span class="pln">substring</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> indexofSpace</span><span class="pun">);</span><span class="pln">
    </span><span class="typ">String</span><span class="pln"> secondWord </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">string</span><span class="pun">.</span><span class="pln">substring</span><span class="pun">(</span><span class="pln">indexofSpace </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">firstWord</span><span class="pun">.</span><span class="pln">length</span><span class="pun">()</span><span class="pln"> </span><span class="pun">></span><span class="pln"> </span><span class="lit">16</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      scrollLeft</span><span class="pun">(</span><span class="pln">firstWord</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">firstWord</span><span class="pun">.</span><span class="pln">length</span><span class="pun">()</span><span class="pln"> </span><span class="pun"><=</span><span class="pln"> </span><span class="lit">16</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="pln">ceil</span><span class="pun">((</span><span class="lit">16</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> firstWord</span><span class="pun">.</span><span class="pln">length</span><span class="pun">())</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="lit">2</span><span class="pun">),</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
      lcd</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="pln">firstWord</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">secondWord</span><span class="pun">.</span><span class="pln">length</span><span class="pun">()</span><span class="pln"> </span><span class="pun">></span><span class="pln"> </span><span class="lit">16</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      scrollLeft</span><span class="pun">(</span><span class="pln">secondWord</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">secondWord</span><span class="pun">.</span><span class="pln">length</span><span class="pun">()</span><span class="pln"> </span><span class="pun"><=</span><span class="pln"> </span><span class="lit">16</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="pln">ceil</span><span class="pun">((</span><span class="lit">16</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> secondWord</span><span class="pun">.</span><span class="pln">length</span><span class="pun">())</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="lit">2</span><span class="pun">),</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
      lcd</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="pln">secondWord</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">length </span><span class="pun">>=</span><span class="pln"> </span><span class="lit">32</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    scrollLeft</span><span class="pun">(</span><span class="kwd">string</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">string</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="str">"end"</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="pln">ceil</span><span class="pun">((</span><span class="lit">16</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">11</span><span class="pun">)</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="lit">2</span><span class="pun">),</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
    lcd</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="str">"The workout"</span><span class="pun">);</span><span class="pln">
    lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="pln">ceil</span><span class="pun">((</span><span class="lit">16</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">11</span><span class="pun">)</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="lit">2</span><span class="pun">),</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
    lcd</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="str">"is finished"</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">//This micmics the function of the mini mp3 player, which plays a audio record of the name of the exercise.</span><span class="pln">
</span><span class="kwd">void</span><span class="pln"> play_audio</span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> audio</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">while</span><span class="pln"> </span><span class="pun">(</span><span class="pln">millis</span><span class="pun">()</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> audioTimer </span><span class="pun"><</span><span class="pln"> AUDIOPERIOD</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  tone</span><span class="pun">(</span><span class="pln">SPEAKER1</span><span class="pun">,</span><span class="pln">audio</span><span class="pun">);</span><span class="pln">
  tone</span><span class="pun">(</span><span class="pln">SPEAKER2</span><span class="pun">,</span><span class="pln">audio</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  noTone</span><span class="pun">(</span><span class="pln">SPEAKER1</span><span class="pun">);</span><span class="pln">
  noTone</span><span class="pun">(</span><span class="pln">SPEAKER2</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">//Rolling the light on the Neopixel light strip as a reward when a exercise group is finished</span><span class="pln">
</span><span class="kwd">void</span><span class="pln"> light_up_strip</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">while</span><span class="pln"> </span><span class="pun">(</span><span class="pln">millis</span><span class="pun">()</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> stripTimer </span><span class="pun"><</span><span class="pln"> STRIPPERIOD</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">int</span><span class="pln"> redColor </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">255</span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">int</span><span class="pln"> greenColor </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="lit">255</span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">int</span><span class="pln"> blueColor </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">255</span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i</span><span class="pun">=</span><span class="lit">0</span><span class="pun">;</span><span class="pln">i </span><span class="pun"><</span><span class="pln"> </span><span class="lit">6</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  strip</span><span class="pun">.</span><span class="pln">setPixelColor</span><span class="pun">(</span><span class="pln">i</span><span class="pun">,</span><span class="pln">strip</span><span class="pun">.</span><span class="typ">Color</span><span class="pun">(</span><span class="pln">redColor</span><span class="pun">,</span><span class="pln">greenColor</span><span class="pun">,</span><span class="pln">blueColor</span><span class="pun">));</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  strip</span><span class="pun">.</span><span class="pln">show</span><span class="pun">();</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  strip</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">//That function that put the custom characters onto the lcd</span><span class="pln">
</span><span class="kwd">void</span><span class="pln"> robot_face</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> face</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">face </span><span class="pun">==</span><span class="pln"> </span><span class="str">"surprise"</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
     </span><span class="com">//Create the custom characters</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> SURPRISE_06</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> SURPRISE_07</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">2</span><span class="pun">,</span><span class="pln"> SURPRISE_08</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">3</span><span class="pun">,</span><span class="pln"> SURPRISE_09</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">4</span><span class="pun">,</span><span class="pln"> SURPRISE_16</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">5</span><span class="pun">,</span><span class="pln"> SURPRISE_17</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">6</span><span class="pun">,</span><span class="pln"> SURPRISE_18</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">7</span><span class="pun">,</span><span class="pln"> SURPRISE_19</span><span class="pun">);</span><span class="pln">

     </span><span class="com">//write the characters to their places</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">6</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="kwd">byte</span><span class="pun">(</span><span class="lit">0</span><span class="pun">));</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">7</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">1</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">8</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">2</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">9</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">3</span><span class="pun">);</span><span class="pln">
      lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">6</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">4</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">7</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">5</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">8</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">6</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">9</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">7</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

   </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">face </span><span class="pun">==</span><span class="pln"> </span><span class="str">"smiley"</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
     </span><span class="com">//Create the custom characters</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln">  SMILE_04</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">1</span><span class="pun">,</span><span class="pln">  SMILE_05</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">2</span><span class="pun">,</span><span class="pln">  SMILE_010</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">3</span><span class="pun">,</span><span class="pln">  SMILE_011</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">4</span><span class="pun">,</span><span class="pln">  SMILE_16</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">5</span><span class="pun">,</span><span class="pln">  SMILE_17</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">6</span><span class="pun">,</span><span class="pln">  SMILE_18</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">createChar</span><span class="pun">(</span><span class="lit">7</span><span class="pun">,</span><span class="pln">  SMILE_19</span><span class="pun">);</span><span class="pln">
    
     </span><span class="com">//write the characters to their places</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">4</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="kwd">byte</span><span class="pun">(</span><span class="lit">0</span><span class="pun">));</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">5</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">1</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">10</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">2</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">11</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">3</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">6</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">4</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">7</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">5</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">8</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">6</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">9</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
     lcd</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="lit">7</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">//Simple function that turn the led on and off</span><span class="pln">
</span><span class="kwd">void</span><span class="pln"> ledSwith</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> command</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">command </span><span class="pun">==</span><span class="pln"> </span><span class="str">"on"</span><span class="pun">){</span><span class="pln">
    digitalWrite</span><span class="pun">(</span><span class="pln">LED1</span><span class="pun">,</span><span class="pln">HIGH</span><span class="pun">);</span><span class="pln">
    digitalWrite</span><span class="pun">(</span><span class="pln">LED2</span><span class="pun">,</span><span class="pln">HIGH</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">command </span><span class="pun">==</span><span class="pln"> </span><span class="str">"off"</span><span class="pun">){</span><span class="pln">
    digitalWrite</span><span class="pun">(</span><span class="pln">LED1</span><span class="pun">,</span><span class="pln">LOW</span><span class="pun">);</span><span class="pln">
    digitalWrite</span><span class="pun">(</span><span class="pln">LED2</span><span class="pun">,</span><span class="pln">LOW</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">//The function that determines what happens when the workout set is finished</span><span class="pln">
</span><span class="kwd">void</span><span class="pln"> </span><span class="kwd">end</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  display_text</span><span class="pun">(</span><span class="str">"end"</span><span class="pun">);</span><span class="pln">
  delay</span><span class="pun">(</span><span class="lit">2000</span><span class="pun">);</span><span class="pln">
  lcd</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
  display_text</span><span class="pun">(</span><span class="str">"Great Job!"</span><span class="pun">);</span><span class="pln">
  delay</span><span class="pun">(</span><span class="lit">2000</span><span class="pun">);</span><span class="pln">
  lcd</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
  robot_face</span><span class="pun">(</span><span class="str">"smiley"</span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">int</span><span class="pln"> redColor </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">255</span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">int</span><span class="pln"> greenColor </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="lit">255</span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">int</span><span class="pln"> blueColor </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">255</span><span class="pun">);</span><span class="pln">
  
  </span><span class="com">//The for loop rolls the lgiht on the LED light strip until the device is powered off</span><span class="pln">
  </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i</span><span class="pun">=</span><span class="lit">0</span><span class="pun">;</span><span class="pln">i </span><span class="pun"><</span><span class="pln"> </span><span class="lit">6</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  strip</span><span class="pun">.</span><span class="pln">setPixelColor</span><span class="pun">(</span><span class="pln">i</span><span class="pun">,</span><span class="pln">strip</span><span class="pun">.</span><span class="typ">Color</span><span class="pun">(</span><span class="pln">redColor</span><span class="pun">,</span><span class="pln">greenColor</span><span class="pun">,</span><span class="pln">blueColor</span><span class="pun">));</span><span class="pln">
  strip</span><span class="pun">.</span><span class="pln">show</span><span class="pun">();</span><span class="pln"> 
  delay</span><span class="pun">(</span><span class="lit">400</span><span class="pun">);</span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">i</span><span class="pun">==</span><span class="lit">5</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      i </span><span class="pun">=</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pun">;</span><span class="pln">
      redColor </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">255</span><span class="pun">);</span><span class="pln">
      greenColor </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="lit">255</span><span class="pun">);</span><span class="pln">
      blueColor </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">255</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">



</span><span class="kwd">void</span><span class="pln"> show_exercise</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="com">//Displaying the name of the exercise by feeding the word to function display_text()</span><span class="pln">

  
  </span><span class="com">//If the selected workout set is set 1</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">row </span><span class="pun"><</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">1</span><span class="pun">])</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    row </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceSet1 </span><span class="pun">+</span><span class="pln"> rowIncrement</span><span class="pun">);</span><span class="pln">
    column </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceExercise </span><span class="pun">+</span><span class="pln"> columnIncrement</span><span class="pun">);</span><span class="pln">
   

    </span><span class="com">// columnIncrement in  the if-statement should be set to the number of columns in each row</span><span class="pln">
    </span><span class="com">//The if statement checks if the exercise group is finished</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">exercise</span><span class="pun">[</span><span class="pln">row</span><span class="pun">][</span><span class="pln">column</span><span class="pun">]</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="str">"0"</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> columnIncrement </span><span class="pun">==</span><span class="pln"> </span><span class="lit">3</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      rowIncrement </span><span class="pun">=</span><span class="pln"> rowIncrement </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
      columnIncrement </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
      row </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceSet1 </span><span class="pun">+</span><span class="pln"> rowIncrement</span><span class="pun">);</span><span class="pln">
      column </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceExercise </span><span class="pun">+</span><span class="pln"> columnIncrement</span><span class="pun">);</span><span class="pln">

      ledSwith</span><span class="pun">(</span><span class="str">"on"</span><span class="pun">);</span><span class="pln">
      robot_face</span><span class="pun">(</span><span class="str">"surprise"</span><span class="pun">);</span><span class="pln">
      light_up_strip</span><span class="pun">();</span><span class="pln">
      lcd</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
      ledSwith</span><span class="pun">(</span><span class="str">"off"</span><span class="pun">);</span><span class="pln">
      audioTimer </span><span class="pun">=</span><span class="pln"> millis</span><span class="pun">();</span><span class="pln">
      
      </span><span class="com">//to check if the set is finished</span><span class="pln">
      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">rowIncrement </span><span class="pun">==</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">1</span><span class="pun">])</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">end</span><span class="pun">();</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    display_text</span><span class="pun">(</span><span class="pln">exercise</span><span class="pun">[</span><span class="pln">row</span><span class="pun">][</span><span class="pln">column</span><span class="pun">]);</span><span class="pln">
    play_audio</span><span class="pun">(</span><span class="pln">exercise_audio</span><span class="pun">[</span><span class="pln">row</span><span class="pun">][</span><span class="pln">column</span><span class="pun">]);</span><span class="pln">
    
  </span><span class="pun">}</span><span class="pln">

  </span><span class="com">//If the selected workout set is set 2</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">row </span><span class="pun">>=</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]</span><span class="pln"> </span><span class="pun">&&</span><span class="pln"> row </span><span class="pun"><</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">2</span><span class="pun">])</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    row </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceSet2 </span><span class="pun">+</span><span class="pln"> rowIncrement</span><span class="pun">);</span><span class="pln">
    column </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceExercise </span><span class="pun">+</span><span class="pln"> columnIncrement</span><span class="pun">);</span><span class="pln">
    

    </span><span class="com">// columnIncrement in  the if-statement should be set to the number of columns in each row</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">exercise</span><span class="pun">[</span><span class="pln">row</span><span class="pun">][</span><span class="pln">column</span><span class="pun">]</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="str">"0"</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> columnIncrement </span><span class="pun">==</span><span class="pln"> </span><span class="lit">3</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
   
      rowIncrement </span><span class="pun">=</span><span class="pln"> rowIncrement </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
      columnIncrement </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
      row </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceSet2 </span><span class="pun">+</span><span class="pln"> rowIncrement</span><span class="pun">);</span><span class="pln">
      column </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceExercise </span><span class="pun">+</span><span class="pln"> columnIncrement</span><span class="pun">);</span><span class="pln">
      
      ledSwith</span><span class="pun">(</span><span class="str">"on"</span><span class="pun">);</span><span class="pln">
      robot_face</span><span class="pun">(</span><span class="str">"surprise"</span><span class="pun">);</span><span class="pln">
      light_up_strip</span><span class="pun">();</span><span class="pln">
      lcd</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
      ledSwith</span><span class="pun">(</span><span class="str">"off"</span><span class="pun">);</span><span class="pln">
      audioTimer </span><span class="pun">=</span><span class="pln"> millis</span><span class="pun">();</span><span class="pln">
        
      </span><span class="com">//to check if the set is finished</span><span class="pln">
      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">rowIncrement </span><span class="pun">==</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">1</span><span class="pun">])</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">end</span><span class="pun">();</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    display_text</span><span class="pun">(</span><span class="pln">exercise</span><span class="pun">[</span><span class="pln">row</span><span class="pun">][</span><span class="pln">column</span><span class="pun">]);</span><span class="pln">
    play_audio</span><span class="pun">(</span><span class="pln">exercise_audio</span><span class="pun">[</span><span class="pln">row</span><span class="pun">][</span><span class="pln">column</span><span class="pun">]);</span><span class="pln">
    
  </span><span class="pun">}</span><span class="pln">

  </span><span class="com">//If the selected workout set is set 3</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">row </span><span class="pun">>=</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">&&</span><span class="pln"> row </span><span class="pun"><</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">3</span><span class="pun">])</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    row </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceSet3 </span><span class="pun">+</span><span class="pln"> rowIncrement</span><span class="pun">);</span><span class="pln">
    column </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceExercise </span><span class="pun">+</span><span class="pln"> columnIncrement</span><span class="pun">);</span><span class="pln">
   

    </span><span class="com">// columnIncrement in  the if-statement should be set to the number of columns in each row</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">exercise</span><span class="pun">[</span><span class="pln">row</span><span class="pun">][</span><span class="pln">column</span><span class="pun">]</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="str">"0"</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> columnIncrement </span><span class="pun">==</span><span class="pln"> </span><span class="lit">3</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

      rowIncrement </span><span class="pun">=</span><span class="pln"> rowIncrement </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
      columnIncrement </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
      row </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceSet3 </span><span class="pun">+</span><span class="pln"> rowIncrement</span><span class="pun">);</span><span class="pln">
      column </span><span class="pun">=</span><span class="pln"> </span><span class="pun">*(</span><span class="pln">sequenceExercise </span><span class="pun">+</span><span class="pln"> columnIncrement</span><span class="pun">);</span><span class="pln">
      
      robot_face</span><span class="pun">(</span><span class="str">"surprise"</span><span class="pun">);</span><span class="pln">
      ledSwith</span><span class="pun">(</span><span class="str">"on"</span><span class="pun">);</span><span class="pln">
      light_up_strip</span><span class="pun">();</span><span class="pln">
      lcd</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
      ledSwith</span><span class="pun">(</span><span class="str">"off"</span><span class="pun">);</span><span class="pln">
      audioTimer </span><span class="pun">=</span><span class="pln"> millis</span><span class="pun">();</span><span class="pln">

      
      </span><span class="com">//to check if the set is finished</span><span class="pln">
      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">rowIncrement </span><span class="pun">==</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">3</span><span class="pun">]</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> set_row</span><span class="pun">[</span><span class="lit">2</span><span class="pun">])</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">end</span><span class="pun">();</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    display_text</span><span class="pun">(</span><span class="pln">exercise</span><span class="pun">[</span><span class="pln">row</span><span class="pun">][</span><span class="pln">column</span><span class="pun">]);</span><span class="pln">
    play_audio</span><span class="pun">(</span><span class="pln">exercise_audio</span><span class="pun">[</span><span class="pln">row</span><span class="pun">][</span><span class="pln">column</span><span class="pun">]);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">//This funtion controls the neopixel strip to show the progress through the set</span><span class="pln">
</span><span class="kwd">void</span><span class="pln"> show_progress</span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> num_of_groups</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">int</span><span class="pln"> lightedPixel </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">rowIncrement</span><span class="pun">*</span><span class="lit">6</span><span class="pun">)/</span><span class="pln">num_of_groups</span><span class="pun">;</span><span class="pln">
  
  </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i</span><span class="pun">=</span><span class="lit">0</span><span class="pun">;</span><span class="pln">i </span><span class="pun"><</span><span class="pln"> lightedPixel</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  strip</span><span class="pun">.</span><span class="pln">setPixelColor</span><span class="pun">(</span><span class="pln">i</span><span class="pun">,</span><span class="pln">deep_sky_blue</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  strip</span><span class="pun">.</span><span class="pln">show</span><span class="pun">();</span><span class="pln">
</span><span class="pun">}</span><span class="pln">


</span><span class="kwd">void</span><span class="pln"> setup</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="com">// Setting up the pins</span><span class="pln">
  pinMode</span><span class="pun">(</span><span class="pln">ROTARY_BUTTON</span><span class="pun">,</span><span class="pln"> INPUT_PULLUP</span><span class="pun">);</span><span class="pln">
  pinMode</span><span class="pun">(</span><span class="pln">ROTARY_TURNER</span><span class="pun">,</span><span class="pln"> INPUT</span><span class="pun">);</span><span class="pln">
  pinMode</span><span class="pun">(</span><span class="pln">SPEAKER1</span><span class="pun">,</span><span class="pln"> OUTPUT</span><span class="pun">);</span><span class="pln">
  pinMode</span><span class="pun">(</span><span class="pln">SPEAKER2</span><span class="pun">,</span><span class="pln"> OUTPUT</span><span class="pun">);</span><span class="pln">
  pinMode</span><span class="pun">(</span><span class="pln">MICROPHONE</span><span class="pun">,</span><span class="pln">INPUT_PULLUP</span><span class="pun">);</span><span class="pln">
  pinMode</span><span class="pun">(</span><span class="pln">LED1</span><span class="pun">,</span><span class="pln"> OUTPUT</span><span class="pun">);</span><span class="pln">
  pinMode</span><span class="pun">(</span><span class="pln">LED2</span><span class="pun">,</span><span class="pln"> OUTPUT</span><span class="pun">);</span><span class="pln">

  </span><span class="com">//Setting up for the lcd screen</span><span class="pln">
  lcd</span><span class="pun">.</span><span class="kwd">begin</span><span class="pun">(</span><span class="lit">16</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">);</span><span class="pln">
  lcd</span><span class="pun">.</span><span class="pln">setCursor</span><span class="pun">(</span><span class="lit">2</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln">
  lcd</span><span class="pun">.</span><span class="kwd">print</span><span class="pun">(</span><span class="str">"Lets Exercise!"</span><span class="pun">);</span><span class="pln">
  delay</span><span class="pun">(</span><span class="lit">1500</span><span class="pun">);</span><span class="pln">
  lcd</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">

  </span><span class="com">//Initiate the Neopixel Strip</span><span class="pln">
  strip</span><span class="pun">.</span><span class="kwd">begin</span><span class="pun">();</span><span class="pln">
  strip</span><span class="pun">.</span><span class="pln">show</span><span class="pun">();</span><span class="pln">


  </span><span class="com">//Initiate Serial Print</span><span class="pln">
  </span><span class="typ">Serial</span><span class="pun">.</span><span class="kwd">begin</span><span class="pun">(</span><span class="lit">9600</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="kwd">void</span><span class="pln"> loop</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">while</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">select</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    select_set</span><span class="pun">();</span><span class="pln">
    </span><span class="com">//Timer to make the chosen workout set "flash" </span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">millis</span><span class="pun">()</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> selectingTimer </span><span class="pun">></span><span class="pln"> SELECTINGFRE</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">on_off </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        on_off </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
      </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        on_off </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
      selectingTimer </span><span class="pun">=</span><span class="pln"> millis</span><span class="pun">();</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">millis</span><span class="pun">()</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> microphoneTimer </span><span class="pun">></span><span class="pln"> MICROPHONEFRE</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">int</span><span class="pln"> buttonState </span><span class="pun">=</span><span class="pln"> digitalRead</span><span class="pun">(</span><span class="pln">MICROPHONE</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">buttonState </span><span class="pun">==</span><span class="pln"> LOW</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      audioTimer </span><span class="pun">=</span><span class="pln"> millis</span><span class="pun">();</span><span class="pln">
      stripTimer </span><span class="pun">=</span><span class="pln"> millis</span><span class="pun">();</span><span class="pln">
      columnIncrement </span><span class="pun">=</span><span class="pln"> columnIncrement </span><span class="pun">+</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
      lcd</span><span class="pun">.</span><span class="pln">clear</span><span class="pun">();</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    microphoneTimer </span><span class="pun">=</span><span class="pln"> millis</span><span class="pun">();</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  show_exercise</span><span class="pun">();</span><span class="pln">
  show_progress</span><span class="pun">(</span><span class="pln">num_of_groups</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span>

Schematic and Design Files

Schematic

Exercise Companion.stl