{"id":15176,"date":"2022-02-16T06:56:48","date_gmt":"2022-02-16T11:56:48","guid":{"rendered":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/?p=15176"},"modified":"2022-02-16T06:56:48","modified_gmt":"2022-02-16T11:56:48","slug":"double-transducer-from-height-to-light","status":"publish","type":"post","link":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/double-transducer-from-height-to-light\/","title":{"rendered":"Double Transducer: From Height to Light"},"content":{"rendered":"<div id=\"attachment_15181\" style=\"width: 1085px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-15181\" loading=\"lazy\" class=\"size-full wp-image-15181\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/featured.png\" alt=\"\" width=\"1075\" height=\"795\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/featured.png 1075w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/featured-300x222.png 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/featured-1024x757.png 1024w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/featured-768x568.png 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/featured-973x720.png 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/featured-508x376.png 508w\" sizes=\"(max-width: 1075px) 100vw, 1075px\" \/><p id=\"caption-attachment-15181\" class=\"wp-caption-text\">Overall photo for proportion and scale<\/p><\/div>\n<div id=\"attachment_15184\" style=\"width: 901px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-15184\" loading=\"lazy\" class=\"size-full wp-image-15184\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/featured_alt.png\" alt=\"\" width=\"891\" height=\"820\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/featured_alt.png 891w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/featured_alt-300x276.png 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/featured_alt-768x707.png 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/featured_alt-508x468.png 508w\" sizes=\"(max-width: 891px) 100vw, 891px\" \/><p id=\"caption-attachment-15184\" class=\"wp-caption-text\">Overall photo for proportion and scale (alternate angle)<\/p><\/div>\n<div id=\"attachment_15185\" style=\"width: 987px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-15185\" loading=\"lazy\" class=\"size-full wp-image-15185\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/overall_juan.png\" alt=\"\" width=\"977\" height=\"595\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/overall_juan.png 977w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/overall_juan-300x183.png 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/overall_juan-768x468.png 768w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/overall_juan-973x593.png 973w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/overall_juan-508x309.png 508w\" sizes=\"(max-width: 977px) 100vw, 977px\" \/><p id=\"caption-attachment-15185\" class=\"wp-caption-text\">Overall photo of version_juan for proportion and scale, with a pen as reference for size<\/p><\/div>\n<p><strong>Close-ups<\/strong><\/p>\n<div id=\"attachment_15186\" style=\"width: 505px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-15186\" loading=\"lazy\" class=\"size-full wp-image-15186\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/motor_closeup.png\" alt=\"\" width=\"495\" height=\"660\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/motor_closeup.png 495w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/motor_closeup-225x300.png 225w\" sizes=\"(max-width: 495px) 100vw, 495px\" \/><p id=\"caption-attachment-15186\" class=\"wp-caption-text\">Here is a closeup of the motor setup. Here you can see how both the motor and the IR sensor are elevated and the propellor is attached to the tip of the motor, allowing it to spin over the top of the sensor.<\/p><\/div>\n<p>&nbsp;<\/p>\n<div id=\"attachment_15187\" style=\"width: 576px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-15187\" loading=\"lazy\" class=\"size-full wp-image-15187\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/IR_sensor1.png\" alt=\"\" width=\"566\" height=\"424\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/IR_sensor1.png 566w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/IR_sensor1-300x225.png 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/IR_sensor1-508x381.png 508w\" sizes=\"(max-width: 566px) 100vw, 566px\" \/><p id=\"caption-attachment-15187\" class=\"wp-caption-text\">Here is our first IR sensor which is used to get the height of the index card off of the table. It was necessary to hold down the wires to the side to ensure minimal interference with the sensor\u2019s readings.<\/p><\/div>\n<p>&nbsp;<\/p>\n<div style=\"width: 620px;\" class=\"wp-video\"><!--[if lt IE 9]><script>document.createElement('video');<\/script><![endif]-->\n<video class=\"wp-video-shortcode\" id=\"video-15176-1\" width=\"620\" height=\"349\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/IMG_1815.mp4?_=1\" \/><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/IMG_1815.mp4\">https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/IMG_1815.mp4<\/a><\/video><\/div>\n<p>&nbsp;<\/p>\n<div style=\"width: 620px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-15176-2\" width=\"620\" height=\"349\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/Untitled.mp4?_=2\" \/><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/Untitled.mp4\">https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/Untitled.mp4<\/a><\/video><\/div>\n<p>&nbsp;<\/p>\n<p><strong>Narrative description<\/strong><\/p>\n<p>For our double transducer, we were tasked with converting the height of an index card, ranging from 1 to 4 inches, to the blinking rate of an LED. When considering how to gauge the height of the index card, we started looking at the different proximity sensors that would be useful in this situation. After consulting with both Zach and Eric, we determined that the best one to use would be the IR sensor, which emits a light and then receives it after it bounces off a nearby surface. With this, one challenge that we faced was adjusting the potentiometer attached for ambient light, which changed constantly even in the classroom. For our second component, we decided that an interesting conversion to explore would be the rotational speed of a motor. We decided to use a DC motor, and then another IR sensor to detect the number of rotations that occurred within a given time period. This was gauged by marking the number of times an attached wooden piece went over the IR sensor per second. Finally, we converted this to the rate at which an LED blinked. At the request of the group after us, we maintained that every time the LED turned on, it would only stay on for 25 milliseconds. Because of this, we were actually manipulating the time between blinks as opposed to the time the LED was on. This range was constructed to stay between about 1-20 blinks per second.<\/p>\n<p><strong>Progress images<\/strong><\/p>\n<div id=\"attachment_15188\" style=\"width: 585px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-15188\" loading=\"lazy\" class=\"size-full wp-image-15188\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/Progress1.png\" alt=\"\" width=\"575\" height=\"431\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/Progress1.png 575w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/Progress1-300x225.png 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/Progress1-508x381.png 508w\" sizes=\"(max-width: 575px) 100vw, 575px\" \/><p id=\"caption-attachment-15188\" class=\"wp-caption-text\">Here is an image of what we had as we were initially figuring out the IR sensor and how to hook it up to the Arduino.<\/p><\/div>\n<div id=\"attachment_15189\" style=\"width: 587px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-15189\" loading=\"lazy\" class=\"size-full wp-image-15189\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/Progress2.png\" alt=\"\" width=\"577\" height=\"433\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/Progress2.png 577w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/Progress2-300x225.png 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/Progress2-508x381.png 508w\" sizes=\"(max-width: 577px) 100vw, 577px\" \/><p id=\"caption-attachment-15189\" class=\"wp-caption-text\">Here we have our proximity sensor, LCD display, and LED hooked up to the arduino, making sure that each part is able to run properly without the motor component.<\/p><\/div>\n<div id=\"attachment_15190\" style=\"width: 499px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-15190\" loading=\"lazy\" class=\"size-full wp-image-15190\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/Progress3.png\" alt=\"\" width=\"489\" height=\"366\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/Progress3.png 489w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/Progress3-300x225.png 300w\" sizes=\"(max-width: 489px) 100vw, 489px\" \/><p id=\"caption-attachment-15190\" class=\"wp-caption-text\">This is the setup we used to trigger our second IR sensor, which detected the change in rotation of the motor. The wooden piece attached to the top was essential to allowing the IR sensor to count the rotations for rps.<\/p><\/div>\n<div id=\"attachment_15191\" style=\"width: 597px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-15191\" loading=\"lazy\" class=\"size-full wp-image-15191\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/Progress4.png\" alt=\"\" width=\"587\" height=\"441\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/Progress4.png 587w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/Progress4-300x225.png 300w, https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/Progress4-508x382.png 508w\" sizes=\"(max-width: 587px) 100vw, 587px\" \/><p id=\"caption-attachment-15191\" class=\"wp-caption-text\">Here is the initial setup for our motor, where we propped it up on popsicle sticks to make it so the propeller overhead was at a good height for the reader.<\/p><\/div>\n<p><strong>Discussion\u00a0<\/strong><\/p>\n<p>The path to creating our double transducer was by no means a simple and smooth one. Unsurprisingly, there were a few hurdles in creating our double transducer which both challenged and strengthened our problem-solving and researching abilities. Of the 10 components used in our project, nearly half were components we were already experienced in from previously assigned online course modules. We knew how to work with the Arduino UNO controller, potentiometers (of which we needed 2), as well as our final output: an LED light. Ultimately, that meant that we needed to familiarize ourselves with 5 new components: an LCD screen, an IR sensor (of which we\u2019d use two), an H-Bridge motor driver, a DC barrel jack adapter, and a DC motor. For the sake of time, we decided to assign ourselves each half of the total new components to work on. Shreeja was responsible for the two IR sensors and LCD screen, and Juan was responsible for the H-Bridge motor driver, DC barrel jack adapter, and the DC motor itself.<\/p>\n<p>Setting up and utilizing the parts we were already familiar with (the LED, Arduino, and potentiometers) was relatively trivial. It was only until we began experimenting with the new components that the difficulty of the project increased. Each new component took some time to get used to, and although some required more time than others, there were a few components that stuck out more in terms of giving us the most difficulty. The two components that come to mind are the IR sensors and the H-Bridge motor driver. The H-Bridge motor driver was a fairly non-trivial component since it essentially served as a mini-arduino for the DC motor in the sense that it read input and gave output that was directly tied to the DC motor. The H-Bridge required some soldering in addition to research in order to ensure that it would work with the DC barrel jack adapter and DC motor. The IR sensors, on the other hand, were deceptively difficult; we were technically able to get them functioning early on, but we were constantly having difficulty adjusting the sensor\u2019s sensitivity to our liking. Factors such as ambient lighting (which the potentiometers helped us control), possibly faulty sensors, and confusion with the software aspect of IR sensor input and output led to a majority of our time being spent on fine-tuning the IR sensors to work like we wanted them to. They were, after all, crucial to our transducer as not only was it how our final project received input, it was also the means in which we were able to measure the speed of our motor. Given their importance, the long period of time we spent trying to perfect our IR sensor settings was in retrospect justified.<\/p>\n<p>I can\u2019t help but wonder what would\u2019ve happened if we had decided to use an ultrasonic ranger instead of our IR sensors to detect distance. We had initially chosen to use IR sensors because we felt that it was more straightforward and natural, but in theory we could have also used an ultrasonic sensor to at the very least detect the height of an index card, and maybe even to detect the rotations our DC motor is spitting out. It\u2019s possible that such a substitution could have dramatically reduced the time we spent on the project since we wouldn\u2019t have to constantly adjust our IR sensors, but it\u2019s also probable that we would have run into some other roadblock instead.<\/p>\n<p>Overall, the project itself was enjoyable and more importantly quite educational. We were able to learn how to use certain components like LCD screens, DC motors, and IR sensors, decently well enough to the point where we could use them in future projects with much more comfort. If this project is any indication on how future projects will be for the course, then we\u2019re very much looking forward to progressing through the course and learning even more components and arduino-related material.<\/p>\n<p><strong>Functional block diagram and schematic<\/strong><\/p>\n<div id=\"attachment_15192\" style=\"width: 1418px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/Double_Transducer_1.drawio.svg\"><img aria-describedby=\"caption-attachment-15192\" loading=\"lazy\" class=\"size-full wp-image-15192\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/Double_Transducer_1.drawio.svg\" alt=\"\" width=\"1408\" height=\"542\" \/><\/a><p id=\"caption-attachment-15192\" class=\"wp-caption-text\">Functional block diagram<\/p><\/div>\n<div id=\"attachment_15193\" style=\"width: 1401px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-15193\" loading=\"lazy\" class=\"size-full wp-image-15193\" src=\"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-content\/uploads\/2022\/02\/Double_Transducer_2.drawio.svg\" alt=\"\" width=\"1391\" height=\"1432\" \/><p id=\"caption-attachment-15193\" class=\"wp-caption-text\">Schematic<\/p><\/div>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\">\/\/Double Transducer: from height to light\r\n\/\/\r\n\/\/By Team 7\r\n\/\/\r\n\/\/ For the code, in addition to establishing each of the pins used\r\n\/\/ as inputs or outputs in the arguino, we also did most of our mapping\r\n\/\/ conversions with the code. Also, we used the code to time each of the \r\n\/\/ parameters and display the values on our LCD.\r\n\/\/\r\n\/\/\r\n\/\/ Each of the pins are commented below to explain their function:\r\n\r\n\/\/ shortcut to refer to the IR sensor pin\r\nconst int PROXPIN = A0;\r\n\/\/shortcut to refer to LED pin \r\nconst int LEDPIN = 4;\r\n\/\/shortcut to refer to motor pin\r\nconst int MOTORPIN = 10;\r\n\/\/shortcut to refer to the IR that reads the motor val\r\nconst int PROXMOTOR = A1;\r\n\r\nint motorProxPrevious = 0;\r\nint rotations = 0;\r\nint rps = 0;\r\nint lastCycle = 0;\r\nunsigned long timer = 0;\r\nconst int INTERVAL = 1000; \/\/number of milliseconds per second for reading\r\n\r\nunsigned long lastTime = millis();\r\nunsigned long LEDwait = millis();\r\nunsigned long LEDon = millis();\r\n  \r\n\/\/ imports the LCD programming library\r\n\/\/ and initializes the screen with it's dimensions\r\n#include &lt;Wire.h&gt; \r\n#include &lt;LiquidCrystal_I2C.h&gt;\r\nLiquidCrystal_I2C screen(0x27, 16, 2);\r\n\r\nbyte frowny[] = {\r\n  B00000,\r\n  B11011,\r\n  B11011,\r\n  B00000,\r\n  B00000,\r\n  B01110,\r\n  B10001,\r\n  B00000\r\n}; \r\n\r\nvoid setup() {\r\n  \/\/initializes the input IR sensor to get the proximity of the index card\r\n  pinMode(PROXPIN, INPUT);\r\n  Serial.begin(9600);\r\n\r\n  pinMode(MOTORPIN, OUTPUT);\r\n  Serial.begin(9600);\r\n  \r\n  pinMode(LEDPIN, OUTPUT);\r\n  digitalWrite(LEDPIN, LOW);\r\n\r\n  pinMode(PROXMOTOR, INPUT);\r\n  Serial.begin(9600);\r\n\r\n  \/\/initializes the LCD screen and turns on backlight, sets cursor home\r\n  screen.init();\r\n  screen.backlight();\r\n  screen.home();\r\n}\r\n\r\nvoid loop() {\r\n  int readVal;\r\n  readVal = analogRead(PROXPIN);\r\n  \r\n  \/\/to find difference in distance between them\r\n  int motorProx;\r\n  motorProx = analogRead(PROXMOTOR);\r\n  Serial.println(motorProx);\r\n\r\n  \/\/translates the index card height to the speed of the motor\r\n  int motorSpeed = map(readVal, 10, 90, 50, 70);\r\n  analogWrite(MOTORPIN, motorSpeed);\r\n    \r\n  \/\/measure motor fan rotational speed\r\n  int difference = 0;\r\n  \/\/change in diff\r\n  if (motorProx != 0){\r\n    difference = motorProx - motorProxPrevious; \r\n  }\r\n  \r\n  \/\/when piece is detected, increment rotations (one complete rotation)\r\n  if (difference &gt;=2){\r\n      rotations++;\r\n  }\r\n  \r\n  motorProxPrevious = motorProx;\r\n   \r\n\r\n  if (millis() &gt;= timer){\r\n    rps = rotations;\r\n    rotations = 0;\r\n    timer = millis() + INTERVAL;\r\n  }\r\n\r\n  int blinkGap = map(rps, 0, 10, 25, 925);\r\n\r\n  digitalWrite(LEDPIN, LOW);\r\n  delay(blinkGap);\r\n  digitalWrite(LEDPIN, HIGH);\r\n  delay(25);\r\n  \r\n  \/\/screen display code\r\n  screen.print(\"i:\");\r\n  screen.print(readVal); \/\/shows the IR value\r\n  screen.print(\"  \");\r\n  screen.print(\"m: \");\r\n  screen.print(motorSpeed);\r\n  screen.setCursor(0, 1);\r\n  screen.print(\"       \");\r\n  screen.print(rps);\r\n  screen.print(\"  o: \");\r\n  screen.print(blinkGap);\r\n  screen.home();\r\n}\r\n<\/pre>\n<p>Project done by Shreeja and Juan<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Close-ups &nbsp; &nbsp; &nbsp; &nbsp; Narrative description For our double transducer, we were tasked with converting the height of an index card, ranging from 1 to 4 inches,&#8230;<\/p>\n","protected":false},"author":218,"featured_media":15181,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[86],"tags":[],"_links":{"self":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-json\/wp\/v2\/posts\/15176"}],"collection":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-json\/wp\/v2\/users\/218"}],"replies":[{"embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-json\/wp\/v2\/comments?post=15176"}],"version-history":[{"count":3,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-json\/wp\/v2\/posts\/15176\/revisions"}],"predecessor-version":[{"id":15198,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-json\/wp\/v2\/posts\/15176\/revisions\/15198"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-json\/wp\/v2\/media\/15181"}],"wp:attachment":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-json\/wp\/v2\/media?parent=15176"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-json\/wp\/v2\/categories?post=15176"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-223\/s2022\/work\/wp-json\/wp\/v2\/tags?post=15176"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}