{"id":16660,"date":"2022-10-27T14:39:21","date_gmt":"2022-10-27T18:39:21","guid":{"rendered":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/?p=16660"},"modified":"2022-10-31T02:29:10","modified_gmt":"2022-10-31T06:29:10","slug":"corrective-lens-tracker-and-holder","status":"publish","type":"post","link":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/corrective-lens-tracker-and-holder\/","title":{"rendered":"Corrective Lens Tracker and Holder"},"content":{"rendered":"<p>By Sharon Li<\/p>\n<p><span style=\"font-weight: 400\">The corrective lenses tracker and holder allow an individual to store their contact lenses and glasses in the two separate compartments in addition to serving as a tracking device for how long weekly contact lenses have been opened.<\/span><\/p>\n<div id=\"attachment_16662\" style=\"width: 610px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Final-MOV.gif\"><img aria-describedby=\"caption-attachment-16662\" loading=\"lazy\" class=\"size-full wp-image-16662\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Final-MOV.gif\" alt=\"\" width=\"600\" height=\"338\" \/><\/a><p id=\"caption-attachment-16662\" class=\"wp-caption-text\">Demonstration of the corrective lens tracker and holder in demo mode where 24 hours is converted to 10 seconds and 5-day use contact lens. It is also sped up 4x.<\/p><\/div>\n<div id=\"attachment_16665\" style=\"width: 2570px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8134-scaled.jpg\"><img aria-describedby=\"caption-attachment-16665\" loading=\"lazy\" class=\"size-full wp-image-16665\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8134-scaled.jpg\" alt=\"\" width=\"2560\" height=\"1707\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8134-scaled.jpg 2560w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8134-300x200.jpg 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8134-1024x683.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8134-768x512.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8134-1536x1024.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8134-2048x1365.jpg 2048w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8134-973x649.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8134-508x339.jpg 508w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/a><p id=\"caption-attachment-16665\" class=\"wp-caption-text\">Overview Photo<\/p><\/div>\n<div id=\"attachment_16669\" style=\"width: 2570px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8108-scaled.jpg\"><img aria-describedby=\"caption-attachment-16669\" loading=\"lazy\" class=\"size-full wp-image-16669\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8108-scaled.jpg\" alt=\"\" width=\"2560\" height=\"1707\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8108-scaled.jpg 2560w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8108-300x200.jpg 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8108-1024x683.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8108-768x512.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8108-1536x1024.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8108-2048x1365.jpg 2048w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8108-973x649.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8108-508x339.jpg 508w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/a><p id=\"caption-attachment-16669\" class=\"wp-caption-text\">Inside the main compartment of the box where you store your contact lens, there is an IR sensor on the side that detects whether or not the lid is closed, which is used to update the LED display.<\/p><\/div>\n<div id=\"attachment_16667\" style=\"width: 1717px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/unnamed-file-scaled.jpg\"><img aria-describedby=\"caption-attachment-16667\" loading=\"lazy\" class=\"size-full wp-image-16667\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/unnamed-file-scaled.jpg\" alt=\"\" width=\"1707\" height=\"2560\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/unnamed-file-scaled.jpg 1707w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/unnamed-file-200x300.jpg 200w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/unnamed-file-683x1024.jpg 683w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/unnamed-file-768x1152.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/unnamed-file-1024x1536.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/unnamed-file-1365x2048.jpg 1365w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/unnamed-file-973x1460.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/unnamed-file-508x762.jpg 508w\" sizes=\"(max-width: 1707px) 100vw, 1707px\" \/><\/a><p id=\"caption-attachment-16667\" class=\"wp-caption-text\">In this box, there is a false floor that hides all of the hardware underneath so that the user cannot see it.<\/p><\/div>\n<div id=\"attachment_16668\" style=\"width: 1717px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8160-scaled.jpg\"><img aria-describedby=\"caption-attachment-16668\" loading=\"lazy\" class=\"size-full wp-image-16668\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8160-scaled.jpg\" alt=\"\" width=\"1707\" height=\"2560\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8160-scaled.jpg 1707w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8160-200x300.jpg 200w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8160-683x1024.jpg 683w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8160-768x1152.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8160-1024x1536.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8160-1365x2048.jpg 1365w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8160-973x1460.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8160-508x762.jpg 508w\" sizes=\"(max-width: 1707px) 100vw, 1707px\" \/><\/a><p id=\"caption-attachment-16668\" class=\"wp-caption-text\">To the right of the box, there is a side compartment whose intention is to hold or store glasses when not in use.<\/p><\/div>\n<div id=\"attachment_16671\" style=\"width: 2570px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8189-scaled.jpg\"><img aria-describedby=\"caption-attachment-16671\" loading=\"lazy\" class=\"size-full wp-image-16671\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8189-scaled.jpg\" alt=\"\" width=\"2560\" height=\"1707\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8189-scaled.jpg 2560w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8189-300x200.jpg 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8189-1024x683.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8189-768x512.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8189-1536x1024.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8189-2048x1365.jpg 2048w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8189-973x649.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8189-508x339.jpg 508w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/a><p id=\"caption-attachment-16671\" class=\"wp-caption-text\">A user can open the lid to update the contact lens tracker information on the LED display automatically if it hasn\u2019t already been updated that day. This tracker would update automatically at 11:59 pm even if the user did not put their contacts in that day.<\/p><\/div>\n<div id=\"attachment_16672\" style=\"width: 2570px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8178-scaled.jpg\"><img aria-describedby=\"caption-attachment-16672\" loading=\"lazy\" class=\"size-full wp-image-16672\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8178-scaled.jpg\" alt=\"\" width=\"2560\" height=\"1707\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8178-scaled.jpg 2560w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8178-300x200.jpg 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8178-1024x683.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8178-768x512.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8178-1536x1024.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8178-2048x1365.jpg 2048w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8178-973x649.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/IMG_8178-508x339.jpg 508w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/a><p id=\"caption-attachment-16672\" class=\"wp-caption-text\">Hypothetically if the user were to lose their contacts or for whatever reason lose their pair of contacts and need to open a new pack, the user can hold down the button for 3 seconds to reset the \u201clife\u201d of the contacts tracker. This 3-second hold will also apply when it is time to change contacts.<\/p><\/div>\n<h2>Process Images and Review<\/h2>\n<p><span style=\"font-weight: 400\">During the beginning stages of developing my idea, I had a lot of components and functions on this box that didn\u2019t provide any supplementary support but rather were just extra embellishments for design. As a result, I decided to simplify my box more for easier use and decided to add an extra side component to store my glasses since I have more than one corrective lens. I reduced the number of buttons to one for a much cleaner look and to have the display on the entire time. Furthermore, I was able to add additional parts to my box for better functionality, such as a real-time clock that can track the days as well as an IR sensor to track if the lid was closed or not.\u00a0<\/span><\/p>\n<div id=\"attachment_16674\" style=\"width: 1896px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-1.png\"><img aria-describedby=\"caption-attachment-16674\" loading=\"lazy\" class=\"size-full wp-image-16674\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-1.png\" alt=\"\" width=\"1886\" height=\"1614\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-1.png 1886w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-1-300x257.png 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-1-1024x876.png 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-1-768x657.png 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-1-1536x1314.png 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-1-973x833.png 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-1-508x435.png 508w\" sizes=\"(max-width: 1886px) 100vw, 1886px\" \/><\/a><p id=\"caption-attachment-16674\" class=\"wp-caption-text\">Initial ideation sketches of this tracker on the top and holder with a further and more finalized design of my sketch on the bottom after consulting with Professor Zacharias.<\/p><\/div>\n<p><span style=\"font-weight: 400\">Following this, Professor Zacharias was able to help me with the CAD design of this box for the final product and all of its features. Specifically, I was able to construct the false floor of my project so that it could hide all of the hardware, and users would be able to operate this box seamlessly and would not see any of the wires or the Arduino. It was difficult to decide on the dimensions of this box without knowing how I was able to fit all of the hardware inside the false floor. Therefore, I had to estimate and allot more space than needed in the case where it might not fit entirely.\u00a0<\/span><\/p>\n<div id=\"attachment_16675\" style=\"width: 1560px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-2.png\"><img aria-describedby=\"caption-attachment-16675\" loading=\"lazy\" class=\"size-full wp-image-16675\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-2.png\" alt=\"\" width=\"1550\" height=\"1208\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-2.png 1550w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-2-300x234.png 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-2-1024x798.png 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-2-768x599.png 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-2-1536x1197.png 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-2-973x758.png 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-2-508x396.png 508w\" sizes=\"(max-width: 1550px) 100vw, 1550px\" \/><\/a><p id=\"caption-attachment-16675\" class=\"wp-caption-text\">Final CAD design of the corrective lens holder and tracker with the help of Professor Zacharias.<\/p><\/div>\n<p><span style=\"font-weight: 400\">While assembling the product after laser cutting the plywood using the CAD design, it was arduous to make sure that the code was working well. Meaning that I had to figure out the logistics of how I wanted this box to operate. Specifically, how I wanted the lid to function and how it would work in terms of tracking the days. As a result, I decided that the box would update itself at the end of the day on a daily basis even if the contacts were not used because my contacts are for a 7-day use regardless if I use them every day or not. I also had to do research here since initially, I did not know it was only for 7-day use, so I had to figure out a way to accommodate the fact that it can only be used for this certain time period. To solve this, I decided on the box updating automatically every night. By opening the lid, it would update automatically so users can see the most recent number of how many days the contacts have been opened.\u00a0<\/span><\/p>\n<div id=\"attachment_16676\" style=\"width: 1930px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_3-scaled.jpg\"><img aria-describedby=\"caption-attachment-16676\" loading=\"lazy\" class=\"size-full wp-image-16676\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_3-scaled.jpg\" alt=\"\" width=\"1920\" height=\"2560\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_3-scaled.jpg 1920w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_3-225x300.jpg 225w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_3-768x1024.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_3-1152x1536.jpg 1152w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_3-1536x2048.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_3-973x1297.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_3-508x677.jpg 508w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><\/a><p id=\"caption-attachment-16676\" class=\"wp-caption-text\">Assembling and wiring the hardware of my corrective lens holder as well as setting up all the components individually and then eventually altogether.<\/p><\/div>\n<div id=\"attachment_16677\" style=\"width: 2570px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_4-scaled.jpg\"><img aria-describedby=\"caption-attachment-16677\" loading=\"lazy\" class=\"size-full wp-image-16677\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_4-scaled.jpg\" alt=\"\" width=\"2560\" height=\"1920\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_4-scaled.jpg 2560w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_4-300x225.jpg 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_4-1024x768.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_4-768x576.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_4-1536x1152.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_4-2048x1536.jpg 2048w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_4-973x730.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_4-508x381.jpg 508w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/a><p id=\"caption-attachment-16677\" class=\"wp-caption-text\">Building and attaching the laser-cut pieces of plywood together and mounting the LED display as well as the button to the final prototype.<\/p><\/div>\n<p><span style=\"font-weight: 400\">While assembling the product after laser cutting the plywood using the CAD design, it was arduous to make sure that the code was working well. Meaning that I had to figure out the logistics of how I wanted this box to operate. Specifically, how I wanted the lid to function and how it would work in terms of tracking the days. As a result, I decided that the box would update itself at the end of the day on a daily basis even if the contacts were not used because my contacts are for a 7-day use regardless if I use them every day or not. I also had to do research here since initially, I did not know it was only for 7-day use, so I had to figure out a way to accommodate the fact that it can only be used for this certain time period. To solve this, I decided on the box updating automatically every night. By opening the lid, it would update automatically so users can see the most recent number of how many days the contacts have been opened.\u00a0<\/span><\/p>\n<div id=\"attachment_16678\" style=\"width: 2570px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_5-scaled.jpg\"><img aria-describedby=\"caption-attachment-16678\" loading=\"lazy\" class=\"size-full wp-image-16678\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_5-scaled.jpg\" alt=\"\" width=\"2560\" height=\"1920\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_5-scaled.jpg 2560w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_5-300x225.jpg 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_5-1024x768.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_5-768x576.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_5-1536x1152.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_5-2048x1536.jpg 2048w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_5-973x730.jpg 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process_Image_5-508x381.jpg 508w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/a><p id=\"caption-attachment-16678\" class=\"wp-caption-text\">Testing the IR sensor for functionality in conjunction with the LED display and that it would update simultaneously upon \u201copening\u201d and \u201cclosing\u201d the lid, which in this case was my hand.<\/p><\/div>\n<p><span style=\"font-weight: 400\">During this process, I encountered many difficulties and problems when writing the code, as it would not show up on the display or the timing would not match up, and it would continue to count even after 7 days. To solve this problem, I added many booleans to track all the different variables that I didn\u2019t expect to consider earlier.<\/span><\/p>\n<div id=\"attachment_16679\" style=\"width: 1422px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-6.png\"><img aria-describedby=\"caption-attachment-16679\" loading=\"lazy\" class=\"size-full wp-image-16679\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-6.png\" alt=\"\" width=\"1412\" height=\"846\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-6.png 1412w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-6-300x180.png 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-6-1024x614.png 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-6-768x460.png 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-6-973x583.png 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Process-Image-6-508x304.png 508w\" sizes=\"(max-width: 1412px) 100vw, 1412px\" \/><\/a><p id=\"caption-attachment-16679\" class=\"wp-caption-text\">A snippet of my demo code used for the final prototype where many booleans had to be considered in order for the box to update based on certain facts and the LED display would correctly display as well.<\/p><\/div>\n<h2>Discussion<\/h2>\n<p>Despite my initial concern throughout the ideation process that I would not be able to brainstorm a viable product that would ultimately be useful for me, I am proud of my progress throughout this process. Especially seeing my project literally come out of the lines in my sketches into an actual and tangible product is lively. I satisfied my goals for this project since I was able to target a reoccurring problem I have with keeping track of my contacts and finding a place to store my glasses, so it\u2019s like hitting two birds with one stone. It was super helpful to receive feedback from Professor Zacharias and my peers during the ideation process, and it helped me look at my project from a different perspective.<\/p>\n<p>However, some improvements could be made to my project after seeing the final product. Specifically, during the final critique where my peer commented, \u201cPortability if you want to bring it when you travel? Like is it possible to make it a bit flatter? Do you need such a big screen?\u201d. I agree with this comment, as it was one of my biggest concerns while prototyping and figuring out the measurements. Specifically, it was difficult to estimate the space needed for the hardware. I would have loved to make it smaller so it would not take up as much space in one\u2019s room, especially since the contact lens case is usually the size of an eraser. Another comment I agreed with was, \u201c What if you have contacts that are monthly\/yearly? How easy would it be to change it?\u201d. Adding more features to my box would have been helpful and added to its functionality. Since this box was tailored to me, I did not need to think about the lens past the seven-day use. However, it could be helpful to have a feature that could manually change the days the contacts can be used or, more generally, track any item that could be used.<\/p>\n<p>After this project, I would definitely build another iteration of this project that heavily revolves around the concerns I had that were directly related to the critiques I received. For example, I would make the box smaller and more compact by using another microcontroller and a smaller LCD display. In addition, I would definitely try to add more to the programming side and allow users to change the days, amongst other things. Overall, I learned that I had difficulty coding this project, specifically integrating a time aspect into it. Furthermore, I enjoyed the hands-on aspect of building the project and laser cutting it, particularly the ideation portion of coming up with this idea and sketching it.<\/p>\n<h2>Functional Block Diagram and Schematic<a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Screen-Shot-2022-10-31-at-12.02.44-AM.png\"><img loading=\"lazy\" class=\"aligncenter size-full wp-image-16691\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Screen-Shot-2022-10-31-at-12.02.44-AM.png\" alt=\"\" width=\"2324\" height=\"1380\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Screen-Shot-2022-10-31-at-12.02.44-AM.png 2324w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Screen-Shot-2022-10-31-at-12.02.44-AM-300x178.png 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Screen-Shot-2022-10-31-at-12.02.44-AM-1024x608.png 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Screen-Shot-2022-10-31-at-12.02.44-AM-768x456.png 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Screen-Shot-2022-10-31-at-12.02.44-AM-1536x912.png 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Screen-Shot-2022-10-31-at-12.02.44-AM-2048x1216.png 2048w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Screen-Shot-2022-10-31-at-12.02.44-AM-973x578.png 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Screen-Shot-2022-10-31-at-12.02.44-AM-508x302.png 508w\" sizes=\"(max-width: 2324px) 100vw, 2324px\" \/><\/a><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Screen-Shot-2022-10-31-at-12.51.44-AM.png\"><img loading=\"lazy\" class=\"aligncenter size-full wp-image-16692\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Screen-Shot-2022-10-31-at-12.51.44-AM.png\" alt=\"\" width=\"1730\" height=\"1490\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Screen-Shot-2022-10-31-at-12.51.44-AM.png 1730w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Screen-Shot-2022-10-31-at-12.51.44-AM-300x258.png 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Screen-Shot-2022-10-31-at-12.51.44-AM-1024x882.png 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Screen-Shot-2022-10-31-at-12.51.44-AM-768x661.png 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Screen-Shot-2022-10-31-at-12.51.44-AM-1536x1323.png 1536w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Screen-Shot-2022-10-31-at-12.51.44-AM-973x838.png 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-content\/uploads\/2022\/10\/Screen-Shot-2022-10-31-at-12.51.44-AM-508x438.png 508w\" sizes=\"(max-width: 1730px) 100vw, 1730px\" \/><\/a><\/h2>\n<h2>Code<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\">\/*\r\n  Corrective Lens Tracker and Holder\r\n  Sharon Li\r\n\r\n  The code below keeps track of the duration of time a pack of contact lens has\r\n  been open for using real-time data information from a real time clock that is\r\n  displayed on a LCD display. This tracker will update once every day either\r\n  manually by the user when they open the lid of the box for the first time that\r\n  day or automatically at 11:59PM. After 7 days (the maximum number of days a pair\r\n  of contacts can be used for), the LCD display will warn users to open a new\r\n  pair of contacts.\r\n\r\n  The code below additionally includes a demo mode where 24 hours is converted to\r\n  10 seconds.\r\n\r\n  Pin Map:\r\n  Pin | role | Description\r\n  ----------------------------------------\r\n  2 | input | Arcade Push Button input\r\n  A0 | input | IR Proximity Sensor input\r\n  SCL | input | SCL pin on Real Time Clock (DS3231)\r\n  SDA | input | SDA pin on Real Time Clock (DS3231)\r\n  A4 | input | SCL pin on I2C LCD display\r\n  A5 | input | SDA pin on I2C LCD display\r\n  5V | output| VL53L0X sensor power\r\n  GND | input | Ground for all components\r\n\r\n  Code Credit:\r\n  RTC DS3231 code sourced from the DS3231 library example code.\r\n  IR Proximity Sensor code sourced from the NewPing library example code.\r\n  isLeapYear and changing from date format to day of the year code (Lines 65-66 &amp; 102-109)\r\n  sourced from https:\/\/stackoverflow.com\/questions\/19110675\/calculating-day-of-year-from-date.\r\n\r\n*\/\r\n\r\n\r\n#include &lt;Wire.h&gt;\r\n#include &lt;LiquidCrystal_I2C.h&gt;\r\nLiquidCrystal_I2C screen(0x27, 20, 4);\r\n\r\n#include &lt;DS3231.h&gt;\r\nDS3231  rtc(SDA, SCL);\r\n\r\nconst int IRSENSOR = A0;\r\nconst int BUTTONPIN = 2;\r\n\r\nint contactsLife = 0;\r\n\r\nbool lidReset = true;\r\nbool dayUpdated = false;\r\nbool oldContacts = false;\r\n\r\nunsigned long buttonStart;\r\nunsigned long elapsedTime;\r\nunsigned long regTimer;\r\nunsigned long timeChecker;\r\nint resetButton;\r\n\r\nTime  t;\r\n\r\nint month;\r\nint year;\r\nint day;\r\n\r\nbool isLeapYear(int year) {\r\n  return year % 4 == 0 &amp;&amp; (year % 100 != 0 || year % 400 == 0);\r\n}\r\n\r\nvoid setup() {\r\n  pinMode(IRSENSOR, INPUT);\r\n  pinMode(BUTTONPIN, INPUT);\r\n  Serial.begin(9600);\r\n\r\n  screen.init();\r\n  screen.backlight();\r\n\r\n  rtc.begin();\r\n\r\n  \/\/\/\/   The following lines can be uncommented to set the date and time\r\n  \/\/    rtc.setDOW(TUESDAY);     \/\/ Set Day-of-Week to SUNDAY\r\n  \/\/    rtc.setTime(9, 49, 00);     \/\/ Set the time to 12:00:00 (24hr format)\r\n  \/\/    rtc.setDate(, 11, 2022);   \/\/ Set the date to January 1st, 2014\r\n\r\n}\r\n\r\nvoid loop() {\r\n  \/******************************************************************************************************\r\n      Code for updating the tracker using the IR Proximity Sensor or automatically and 7-day warning\r\n  ******************************************************************************************************\/\r\n  \/\/  Get data from the IR Proximity Sensor\r\n  int lidSensor;\r\n  lidSensor = analogRead(IRSENSOR);\r\n  delay(1000);\r\n\r\n  \/\/ Get data from the DS3231\r\n  t = rtc.getTime();\r\n  month = t.mon;\r\n  day = t.date;\r\n  year = t.year;\r\n\r\n  \/\/ 2d table mapping the days of the year to each month\r\n  int daysToMonth[2][12] =\r\n  {\r\n    { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 },\r\n    { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 },\r\n  };\r\n\r\n  \/\/ function that converts the date format to the day of the year\r\n  int dayOfYear = daysToMonth[isLeapYear(year) ? 1 : 0][month - 1] + day;\r\n\r\n  int contactsStart; \/\/the constant date when the contacts are opened\r\n  int startChecker = true; \/\/ if the start date is stored or not\r\n  int contactsCurr = 0; \/\/the most recent checked date\r\n  int dayChecker; \/\/checks what day it is\r\n\r\n  if (startChecker) { \/\/ if it is the start date\r\n    contactsStart = dayOfYear; \/\/ sets the start date to the current date\r\n    startChecker = false;\r\n  }\r\n\r\n  if (lidSensor &lt;= 50 and lidReset and not dayUpdated and not oldContacts) { \/\/ adds one day if lid opened\r\n    lidReset = false;\r\n    contactsLife = contactsLife + 1;\r\n    dayUpdated = true;\r\n  }\r\n\r\n  if (dayUpdated == false and contactsCurr - dayChecker &gt;= 1 and not oldContacts) { \/\/ adds one day automatically\r\n    contactsLife = contactsLife + 1;\r\n    dayUpdated = true;\r\n  }\r\n\r\n  if (contactsCurr - dayChecker &gt;= 1 and not oldContacts) { \/\/ checks if it has been one day\r\n    dayUpdated = false;\r\n    timeChecker = regTimer;\r\n  }\r\n\r\n  \/\/\/\/   The following lines can be uncommented to start DEMO MODE and comment lines 111-135\r\n  \/\/  regTimer = millis();\r\n  \/\/ if (lidSensor &lt;= 50 and lidReset and not dayUpdated and not oldContacts) { \/\/ adds one day if lid opened\r\n  \/\/    lidReset = false;\r\n  \/\/    contactsLife = contactsLife + 1;\r\n  \/\/    dayUpdated = true;\r\n  \/\/  }\r\n  \/\/\r\n  \/\/  if (dayUpdated == false and regTimer - timeChecker &gt; 9000 and not oldContacts) { \/\/ adds one day automatically\r\n  \/\/    contactsLife = contactsLife + 1;\r\n  \/\/    dayUpdated = true;\r\n  \/\/  }\r\n  \/\/\r\n  \/\/  if (regTimer - timeChecker &gt;= 10000 and not oldContacts) { \/\/ checks if it has been 10 secs\r\n  \/\/    dayUpdated = false;\r\n  \/\/    timeChecker = regTimer;\r\n  \/\/  }\r\n\r\n  if (lidSensor &gt; 50 and not lidReset and not oldContacts) { \/\/ closed lid\r\n    lidReset = true;\r\n  }\r\n\r\n\r\n  if (contactsLife &gt;= 7) { \/\/ show warning message after it has been 7 days\r\n    oldContacts = true;\r\n    screen.clear();\r\n    screen.home();\r\n    screen.print(\"Time For New Contacts!\");\r\n\r\n    while (resetButton == LOW) { \/\/ if the button is pressed to reset, resets the tracker\r\n      resetButton = digitalRead(BUTTONPIN);\r\n    }\r\n\r\n    contactsLife = 0;\r\n    oldContacts = false;\r\n    startChecker = true;\r\n    delay(1000);\r\n    resetButton = LOW;\r\n  }\r\n\r\n  \/******************************************************************************************************\r\n       Code for arcade button functions and LCD display resets\r\n  ******************************************************************************************************\/\r\n\r\n  resetButton = digitalRead(BUTTONPIN);\r\n\r\n  Serial.println(resetButton);\r\n\r\n  if (resetButton == HIGH and buttonStart == 0) { \/\/ starts timer when button is pressed\r\n    buttonStart = millis();\r\n  }\r\n\r\n  if (resetButton == HIGH and buttonStart != 0) { \/\/ pressed button and timer is on\r\n    resetPrint();\r\n    elapsedTime = millis();\r\n    if (elapsedTime - buttonStart &gt;= 3000) {\r\n      buttonStart = 0;\r\n      contactsLife = 0;\r\n      oldContacts = false;\r\n      screen.clear();\r\n      defaultPrint();\r\n    } else {\r\n      defaultPrint();\r\n    }\r\n  }\r\n\r\n  if (resetButton == LOW) { \/\/ when button is not pressed\r\n    defaultPrint();\r\n    clearPrint();\r\n  }\r\n}\r\n\r\n\/\/ function that displays the reset screen on the LCD display\r\nvoid resetPrint() {\r\n  screen.setCursor(0, 2);\r\n  screen.print(String(\"Hold for 3 seconds\"));\r\n  screen.setCursor(0, 3);\r\n  screen.print(String(\"to reset\"));\r\n}\r\n\r\n\/\/ function that displays the default screen on the LCD display\r\nvoid defaultPrint() {\r\n  screen.home();\r\n  screen.print(String(\" Contacts Life Span:\"));\r\n  screen.setCursor(7, 1);\r\n  screen.print(contactsLife + String(\" day(s)\"));\r\n}\r\n\r\n\/\/ function that clears the screen on the LCD display due to some bugs\r\nvoid clearPrint() {\r\n  screen.setCursor(0, 2);\r\n  screen.print(String(\"                  \"));\r\n  screen.setCursor(0, 3);\r\n  screen.print(String(\"        \"));\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Sharon Li The corrective lenses tracker and holder allow an individual to store their contact lenses and glasses in the two separate compartments in addition to serving&#8230;<\/p>\n","protected":false},"author":226,"featured_media":16664,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[89],"tags":[],"_links":{"self":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-json\/wp\/v2\/posts\/16660"}],"collection":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-json\/wp\/v2\/users\/226"}],"replies":[{"embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-json\/wp\/v2\/comments?post=16660"}],"version-history":[{"count":11,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-json\/wp\/v2\/posts\/16660\/revisions"}],"predecessor-version":[{"id":16704,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-json\/wp\/v2\/posts\/16660\/revisions\/16704"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-json\/wp\/v2\/media\/16664"}],"wp:attachment":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-json\/wp\/v2\/media?parent=16660"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-json\/wp\/v2\/categories?post=16660"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/f2022\/work\/wp-json\/wp\/v2\/tags?post=16660"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}