<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Making Things Interactive</title>
	<atom:link href="https://courses.ideate.cmu.edu/48-339/s2018/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>https://courses.ideate.cmu.edu/48-339/s2018</link>
	<description>48-339/739 Spring 2018</description>
	<lastBuildDate>Mon, 21 May 2018 16:44:58 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.2.20</generator>
	<item>
		<title>Room Occupancy detection to slack</title>
		<link>https://courses.ideate.cmu.edu/48-339/s2018/?p=778</link>
				<comments>https://courses.ideate.cmu.edu/48-339/s2018/?p=778#respond</comments>
				<pubDate>Sat, 19 May 2018 01:23:51 +0000</pubDate>
		<dc:creator><![CDATA[vkamath@andrew.cmu.edu]]></dc:creator>
				<category><![CDATA[Assignment 5]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-339/s2018/?p=778</guid>
				<description><![CDATA[Abstract: A slackbot that notifies a Slack channel when the room is occupied based on a simple light sensor. Code: https://drive.google.com/open?id=139H6NqCLxnCcSYHNwvYoITcjAqYegCBE Refernces: A simple light sensor code and P5serial [From my assignment 3] https://courses.ideate.cmu.edu/48-339/s2018/?p=252]]></description>
								<content:encoded><![CDATA[<p><iframe width="840" height="473" src="https://www.youtube.com/embed/CqxRKcqGY2w?feature=oembed" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></p>
<p><strong>Abstract</strong>: A slackbot that notifies a Slack channel when the room is occupied based on a simple light sensor.</p>
<p><strong>Code</strong>: <a href="https://drive.google.com/open?id=139H6NqCLxnCcSYHNwvYoITcjAqYegCBE">https://drive.google.com/open?id=139H6NqCLxnCcSYHNwvYoITcjAqYegCBE</a></p>
<p><strong>Refernces</strong>: A simple light sensor code and P5serial [From my assignment 3]<a href="https://courses.ideate.cmu.edu/48-339/s2018/?p=252"> https://courses.ideate.cmu.edu/48-339/s2018/?p=252</a></p>
]]></content:encoded>
							<wfw:commentRss>https://courses.ideate.cmu.edu/48-339/s2018/?feed=rss2&#038;p=778</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Final Project: Emotionally Intelligent Home Assistant</title>
		<link>https://courses.ideate.cmu.edu/48-339/s2018/?p=773</link>
				<comments>https://courses.ideate.cmu.edu/48-339/s2018/?p=773#respond</comments>
				<pubDate>Sat, 19 May 2018 01:15:33 +0000</pubDate>
		<dc:creator><![CDATA[vkamath@andrew.cmu.edu]]></dc:creator>
				<category><![CDATA[Final Project]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-339/s2018/?p=773</guid>
				<description><![CDATA[Abstract: Existing home assistants improve interaction in the home by using speech recognition and intelligent natural language processing. However, they lack the emotional intelligence needed to listen, motivate and support the user and provide support towards a healthy mind. My project proposes the use of a custom google assistant through AIY voice kit to detect &#8230; <a href="https://courses.ideate.cmu.edu/48-339/s2018/?p=773" class="more-link">Continue reading<span class="screen-reader-text"> "Final Project: Emotionally Intelligent Home Assistant"</span></a>]]></description>
								<content:encoded><![CDATA[<p><strong>Abstract</strong>: Existing home assistants improve interaction in the home by using speech recognition and intelligent natural language processing. However, they lack the emotional intelligence needed to listen, motivate and support the user and provide support towards a healthy mind. My project proposes the use of a custom google assistant through AIY voice kit to detect emotion, provide social support and generate empathy in the user.</p>
<p>The project builds on existing technology and can potentially replace the current Google home assistant.</p>
<p><strong>Hardware: </strong></p>
<p><img class="alignnone size-large wp-image-776" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_20180518_211032-768x1024.jpg" alt="" width="768" height="1024" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_20180518_211032-768x1024.jpg 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_20180518_211032-225x300.jpg 225w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_20180518_211032-1200x1600.jpg 1200w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" />AIY Voice kit and a mobile browser</p>
<p><strong><br />
Systems Diagram:</strong></p>
<p><img class="alignnone size-large wp-image-775" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-18-at-8.57.00-PM-1024x456.png" alt="" width="840" height="374" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-18-at-8.57.00-PM-1024x456.png 1024w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-18-at-8.57.00-PM-300x134.png 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-18-at-8.57.00-PM-768x342.png 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-18-at-8.57.00-PM-1200x535.png 1200w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /></p>
<p><strong>DEMO:</strong></p>
<p><iframe width="840" height="473" src="https://www.youtube.com/embed/LO-pLupkgA8?feature=oembed" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></p>
<p><strong>References</strong></p>
<ul>
<li>Presentation: <a href="https://docs.google.com/presentation/d/169fmzAsyPFhM8moPhTZnf5Y-wiXX31B6hplLMrOmBiw/edit?usp=sharing">https://docs.google.com/presentation/d/169fmzAsyPFhM8moPhTZnf5Y-wiXX31B6hplLMrOmBiw/edit?usp=sharing</a></li>
<li>Poster: <a href="https://drive.google.com/open?id=1uvayACRuk-z6rNcaAEs4sQVzNWjiD8bE">https://drive.google.com/open?id=1uvayACRuk-z6rNcaAEs4sQVzNWjiD8bE</a></li>
<li>Code: <a href="https://drive.google.com/drive/folders/1oWowTgch1Pwi7Ge95i0tyf_rBSPKiHOe?usp=sharing">https://drive.google.com/drive/folders/1oWowTgch1Pwi7Ge95i0tyf_rBSPKiHOe?usp=sharing</a></li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
							<wfw:commentRss>https://courses.ideate.cmu.edu/48-339/s2018/?feed=rss2&#038;p=773</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Smart Desk</title>
		<link>https://courses.ideate.cmu.edu/48-339/s2018/?p=750</link>
				<comments>https://courses.ideate.cmu.edu/48-339/s2018/?p=750#respond</comments>
				<pubDate>Thu, 17 May 2018 06:56:13 +0000</pubDate>
		<dc:creator><![CDATA[Rachel Wong]]></dc:creator>
				<category><![CDATA[Final Project]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-339/s2018/?p=750</guid>
				<description><![CDATA[The goal of this project is to add interactive functionality to an adjustable standing desk. Countless times my environment interrupts my workflow when I’m at home. I use my room as a home office, and it is important that my housemates and friends know when I am on an important call and cannot be interrupted. &#8230; <a href="https://courses.ideate.cmu.edu/48-339/s2018/?p=750" class="more-link">Continue reading<span class="screen-reader-text"> "Smart Desk"</span></a>]]></description>
								<content:encoded><![CDATA[<p><span style="font-weight: 400">The goal of this project is to add interactive functionality to an adjustable standing desk. Countless times my environment interrupts my workflow when I’m at home. I use my room as a home office, and it is important that my housemates and friends know when I am on an important call and cannot be interrupted. At the same time, I often find myself getting carried away and spending hours in front of my task without moving at all. The small systems on this desk aim to both aid the user in time management, but also help remind them that it is healthy to stop and take breaks. </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 400">Three Main Systems</span></p>
<p><span style="font-weight: 400">1.A </span><b>ultrasonic sensor</b><span style="font-weight: 400"> is visible under the table and will detect if a person is standing at the desk. If there is someone there, it triggers a </span><b>neopixel light</b><span style="font-weight: 400"> to turn on. If someone is standing there for more than 52 minutes, the neopixel turns red. This is meant to remind them to take a short break from the given task before continuing. </span></p>
<p><em><span style="font-weight: 200">Note: the timer for the standing person is set to 5 seconds for demo purposes. If used for real tasks, the timer would be set for 52 minutes.</span></em></p>
<p><img class="alignnone wp-image-756" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.25.47-AM-300x213.png" alt="" width="249" height="177" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.25.47-AM-300x213.png 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.25.47-AM-768x545.png 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.25.47-AM.png 936w" sizes="(max-width: 249px) 85vw, 249px" /> <img class="alignnone wp-image-757" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.27.01-AM-300x212.png" alt="" width="266" height="188" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.27.01-AM-300x212.png 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.27.01-AM-768x543.png 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.27.01-AM-1024x724.png 1024w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.27.01-AM.png 1038w" sizes="(max-width: 266px) 85vw, 266px" /></p>
<p><span style="font-weight: 400">2. A task management system uses a</span><b> RFID reader</b><span style="font-weight: 400"> and </span><b>RFID credit cards</b><span style="font-weight: 400"> to set timers on the users task. The user swipes a box across the reader and a timer is set. This timer is visualized by the </span><b>LED</b><span style="font-weight: 400">s inside of the box turning on. When the time is about to end for the given task, the LEDs will blink before turning off. The user is only permitted to light up one task at a time, so they have a visual reminder of which task they should be working on. I wanted to use color-blind friendly colors, but our lab ran out of led colors. </span></p>
<p><em><span style="font-weight: 400">Note: the timer for each task is set to 5 seconds for demo purposes. If used for real tasks, the timer can be set to the time the user desires to spend on each task.</span></em></p>
<p><img class="alignnone  wp-image-751" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.37.04-AM-261x300.png" alt="" width="186" height="214" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.37.04-AM-261x300.png 261w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.37.04-AM.png 718w" sizes="(max-width: 186px) 85vw, 186px" /> <img class="alignnone  wp-image-753" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.37.55-AM-300x267.png" alt="" width="143" height="127" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.37.55-AM-300x267.png 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.37.55-AM-768x683.png 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.37.55-AM.png 866w" sizes="(max-width: 143px) 85vw, 143px" /> <img class="wp-image-752 alignnone" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.37.28-AM-300x281.png" alt="" width="205" height="192" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.37.28-AM-300x281.png 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.37.28-AM-768x719.png 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.37.28-AM.png 812w" sizes="(max-width: 205px) 85vw, 205px" /></p>
<p>3. <span style="font-weight: 400">A led, ideally placed outside of your office door, is used to tell your housemates or if it is okay for them to come in and interrupt you or not. The switch would be placed on the desk and the user will choose to set it to green or red.</span></p>
<p><img class="alignnone  wp-image-755" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.46.04-AM-300x288.png" alt="" width="148" height="142" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.46.04-AM-300x288.png 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.46.04-AM-768x737.png 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.46.04-AM.png 838w" sizes="(max-width: 148px) 85vw, 148px" /> <img class="alignnone  wp-image-754" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.45.43-AM-300x235.png" alt="" width="226" height="177" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.45.43-AM-300x235.png 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.45.43-AM-768x602.png 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-08-at-10.45.43-AM.png 812w" sizes="(max-width: 226px) 85vw, 226px" /></p>
<p>Actual Project:</p>
<p><strong>Ultrasonic sensor</strong></p>
<p><img class="alignnone  wp-image-759" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0003-300x200.jpg" alt="" width="499" height="333" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0003-300x200.jpg 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0003-768x512.jpg 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0003-1024x683.jpg 1024w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0003-1200x801.jpg 1200w" sizes="(max-width: 499px) 85vw, 499px" /></p>
<p><img class="alignnone  wp-image-763" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0004-300x200.jpg" alt="" width="491" height="327" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0004-300x200.jpg 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0004-768x512.jpg 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0004-1024x683.jpg 1024w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0004-1200x801.jpg 1200w" sizes="(max-width: 491px) 85vw, 491px" /></p>
<p><iframe width="840" height="473" src="https://www.youtube.com/embed/6OjnKlqzruc?feature=oembed" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></p>
<p><strong>RFID task organizer</strong></p>
<p><img class="alignnone  wp-image-761" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0002-300x200.jpg" alt="" width="506" height="338" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0002-300x200.jpg 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0002-768x512.jpg 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0002-1024x683.jpg 1024w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0002-1200x801.jpg 1200w" sizes="(max-width: 506px) 85vw, 506px" /> <img class="alignnone  wp-image-760" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/fullsizeoutput_5f5-300x200.jpeg" alt="" width="509" height="340" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/fullsizeoutput_5f5-300x200.jpeg 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/fullsizeoutput_5f5-768x512.jpeg 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/fullsizeoutput_5f5-1024x683.jpeg 1024w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/fullsizeoutput_5f5-1200x801.jpeg 1200w" sizes="(max-width: 509px) 85vw, 509px" /></p>
<p><iframe width="840" height="473" src="https://www.youtube.com/embed/Nsdny0ufFb0?feature=oembed" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></p>
<p>RFID Reader Wiring</p>
<p><img class="alignnone  wp-image-769" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0005-1-300x200.jpg" alt="" width="514" height="342" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0005-1-300x200.jpg 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0005-1-768x512.jpg 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0005-1-1024x683.jpg 1024w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0005-1-1200x801.jpg 1200w" sizes="(max-width: 514px) 85vw, 514px" /> <img class="alignnone  wp-image-768" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0004-1-300x200.jpg" alt="" width="511" height="340" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0004-1-300x200.jpg 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0004-1-768x512.jpg 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0004-1-1024x683.jpg 1024w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0004-1-1200x801.jpg 1200w" sizes="(max-width: 511px) 85vw, 511px" /></p>
<p>Inside card box</p>
<p><img class="alignnone  wp-image-766" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0002-1-300x200.jpg" alt="" width="515" height="344" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0002-1-300x200.jpg 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0002-1-768x512.jpg 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0002-1-1024x683.jpg 1024w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0002-1-1200x801.jpg 1200w" sizes="(max-width: 515px) 85vw, 515px" /></p>
<p><strong>Busy/free switch </strong></p>
<p><img class="alignnone  wp-image-762" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0003-1-300x200.jpg" alt="" width="515" height="343" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0003-1-300x200.jpg 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0003-1-768x512.jpg 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0003-1-1024x683.jpg 1024w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0003-1-1200x801.jpg 1200w" sizes="(max-width: 515px) 85vw, 515px" /></p>
<p><iframe width="840" height="473" src="https://www.youtube.com/embed/R9Vwh6nxXfM?feature=oembed" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></p>
<p>&nbsp;</p>
<p><strong>Smart Desk </strong></p>
<p><img class="alignnone  wp-image-764" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0005-300x200.jpg" alt="" width="534" height="356" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0005-300x200.jpg 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0005-768x512.jpg 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0005-1024x683.jpg 1024w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/DSC_0005-1200x801.jpg 1200w" sizes="(max-width: 534px) 85vw, 534px" /></p>
<p><span style="font-weight: 400">Future Work</span></p>
<p><span style="font-weight: 400">While my desk was a simple prototype of a potential product, there are a few future ideas that resulted from the creation process.</span></p>
<ul>
<li style="font-weight: 400"><span style="font-weight: 400">Using the task box light system in an open office space to keep your team organized. Oftentimes, teams are working on multiple projects in parallel and this system could be used to visually communicate which project each individual is currently working on. </span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Add a temperature controlling functionality (a fan that automatically blows when the room reaches a certain temperature) </span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Expand the neopixel light system so it can be used as the main source of light while working. This will make the “take a break” alert more prominent and harder to avoid. I also want to make the alert blink as a warning before fully turning red. </span></li>
</ul>
]]></content:encoded>
							<wfw:commentRss>https://courses.ideate.cmu.edu/48-339/s2018/?feed=rss2&#038;p=750</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Tap Happy</title>
		<link>https://courses.ideate.cmu.edu/48-339/s2018/?p=723</link>
				<comments>https://courses.ideate.cmu.edu/48-339/s2018/?p=723#respond</comments>
				<pubDate>Tue, 15 May 2018 04:06:12 +0000</pubDate>
		<dc:creator><![CDATA[mcherban@andrew.cmu.edu]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-339/s2018/?p=723</guid>
				<description><![CDATA[Final Presentation Setup:   ^ Two patches, one has two tappable areas, the other has three. ^ Swapping out the patches to test. ^ Design samples on the various colors of canvas. The texture was a bit too rough for this application.       ^ Process of making the patches First Tests with taps &#8230; <a href="https://courses.ideate.cmu.edu/48-339/s2018/?p=723" class="more-link">Continue reading<span class="screen-reader-text"> "Tap Happy"</span></a>]]></description>
								<content:encoded><![CDATA[<p><img class="alignnone size-large wp-image-724" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-14-at-11.48.02-PM-1024x574.png" alt="" width="840" height="471" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-14-at-11.48.02-PM-1024x574.png 1024w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-14-at-11.48.02-PM-300x168.png 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-14-at-11.48.02-PM-768x431.png 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-14-at-11.48.02-PM.png 1025w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /></p>
<h4>Final Presentation Setup:</h4>
<p><img class="alignnone size-large wp-image-725" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1716-1024x768.jpg" alt="" width="840" height="630" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1716-1024x768.jpg 1024w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1716-300x225.jpg 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1716-768x576.jpg 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1716-1200x900.jpg 1200w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /> <img class="alignnone size-large wp-image-729" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1835-1024x768.jpg" alt="" width="840" height="630" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1835-1024x768.jpg 1024w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1835-300x225.jpg 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1835-768x576.jpg 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1835-1200x900.jpg 1200w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /></p>
<p>^ Two patches, one has two tappable areas, the other has three.</p>
<p><img class="alignnone size-large wp-image-730" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1837-1024x768.jpg" alt="" width="840" height="630" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1837-1024x768.jpg 1024w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1837-300x225.jpg 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1837-768x576.jpg 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1837-1200x900.jpg 1200w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /></p>
<p>^ Swapping out the patches to test.</p>
<p><img class="alignnone size-large wp-image-731" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1839-1024x768.jpg" alt="" width="840" height="630" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1839-1024x768.jpg 1024w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1839-300x225.jpg 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1839-768x576.jpg 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1839-1200x900.jpg 1200w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /></p>
<p><img class="alignnone size-large wp-image-732" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1847-1024x768.jpg" alt="" width="840" height="630" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1847-1024x768.jpg 1024w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1847-300x225.jpg 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1847-768x576.jpg 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1847-1200x900.jpg 1200w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /></p>
<p>^ Design samples on the various colors of canvas. The texture was a bit too rough for this application.</p>
<p><img class="alignnone wp-image-727 " src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1606-2-e1526356317475-768x1024.jpg" alt="" width="291" height="388" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1606-2-e1526356317475-768x1024.jpg 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1606-2-e1526356317475-225x300.jpg 225w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1606-2-e1526356317475-1200x1600.jpg 1200w" sizes="(max-width: 291px) 85vw, 291px" />     <img class="alignnone wp-image-728 " src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1620-e1526356339678-768x1024.jpg" alt="" width="290" height="387" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1620-e1526356339678-768x1024.jpg 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1620-e1526356339678-225x300.jpg 225w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1620-e1526356339678-1200x1600.jpg 1200w" sizes="(max-width: 290px) 85vw, 290px" /></p>
<p>^ Process of making the patches</p>
<h4>First Tests with taps + conductive ink:</h4>
<p><img class="alignnone size-large wp-image-726" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1529-1024x768.jpg" alt="" width="840" height="630" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1529-1024x768.jpg 1024w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1529-300x225.jpg 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1529-768x576.jpg 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1529-1200x900.jpg 1200w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /></p>
<p><img class="alignnone wp-image-733 size-large" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1853-e1526356382324-1024x768.jpg" alt="" width="840" height="630" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1853-e1526356382324-1024x768.jpg 1024w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1853-e1526356382324-300x225.jpg 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1853-e1526356382324-768x576.jpg 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1853-e1526356382324-1200x900.jpg 1200w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /></p>
<p><img class="alignnone wp-image-734 size-large" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1856-e1526356404168-1024x768.jpg" alt="" width="840" height="630" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1856-e1526356404168-1024x768.jpg 1024w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1856-e1526356404168-300x225.jpg 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1856-e1526356404168-768x576.jpg 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_1856-e1526356404168-1200x900.jpg 1200w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /></p>
<h4>Example of two user animations, created on presentation day:</h4>
<p><img class="alignnone size-full wp-image-740" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/03.gif" alt="" width="800" height="800" /></p>
<p><img class="alignnone size-full wp-image-741" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/06.gif" alt="" width="800" height="800" /></p>
<h6>Arduino Code:</h6>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">//--------CAP1188 SETUP --------<br />
#include<br />
#include<br />
#include<br />
#define CAP1188_SENSITIVITY 0x1F // Setting the sensitivity....lower the number the more sensitive!!<br />
static const int CAP1188_RESET = 12; // Reset Pin is used for I2C or SPI<br />
Adafruit_CAP1188 cap = Adafruit_CAP1188();<br />
//------------------------------<br />
<br />
const int numOfCaps = 3;<br />
<br />
//-----CAP TOUCH Variables-----<br />
uint8_t touched;<br />
uint8_t light;<br />
int capState[numOfCaps] = {0, 0, 0};<br />
int lastCapState[numOfCaps] = {0, 0, 0};<br />
int capCurrent[numOfCaps] = {false, false, false};<br />
<br />
//-----TIMING N@T------<br />
int pinState[numOfCaps] = {1, 1, 1}; //debouncing<br />
bool timing[numOfCaps] = {false, false, false};<br />
uint32_t dbTime = 20;<br />
uint32_t eTime[numOfCaps] = {};<br />
uint32_t dbStart[numOfCaps] = {};<br />
uint32_t start[numOfCaps] = {};<br />
uint32_t sendTime[numOfCaps] = {};<br />
<br />
//-----TIMING BREAK-----<br />
static const int btnPin = 2;<br />
int btnState;<br />
int lastBtnState;<br />
<br />
void setup() {<br />
Serial.begin(115200);<br />
Serial.println(&quot;CAP1188 test!&quot;);<br />
pinMode(btnPin, INPUT);<br />
// Initialize the sensor, if using i2c you can pass in the i2c address<br />
if (!cap.begin()) {<br />
//if (!cap.begin()) {<br />
Serial.println(&quot;CAP1188 not found&quot;);<br />
while (1);<br />
}<br />
<br />
Serial.println(&quot;CAP1188 found!&quot;);<br />
cap.writeRegister(CAP1188_SENSITIVITY, 0x6F);<br />
<br />
}<br />
<br />
void loop() {<br />
touches(); // sensing for touches<br />
for (int i = 0; i &amp;lt; numOfCaps; i++) {<br />
touchOnce(i);<br />
debounceBtn(i);<br />
timeTest(i);<br />
}<br />
endSession();<br />
}<br />
<br />
void touches() {<br />
touched = cap.touched();<br />
light = cap.readRegister(0x3);<br />
<br />
if (touched == 0) {<br />
// No touch detected<br />
return;<br />
}<br />
<br />
for (uint8_t i = 0; i &amp;lt; 8; i++) {<br />
if (touched &amp;amp; (1 &amp;lt;&lt;i&gt; dbTime) {// db timer has elapsed<br />
capState[n] = pinState[n]; // button state is valid<br />
}<br />
//+++++++++++++++++++++++++++++++++++<br />
}&lt;/i&gt;<br />
<br />
void timeTest(int t) {<br />
if (capState[t] == 0 &amp;amp;&amp;amp; !timing[t]) { //if button state is NOT pressed and timing is NOT happening<br />
sendTime[t] = 0;<br />
start[t] = millis(); // start timing<br />
timing[t] = true;<br />
}<br />
<br />
if (capState[t] == 1 &amp;amp;&amp;amp; timing[t]) { //if button state is pressed and timing is happening<br />
eTime[t] = (millis() - start[t]); // record elapsed time<br />
sendTime[t] = eTime[t];<br />
timing[t] = false;<br />
}<br />
}<br />
<br />
void endSession() {<br />
// read the pushbutton input pin:<br />
btnState = digitalRead(btnPin);<br />
<br />
// compare the buttonState to its previous state<br />
if (btnState != lastBtnState) {<br />
// if the state has changed, increment the counter<br />
if (btnState == HIGH) {<br />
Serial.println(&quot;E&quot;);<br />
}<br />
// Delay a little bit to avoid bouncing<br />
delay(50);<br />
}<br />
// save the current state as the last state, for next time through the loop<br />
lastBtnState = btnState;<br />
}<br />
<br />
void serialButtonCount() {<br />
Serial.print(capCurrent[2]);<br />
Serial.print(&quot;,&quot;);<br />
Serial.print(capCurrent[1]);<br />
Serial.print(&quot;,&quot;);<br />
Serial.print(capCurrent[0]);<br />
// Serial.print(&quot; &quot;);<br />
Serial.print(&quot;,&quot;);<br />
Serial.print(sendTime[2]);<br />
Serial.print(&quot;,&quot;);<br />
Serial.print(sendTime[1]);<br />
Serial.print(&quot;,&quot;);<br />
Serial.println(sendTime[0]);<br />
}</div></div>
<h6>Processing Code Two Tap:</h6>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">import gifAnimation.*;<br />
import processing.serial.*;<br />
<br />
float x, y;<br />
color col1, col2, col3;<br />
color[] colorVal = new color[10];<br />
String[] values;<br />
<br />
GifMaker gifExport;<br />
int frames = 0;<br />
<br />
int bOne; //button one<br />
int bTwo; //button two<br />
int bThree; //button three<br />
int tOne; //time one<br />
int tTwo; //time two<br />
int tThree; //time three<br />
<br />
float colMap1, colMap2, colMap3;<br />
float growMap1, growMap2, growMap3;<br />
<br />
int endState = 0;<br />
int lastEndState;<br />
<br />
int xpos1, ypos1, xpos2, ypos2, xpos3, ypos3;<br />
float radius1 = 100;<br />
float radius2 = 100;<br />
float radius3 = 100;<br />
<br />
int pos1x = 200;<br />
int pos1y = 550;<br />
int pos2x = 400;<br />
int pos2y = 250;<br />
int pos3x = 400;<br />
int pos3y = 550;<br />
<br />
Circle myCircle;<br />
<br />
int num = 0;<br />
<br />
void setup() {<br />
size(800, 800);<br />
frameRate(12);<br />
noFill();<br />
ellipseMode(CENTER);<br />
//colorMode(RGB, 255);<br />
<br />
//update the serial port index based on your setup<br />
Serial arduino = new Serial(this, Serial.list()[3], 115200);<br />
arduino.bufferUntil('\n');<br />
<br />
ellipseMode(RADIUS);<br />
myCircle = new Circle(pos1x, pos1y, pos2x, pos2y, pos3x, pos3y);<br />
<br />
gifExport = new GifMaker(this, &quot;export.gif&quot;);<br />
gifExport.setRepeat(0); // make it an &quot;endless&quot; animation<br />
//gifExport.setTransparent(0, 0, 0); // make black the transparent color. every black pixel in the animation will be transparent<br />
}<br />
<br />
void draw() {<br />
<br />
background(240, 240, 240);<br />
noFill();<br />
<br />
tapEvent();<br />
<br />
fill(col2);<br />
noStroke();<br />
ellipse(pos2x, pos2y, 100, 100);<br />
<br />
fill(col3);<br />
noStroke();<br />
ellipse(pos3x, pos3y, 100, 100);<br />
//println(gifExport);<br />
gifExport.setDelay(1);<br />
gifExport.addFrame();<br />
<br />
saveGif();<br />
}<br />
<br />
void tapEvent() {<br />
colMap1 = map(tOne, 100, 2000, 255, 150);<br />
colMap2 = map(tTwo, 100, 2000, 255, 150);<br />
<br />
if (bThree == 1) {<br />
col3 = color(colMap1, colMap2, 255);<br />
myCircle.display();<br />
myCircle.grow();<br />
} else if (bThree == 0) {<br />
col3 = color(240, 240, 240);<br />
}<br />
if (bTwo == 1) {<br />
col2 = color(colMap1, colMap2, 255);<br />
myCircle.display();<br />
myCircle.grow();<br />
} else if (bTwo == 0) {<br />
col2 = color(240, 240, 240);<br />
}<br />
if (bOne == 1) {<br />
col1 = color(colMap1, colMap2, 255);<br />
myCircle.display();<br />
myCircle.grow();<br />
} else if (bOne == 0) {<br />
col1 = color(240, 240, 240);<br />
}<br />
}<br />
<br />
void saveGif() {<br />
if (endState != lastEndState) {<br />
// if the state has changed, increment the counter<br />
if (endState == 1) {<br />
boolean finished = gifExport.finish(); //exports gif<br />
num++;<br />
println(finished);<br />
if (finished == true) {<br />
gifExport = new GifMaker(this, &quot;export&quot; +str(num)+ &quot;.gif&quot;);<br />
gifExport.setRepeat(0); // make it an &quot;endless&quot; animation<br />
}<br />
endState = 0;<br />
}<br />
// Delay a little bit to avoid bouncing<br />
delay(50);<br />
}<br />
// save the current state as the last state, for next time through the loop<br />
lastEndState = endState;<br />
}<br />
<br />
void serialEvent(Serial p) { // code from Rebecca Fienbrink<br />
String rawString = p.readString(); //read the string from serial<br />
rawString = rawString.trim(); //trim any unwanted empty spaces<br />
try { //split the string into an array of 2 value (e.g. &quot;0,127&quot; will become [&quot;0&quot;,&quot;127&quot;]<br />
values = rawString.split(&quot;,&quot;);<br />
//for(int i =0; i 1) {<br />
bOne = int(values[0]); //convert strings to int<br />
bTwo = int(values[1]); //convert strings to int<br />
bThree = int(values[2]); //convert strings to int<br />
tOne = int(values[3]);<br />
tTwo = int(values[4]);<br />
tThree = int(values[5]);<br />
//println(values[0] + &quot;,&quot; + values[1] + &quot;,&quot;+ values[2] );<br />
//println(values[3] + &quot;,&quot; + values[4] + &quot;,&quot;+ values[5] );<br />
} else if (values.length == 1) {<br />
endState = 1;<br />
//println(end);<br />
} else {<br />
endState = 0;<br />
}<br />
}<br />
catch(Exception e) {<br />
println(&quot;Error parsing string from Serial:&quot;);<br />
e.printStackTrace();<br />
}<br />
}<br />
<br />
class Circle {<br />
// The Constructor is defined with arguments.<br />
Circle(int x1, int y1, int x2, int y2, int x3, int y3) {<br />
<br />
xpos1 = x1;<br />
ypos1 = y1;<br />
xpos2 = x2;<br />
ypos2 = y2;<br />
xpos3 = x3;<br />
ypos3 = y3;<br />
}<br />
<br />
void display() {<br />
stroke(0);<br />
strokeWeight (3);<br />
noFill();<br />
//ellipse(xpos1, ypos1, radius1, radius1);<br />
strokeWeight (3);<br />
noFill();<br />
ellipse(xpos2, ypos2, radius2, radius2);<br />
strokeWeight (3);<br />
noFill();<br />
ellipse(xpos3, ypos3, radius3, radius3);<br />
}<br />
<br />
void grow() {<br />
growMap1 = map(tOne, 100, 8000, 1, 4);<br />
growMap2 = map(tTwo, 100, 8000, 1, 4);<br />
growMap3 = map(tThree, 100, 8000, 1, 4);<br />
//if (bOne == 1) {<br />
// radius1 = radius1 + growMap1;<br />
//}<br />
if (bTwo ==1) {<br />
radius2 = radius2 + growMap2;<br />
}<br />
else if (bThree == 1) {<br />
radius3 = radius3 + growMap3;<br />
}<br />
}<br />
}</div></div>
<h6>Processing Code Three Tap:</h6>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">import gifAnimation.*;<br />
import processing.serial.*; <br />
<br />
float x, y;<br />
color col1, col2, col3;<br />
color[] colorVal = new color[10];<br />
String[] values;<br />
<br />
GifMaker gifExport;<br />
int frames = 0;<br />
<br />
int bOne; //button one<br />
int bTwo; //button two<br />
int bThree; //button three<br />
int tOne; //time one<br />
int tTwo; //time two<br />
int tThree; //time three<br />
<br />
float colMap1, colMap2, colMap3;<br />
float growMap1, growMap2, growMap3;<br />
<br />
int endState = 0;<br />
int lastEndState;<br />
<br />
int xpos1, ypos1, xpos2, ypos2, xpos3, ypos3;<br />
float radius1 = 100;<br />
float radius2 = 100;<br />
float radius3 = 100;<br />
<br />
int pos1x = 200;<br />
int pos1y = 550;<br />
int pos2x = 400;<br />
int pos2y = 250;<br />
int pos3x = 600;<br />
int pos3y = 550;<br />
<br />
Circle myCircle;<br />
<br />
int num = 0;<br />
<br />
void setup() {<br />
size(800, 800);<br />
frameRate(12);<br />
noFill();<br />
ellipseMode(CENTER);<br />
//colorMode(RGB, 255);<br />
<br />
//update the serial port index based on your setup<br />
Serial arduino = new Serial(this, Serial.list()[3], 115200);<br />
arduino.bufferUntil('\n');<br />
<br />
ellipseMode(RADIUS);<br />
myCircle = new Circle(pos1x, pos1y, pos2x, pos2y, pos3x, pos3y);<br />
<br />
gifExport = new GifMaker(this, &quot;export.gif&quot;);<br />
gifExport.setRepeat(0); // make it an &quot;endless&quot; animation<br />
//gifExport.setTransparent(0, 0, 0); // make black the transparent color. every black pixel in the animation will be transparent<br />
}<br />
<br />
void draw() {<br />
<br />
background(240, 240, 240);<br />
noFill();<br />
<br />
tapEvent();<br />
<br />
fill(col1);<br />
noStroke();<br />
ellipse(pos1x, pos1y, 100, 100);<br />
<br />
fill(col2);<br />
noStroke();<br />
ellipse(pos2x, pos2y, 100, 100);<br />
<br />
fill(col3);<br />
noStroke();<br />
ellipse(pos3x, pos3y, 100, 100);<br />
//println(gifExport);<br />
gifExport.setDelay(1);<br />
gifExport.addFrame();<br />
<br />
saveGif();<br />
}<br />
<br />
void tapEvent() {<br />
colMap1 = map(tOne, 100, 2000, 255, 150);<br />
colMap2 = map(tTwo, 100, 2000, 255, 150);<br />
colMap3 = map(tThree, 100, 2000, 255, 150);<br />
<br />
if (bThree == 1) {<br />
col3 = color(colMap1, colMap2, colMap3);<br />
myCircle.display();<br />
myCircle.grow();<br />
} else if (bThree == 0) {<br />
col3 = color(240, 240, 240);<br />
}<br />
if (bTwo == 1) {<br />
col2 = color(colMap1, colMap2, colMap3);<br />
myCircle.display();<br />
myCircle.grow();<br />
} else if (bTwo == 0) {<br />
col2 = color(240, 240, 240);<br />
}<br />
if (bOne == 1) {<br />
col1 = color(colMap1, colMap2, colMap3);<br />
myCircle.display();<br />
myCircle.grow();<br />
} else if (bOne == 0) {<br />
col1 = color(240, 240, 240);<br />
}<br />
}<br />
<br />
void saveGif() {<br />
if (endState != lastEndState) {<br />
// if the state has changed, increment the counter<br />
if (endState == 1) {<br />
boolean finished = gifExport.finish(); //exports gif<br />
num++;<br />
println(finished);<br />
if (finished == true) {<br />
gifExport = new GifMaker(this, &quot;export&quot; +str(num)+ &quot;.gif&quot;);<br />
gifExport.setRepeat(0); // make it an &quot;endless&quot; animation<br />
}<br />
endState = 0;<br />
}<br />
// Delay a little bit to avoid bouncing<br />
delay(50);<br />
}<br />
// save the current state as the last state, for next time through the loop<br />
lastEndState = endState;<br />
}<br />
<br />
void serialEvent(Serial p) { // code from Rebecca Fienbrink<br />
String rawString = p.readString(); //read the string from serial<br />
rawString = rawString.trim(); //trim any unwanted empty spaces<br />
try { //split the string into an array of 2 value (e.g. &quot;0,127&quot; will become [&quot;0&quot;,&quot;127&quot;]<br />
values = rawString.split(&quot;,&quot;);<br />
//for(int i =0; i 1) {<br />
bOne = int(values[0]); //convert strings to int<br />
bTwo = int(values[1]); //convert strings to int<br />
bThree = int(values[2]); //convert strings to int<br />
tOne = int(values[3]);<br />
tTwo = int(values[4]);<br />
tThree = int(values[5]);<br />
//println(values[0] + &quot;,&quot; + values[1] + &quot;,&quot;+ values[2] );<br />
//println(values[3] + &quot;,&quot; + values[4] + &quot;,&quot;+ values[5] );<br />
} else if (values.length == 1) {<br />
endState = 1;<br />
//println(end);<br />
} else {<br />
endState = 0;<br />
}<br />
}<br />
catch(Exception e) {<br />
println(&quot;Error parsing string from Serial:&quot;);<br />
e.printStackTrace();<br />
}<br />
}<br />
<br />
class Circle {<br />
// The Constructor is defined with arguments.<br />
Circle(int x1, int y1, int x2, int y2, int x3, int y3) {<br />
<br />
xpos1 = x1;<br />
ypos1 = y1;<br />
xpos2 = x2;<br />
ypos2 = y2;<br />
xpos3 = x3;<br />
ypos3 = y3;<br />
}<br />
<br />
void display() {<br />
stroke(0);<br />
strokeWeight (3);<br />
noFill();<br />
ellipse(xpos1, ypos1, radius1, radius1);<br />
strokeWeight (3);<br />
noFill();<br />
ellipse(xpos2, ypos2, radius2, radius2);<br />
strokeWeight (3);<br />
noFill();<br />
ellipse(xpos3, ypos3, radius3, radius3);<br />
}<br />
<br />
void grow() {<br />
growMap1 = map(tOne, 100, 8000, 1, 4);<br />
growMap2 = map(tTwo, 100, 8000, 1, 4);<br />
growMap3 = map(tThree, 100, 8000, 1, 4);<br />
if (bOne == 1) {<br />
radius1 = radius1 + growMap1;<br />
} else if (bTwo ==1) {<br />
radius2 = radius2 + growMap2;<br />
} else if (bThree == 1) {<br />
radius3 = radius3 + growMap3;<br />
}<br />
}<br />
}</div></div>
<h4>Future Considerations:</h4>
<p>I want to continue to work on this project. Considerations for the patch include fabric type and design of the tappable areas. For the Processing end of things, I&#8217;d like to explore what else is possible with the data being sent and well as build a state machine and initialization sequence so that the system knows how many tappable areas are present when plugged in so that two Processing sketches are not needed. On the Arduino side of things, I would like use timing to save the GIF animations rather than a button press.</p>
]]></content:encoded>
							<wfw:commentRss>https://courses.ideate.cmu.edu/48-339/s2018/?feed=rss2&#038;p=723</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title></title>
		<link>https://courses.ideate.cmu.edu/48-339/s2018/?p=706</link>
				<comments>https://courses.ideate.cmu.edu/48-339/s2018/?p=706#respond</comments>
				<pubDate>Mon, 14 May 2018 15:10:13 +0000</pubDate>
		<dc:creator><![CDATA[ctv@andrew.cmu.edu]]></dc:creator>
				<category><![CDATA[Assignment 8]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-339/s2018/?p=706</guid>
				<description><![CDATA[&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; Vinyl &#38; controller setups are large and expensive. &#160; &#160; Two audio track crossfade without beat/tempo match. &#160; &#160; interactive textile interface &#8211; acrylic and silver-nano inks on polyester substrate. &#160; &#160; Bluno Nano and CapSense &#8230; <a href="https://courses.ideate.cmu.edu/48-339/s2018/?p=706" class="more-link">Continue reading<span class="screen-reader-text"> ""</span></a>]]></description>
								<content:encoded><![CDATA[<p><img class="alignnone wp-image-5390 " src="http://cmuems.com/2018/60212s/wp-content/uploads/2018/05/Product-Shot.jpg" alt="" width="1084" height="813" /></p>
<p><img class="size-medium wp-image-5392 aligncenter" src="http://cmuems.com/2018/60212s/wp-content/uploads/2018/05/IMG_20180507_095631-640x480.jpg" alt="" width="640" height="480" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><iframe width="840" height="473" src="https://www.youtube.com/embed/tXUz_RYR_Jc?feature=oembed" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img class="size-medium wp-image-5389 aligncenter" src="http://cmuems.com/2018/60212s/wp-content/uploads/2018/05/Rolling-480x480.jpg" alt="" width="480" height="480" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img class="size-medium wp-image-5391 aligncenter" src="http://cmuems.com/2018/60212s/wp-content/uploads/2018/05/Outdoor-Orange-480x480.jpg" alt="" width="480" height="480" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img class="size-medium wp-image-5251 alignright" src="http://cmuems.com/2018/60212s/wp-content/uploads/2018/05/dj-640x205.jpg" alt="" width="640" height="205" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Vinyl &amp; controller setups are large and expensive.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<!--[if lt IE 9]><script>document.createElement('audio');</script><![endif]-->
<audio class="wp-audio-shortcode" id="audio-706-1" preload="none" style="width: 100%;" controls="controls"><source type="audio/wav" src="http://cmuems.com/2018/60212s/wp-content/uploads/2018/05/baddddTwo.wav?_=1" /><a href="http://cmuems.com/2018/60212s/wp-content/uploads/2018/05/baddddTwo.wav">http://cmuems.com/2018/60212s/wp-content/uploads/2018/05/baddddTwo.wav</a></audio>
<p>Two audio track crossfade without beat/tempo match.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img class="alignnone wp-image-5245" src="http://cmuems.com/2018/60212s/wp-content/uploads/2018/05/ezgif.com-video-to-gif-2.gif" alt="" width="642" height="361" /></p>
<p>interactive textile interface &#8211; acrylic and silver-nano inks on polyester substrate.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><iframe width="840" height="473" src="https://www.youtube.com/embed/xKZuMRM3Wj4?feature=oembed" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></p>
<p><a href="https://www.dfrobot.com/product-1122.html">Bluno Nano</a> and <a href="https://playground.arduino.cc/Main/CapacitiveSensor?from=Main.CapSense">CapSense</a> arduino library.<br />
<a href="https://www.dfrobot.com/product-1122.html"><br />
</a>Bluno can easily connect arduino sensors to Android &amp; iOS. Although, this project is not serially connected to Unity on Android, the example code connects to an app created in Android Studio and the Bluno connects to Unity on iOS.</p>
<p>This program uses an initialization stage to calculate a baseline for each screen<br />
printed touch sensor, then uses a multiplier to calculate a touch threshold. To<br />
increasethe correctness of the sensor data, I will implement a touch calibration<br />
step into the setup sequence.</p>
<pre>
#include 

// infinEight Driver
// Ty Van de Zande 2018

/*
 * CapitiveSense Library Demo Sketch
 * Paul Badger 2008
 * Uses a high value resistor e.g. 10M between send pin and receive pin
 * Resistor effects sensitivity, experiment with values, 50K - 50M. Larger resistor values yield larger sensor values.
 * Receive pin is the sensor pin - try different amounts of foil/metal on this pin
 */


// Arcitecture
// TBD

static int IN1 = 18;
static int IN2 = 17;
static int IN3 = 16;

static int ledGROUND = 23;
static int ledONE    = 21;
static int ledTWO    = 20;
static int ledTHREE  = 19;


int SENSE1;
int SENSE2;
int SENSE3;

long THRESH1;
long THRESH2;
long THRESH3;

float mult = 1.7;



void setup()                    
{
   pinMode(ledONE, OUTPUT);
   pinMode(ledTWO, OUTPUT);
   pinMode(ledTHREE, OUTPUT);
   pinMode(ledGROUND, OUTPUT);
   
   
   Serial.begin(9600);
   Serial.println("Prepping");
   initializeSensors();
}

void loop()                    
{
  updateSensors();
  //printSensors();
  digitalWrite(ledONE, LOW);
  digitalWrite(ledTWO, LOW);
  digitalWrite(ledTHREE, LOW);
  areWeTouched();     
  delay(10);                    
}

void  areWeTouched()
{
  if(SENSE1 &gt; THRESH1 || SENSE1 == -2){
//    printSensors();
    digitalWrite(ledONE, HIGH);
      Serial.println("3");
  };
  if(SENSE2 &gt; THRESH2 || SENSE2 == -2){
//    printSensors();
      digitalWrite(ledTWO, HIGH);
      Serial.println("2");
  };
  if(SENSE3 &gt; THRESH3  || SENSE3 == -2){
//    printSensors();
      digitalWrite(ledTHREE, HIGH);
      Serial.println("1");
  };
}



void printThresh(int one, int two, int three)
{
  Serial.print(one);
  Serial.print(" . ");
  Serial.print(two);
  Serial.print(" . ");
  Serial.print(three);
  Serial.println(" ");
  
}



void updateSensors()
{
    SENSE1 = touchRead(IN1);
    SENSE2 = touchRead(IN2);
    SENSE3 = touchRead(IN3);
    // Array not working???
//     int SENSESTATES[] = {SENSE1, SENSE2, SENSE3, SENSE4};
//     int lisLEN = sizeof(SENSESTATES);
//     for(int i = 0; i &lt; lisLEN; i++){
//        Serial.print(i);
//        Serial.print(&quot;:  &quot;);
//        Serial.print(SENSESTATES[i]);      
//     }
}

void printSensors()
{
    Serial.print(SENSE1);
    Serial.print(&quot; . &quot;);
    Serial.print(SENSE2);
    Serial.print(&quot; . &quot;);
    Serial.print(SENSE3);
    Serial.println(&quot; &quot;);
}


void initializeSensors()
{
  int cts = 104;
  //int mult = 20;
  
  long temp1 = 0;
  long temp2 = 0;
  long temp3 = 0;

  for(int i = 0; i &lt; 20; i++){
    updateSensors();
    //printSensors();
  }
  
  Serial.println(&quot;Collecting Summer Readings&quot;);
  for(int i = 0; i &lt; cts; i++){
    if (i % 4 == 0) { Serial.print(&quot;|&quot;); }
    updateSensors();
    temp1 += SENSE1;
    temp2 += SENSE2;
    temp3 += SENSE3;
  }

  Serial.println(&quot; &quot;);
  Serial.println(&quot;Averaging thresholds&quot;);
  THRESH1 =  mult * (temp1 / cts);
  THRESH2 =  mult * (temp2 / cts);
  THRESH3 =  mult * (temp3 / cts);
  printThresh(THRESH1, THRESH2, THRESH3);
  printThresh(THRESH1/mult, THRESH2/mult, THRESH3/mult);
  Serial.println(&quot; &quot;);
  digitalWrite(ledONE, HIGH);
  delay(80);
  digitalWrite(ledTWO, HIGH);
  delay(80);
  digitalWrite(ledTHREE, HIGH);
  delay(80);
  Serial.println(&quot;Ready!&quot;);
  
}


</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Thank you to people who helped, and others!!!!<br />
Golan Levin<br />
Claire Hentschker<br />
Zachary Rapaport<br />
Gray Crawford<br />
Daiki Itoh<br />
Lucas Ochoa<br />
Lucy Yu<br />
Jake Scherlis<br />
Imin Yeh<br />
Jesse Klein<br />
Dan Lockton<br />
FRFAF<br />
URO-SURF</p>
]]></content:encoded>
							<wfw:commentRss>https://courses.ideate.cmu.edu/48-339/s2018/?feed=rss2&#038;p=706</wfw:commentRss>
		<slash:comments>0</slash:comments>
				<enclosure url="http://cmuems.com/2018/60212s/wp-content/uploads/2018/05/baddddTwo.wav" length="1615456" type="audio/wav" />
			</item>
		<item>
		<title>Final Project: Running Companion!</title>
		<link>https://courses.ideate.cmu.edu/48-339/s2018/?p=711</link>
				<comments>https://courses.ideate.cmu.edu/48-339/s2018/?p=711#respond</comments>
				<pubDate>Mon, 14 May 2018 13:00:55 +0000</pubDate>
		<dc:creator><![CDATA[oet@andrew.cmu.edu]]></dc:creator>
				<category><![CDATA[Final Project]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-339/s2018/?p=711</guid>
				<description><![CDATA[This project used a blob code to animate a character that runs with you. By wearing bands of a certain color, the computer can determine what pace goal you want to set, and how fast you&#8217;re running. Using the difference between these two paces, it determines the location of the animal companion on the screen. &#8230; <a href="https://courses.ideate.cmu.edu/48-339/s2018/?p=711" class="more-link">Continue reading<span class="screen-reader-text"> "Final Project: Running Companion!"</span></a>]]></description>
								<content:encoded><![CDATA[<p>This project used a blob code to animate a character that runs with you. By wearing bands of a certain color, the computer can determine what pace goal you want to set, and how fast you&#8217;re running. Using the difference between these two paces, it determines the location of the animal companion on the screen. If the pace is slower than the pace goal, then the animal will move to the left of the screen, as if it is running faster than you. If the pace is faster than the pace goal, the animal will move to the right of the screen, as if it is running slower than you.</p>
<p>The amount of bands that you wear determines what animal companion you get, and what your pace goal is. The animal runs at the pace goal.</p>
<p>This sort of pace-keeper allows for runners to be more conscious about their cadence, and makes fixing their cadence easier.</p>
<p>&nbsp;</p>
<p><a href="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-14-at-7.07.30-PM.png"><img class="alignnone size-large wp-image-718" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-14-at-7.07.30-PM-710x1024.png" alt="" width="710" height="1024" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-14-at-7.07.30-PM-710x1024.png 710w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-14-at-7.07.30-PM-208x300.png 208w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-14-at-7.07.30-PM-768x1108.png 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/Screen-Shot-2018-05-14-at-7.07.30-PM.png 1062w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></a></p>
<p>The project in use:</p>
<p><iframe src="https://player.vimeo.com/video/269672035?app_id=122963" width="840" height="473" frameborder="0" title="Companion Run" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></p>
<p>At the final presentation:</p>
<p><a href="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_4315.jpg"><img class="alignnone size-large wp-image-720" src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_4315-1024x768.jpg" alt="" width="840" height="630" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_4315-1024x768.jpg 1024w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_4315-300x225.jpg 300w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_4315-768x576.jpg 768w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/IMG_4315-1200x900.jpg 1200w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /></a></p>
<p>Here&#8217;s my final code, you have to open it in processing:</p>
<p><a href="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/05/BlobsforanimalsforShow.zip">BlobsforanimalsforShow</a></p>
]]></content:encoded>
							<wfw:commentRss>https://courses.ideate.cmu.edu/48-339/s2018/?feed=rss2&#038;p=711</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Chromatic Vision Simulator</title>
		<link>https://courses.ideate.cmu.edu/48-339/s2018/?p=686</link>
				<comments>https://courses.ideate.cmu.edu/48-339/s2018/?p=686#respond</comments>
				<pubDate>Sun, 06 May 2018 15:34:12 +0000</pubDate>
		<dc:creator><![CDATA[mcherban@andrew.cmu.edu]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-339/s2018/?p=686</guid>
				<description><![CDATA[Here are the links to that app I showed in class, it quickly helps you see three different types of color blindness. https://itunes.apple.com/us/app/chromatic-vision-simulator/id389310222?mt=8 https://play.google.com/store/apps/details?id=asada0.android.cvsimulator&#38;hl=en_US]]></description>
								<content:encoded><![CDATA[<p>Here are the links to that app I showed in class, it quickly helps you see three different types of color blindness.</p>
<p><a href="https://itunes.apple.com/us/app/chromatic-vision-simulator/id389310222?mt=8">https://itunes.apple.com/us/app/chromatic-vision-simulator/id389310222?mt=8</a></p>
<p><a href="https://play.google.com/store/apps/details?id=asada0.android.cvsimulator&amp;hl=en_US">https://play.google.com/store/apps/details?id=asada0.android.cvsimulator&amp;hl=en_US</a></p>
]]></content:encoded>
							<wfw:commentRss>https://courses.ideate.cmu.edu/48-339/s2018/?feed=rss2&#038;p=686</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>designing to improve the human condition</title>
		<link>https://courses.ideate.cmu.edu/48-339/s2018/?p=680</link>
				<comments>https://courses.ideate.cmu.edu/48-339/s2018/?p=680#respond</comments>
				<pubDate>Sat, 14 Apr 2018 15:19:09 +0000</pubDate>
		<dc:creator><![CDATA[jet Townsend]]></dc:creator>
				<category><![CDATA[Looking Outside]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-339/s2018/?p=680</guid>
				<description><![CDATA[I&#8217;m going to skip a very long and boring &#8220;designer vs. maker&#8221; lecture and just point you at this: https://www.thingiverse.com/makersmakingchange/designs]]></description>
								<content:encoded><![CDATA[<p>I&#8217;m going to skip a very long and boring &#8220;designer vs. maker&#8221; lecture and just point you at this:</p>
<p>https://www.thingiverse.com/makersmakingchange/designs</p>
]]></content:encoded>
							<wfw:commentRss>https://courses.ideate.cmu.edu/48-339/s2018/?feed=rss2&#038;p=680</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Arduino memory / p5.js</title>
		<link>https://courses.ideate.cmu.edu/48-339/s2018/?p=677</link>
				<comments>https://courses.ideate.cmu.edu/48-339/s2018/?p=677#respond</comments>
				<pubDate>Thu, 12 Apr 2018 17:48:21 +0000</pubDate>
		<dc:creator><![CDATA[jet Townsend]]></dc:creator>
				<category><![CDATA[Class Notes]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-339/s2018/?p=677</guid>
				<description><![CDATA[If you apply power to the Metro through the power jack, you can disconnect/reconnect from p5.js.   There&#8217;s a tiny power switch between the USB port and power connector that needs to be flipped to handle external power. Connect Arduino to computer, download sketch. Disconnect Arduino, collect data Connect Arduino to computer, run p5.js connection and &#8230; <a href="https://courses.ideate.cmu.edu/48-339/s2018/?p=677" class="more-link">Continue reading<span class="screen-reader-text"> "Arduino memory / p5.js"</span></a>]]></description>
								<content:encoded><![CDATA[<p>If you apply power to the Metro through the power jack, you can disconnect/reconnect from p5.js.   There&#8217;s a tiny power switch between the USB port and power connector that needs to be flipped to handle external power.</p>
<ol>
<li>Connect Arduino to computer, download sketch.</li>
<li>Disconnect Arduino, collect data</li>
<li>Connect Arduino to computer, run p5.js connection and read data</li>
</ol>
<p>Here&#8217;s a simple Arduino sketch and p5.js script: <a href="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/04/memory-example.zip">memory-example</a></p>
]]></content:encoded>
							<wfw:commentRss>https://courses.ideate.cmu.edu/48-339/s2018/?feed=rss2&#038;p=677</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Rotating stage for Hamilton</title>
		<link>https://courses.ideate.cmu.edu/48-339/s2018/?p=675</link>
				<comments>https://courses.ideate.cmu.edu/48-339/s2018/?p=675#respond</comments>
				<pubDate>Wed, 11 Apr 2018 00:46:40 +0000</pubDate>
		<dc:creator><![CDATA[jet Townsend]]></dc:creator>
				<category><![CDATA[Looking Outside]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-339/s2018/?p=675</guid>
				<description><![CDATA[Found it &#8212; a rotating stage in a rehearsal hall for Hamilton&#8217;s tour group:]]></description>
								<content:encoded><![CDATA[<p>Found it &#8212; a rotating stage in a rehearsal hall for Hamilton&#8217;s tour group:</p>
<p><iframe src="https://www.youtube.com/embed/GxG0AvoXcbA?start=290" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
]]></content:encoded>
							<wfw:commentRss>https://courses.ideate.cmu.edu/48-339/s2018/?feed=rss2&#038;p=675</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
	</channel>
</rss>
