<?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>Uncategorized &#8211; Making Things Interactive</title>
	<atom:link href="https://courses.ideate.cmu.edu/48-339/s2018/?feed=rss2&#038;cat=1" 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:35:39 +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>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>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>Lending Desk hours during Carnival</title>
		<link>https://courses.ideate.cmu.edu/48-339/s2018/?p=672</link>
				<comments>https://courses.ideate.cmu.edu/48-339/s2018/?p=672#respond</comments>
				<pubDate>Tue, 10 Apr 2018 18:09:06 +0000</pubDate>
		<dc:creator><![CDATA[yihanz@andrew.cmu.edu]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-339/s2018/?p=672</guid>
				<description><![CDATA[Lending schedule next week will be: Thu(4/19): close by 6pm Fri(4/20): open 8am &#8211; 1pm, close by 1pm Sat(4/21): close all day Sun(4/22): open 10am &#8211; 10pm ( back to regular hours)]]></description>
								<content:encoded><![CDATA[<p>Lending schedule next week will be:</p>
<p>Thu(4/19): close by 6pm</p>
<p>Fri(4/20): open 8am &#8211; 1pm, close by 1pm</p>
<p>Sat(4/21): close all day</p>
<p>Sun(4/22): open 10am &#8211; 10pm ( back to regular hours)</p>
]]></content:encoded>
							<wfw:commentRss>https://courses.ideate.cmu.edu/48-339/s2018/?feed=rss2&#038;p=672</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>An interactive music box</title>
		<link>https://courses.ideate.cmu.edu/48-339/s2018/?p=649</link>
				<comments>https://courses.ideate.cmu.edu/48-339/s2018/?p=649#respond</comments>
				<pubDate>Tue, 10 Apr 2018 15:38:45 +0000</pubDate>
		<dc:creator><![CDATA[yihanz@andrew.cmu.edu]]></dc:creator>
				<category><![CDATA[Final Proposals]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-339/s2018/?p=649</guid>
				<description><![CDATA[An wireless music player with physical interaction to minimize distraction. DESCRIPTIVE PARAGRAPH Why a music box? I like to put music on while i&#8217;m working, however in this digital age, the &#8220;recommendations&#8221; and changing between screens can be quite a distraction. A music box with physical interaction should be able to minize that as much &#8230; <a href="https://courses.ideate.cmu.edu/48-339/s2018/?p=649" class="more-link">Continue reading<span class="screen-reader-text"> "An interactive music box"</span></a>]]></description>
								<content:encoded><![CDATA[<h3>An wireless music player with physical interaction to minimize distraction.</h3>
<h4>DESCRIPTIVE PARAGRAPH</h4>
<p>Why a music box?</p>
<p style="padding-left: 30px">I like to put music on while i&#8217;m working, however in this digital age, the &#8220;recommendations&#8221; and changing between screens can be quite a distraction. A music box with physical interaction should be able to minize that as much as possible, while still kept the interaction entertaining.</p>
<p>How it works:</p>
<p style="padding-left: 30px">The music box would come with figurines with RFID tags. When different figurines are put on top of the music box,  different sets of music would play. Ideally, if it can be achieved, the user can put their own music album and make their own figurine.</p>
<p>&nbsp;</p>
<h4>YOUR PLAN</h4>
<p>The final project would be based on the previous assignment where I used touch sensor and Arduino Uno with a simple p5js interface. Here is the basic outline of the project:</p>
<ol>
<li>Incorporate/test RFID onto the project</li>
<li>Connect speaker to the box instead of using laptop</li>
<li>Refine the music library</li>
<li>Refine the p5js interface</li>
<li>Add the feature where user are able to make their own input</li>
<li>Switch Arduino Uno to a Particle Photon</li>
<li></li>
<li>Add lipo battery and battery shield/battery baby sitter</li>
<li>Make a shell with laser cutted plywood</li>
</ol>
<h4>MATERIALS NEEDED</h4>
<ol>
<li>Arduino Uno/Particle Photon</li>
<li>RFID Reader chip and RFID tags</li>
<li>Wifi base (I might be able to just use my laptop)</li>
<li>Plywood for laser cutted bounding box</li>
<li>Music Pieces (20s-30s per sample)</li>
<li>Lipo battery</li>
<li>Battery shield/baby sitter</li>
<li>Some LEDs for indication</li>
<li>Some buttons for play buttons etc.</li>
<li>A cheap speaker should workout</li>
</ol>
<h4>DELIVERABLES FOR SHOW</h4>
<p>On the day of the show, I would need a outlet for charging the battery, and a wifi base, which potentially could be my laptop. The speaker won&#8217;t be too loud so it should be ok to be somewhat close to other projects.</p>
<h4>MEDIA FOR SHOW</h4>
<p>I probably would put up a slide show on my laptop or some print out handouts/flyers</p>
]]></content:encoded>
							<wfw:commentRss>https://courses.ideate.cmu.edu/48-339/s2018/?feed=rss2&#038;p=649</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Project Proposal: An assistant for a healthy mind</title>
		<link>https://courses.ideate.cmu.edu/48-339/s2018/?p=579</link>
				<comments>https://courses.ideate.cmu.edu/48-339/s2018/?p=579#respond</comments>
				<pubDate>Tue, 10 Apr 2018 02:50:46 +0000</pubDate>
		<dc:creator><![CDATA[vkamath@andrew.cmu.edu]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-339/s2018/?p=579</guid>
				<description><![CDATA[Title: An assistant to promote a healthy mind. 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 &#8230; <a href="https://courses.ideate.cmu.edu/48-339/s2018/?p=579" class="more-link">Continue reading<span class="screen-reader-text"> "Project Proposal: An assistant for a healthy mind"</span></a>]]></description>
								<content:encoded><![CDATA[<p><strong>Title</strong>: An assistant to promote a healthy mind.</p>
<p>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><strong>Proposed plan</strong></p>
<ul>
<li>Build custom Google home</li>
<li>Provide an avatar to assistant through the hologram</li>
<li>Build custom intents to listen to music, contact social circles actively and passively.</li>
<li>Detect emotion from voice or NLP</li>
<li>Detect user and location (optional)</li>
<li>A private dashboard for others to monitor the mental health of the user. (optional)</li>
</ul>
<p><strong>MATERIALS NEEDED</strong></p>
<ul>
<li>Old phone/display for assistant</li>
<li>Laser-cut transparent plastic</li>
<li>AIY Voice kit</li>
<li>Hardware neopixels to display assistant mood. (optional)</li>
</ul>
<p>DELIVERABLES FOR SHOW</p>
<ul>
<li>Half a table.</li>
</ul>
<p>MEDIA FOR SHOW</p>
<p>Slideshow on a laptop</p>
]]></content:encoded>
							<wfw:commentRss>https://courses.ideate.cmu.edu/48-339/s2018/?feed=rss2&#038;p=579</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Story &#8211; Music Box</title>
		<link>https://courses.ideate.cmu.edu/48-339/s2018/?p=611</link>
				<comments>https://courses.ideate.cmu.edu/48-339/s2018/?p=611#respond</comments>
				<pubDate>Thu, 05 Apr 2018 17:00:12 +0000</pubDate>
		<dc:creator><![CDATA[yihanz@andrew.cmu.edu]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-339/s2018/?p=611</guid>
				<description><![CDATA[I listen to a lot of musicals, and that is my background music when I work. Listen to the same thing over and over again is nice to some extent, however, stories might be told differently from different character&#8217;s perspective. What if the version of the story is from Elisa Schulyer instead of Alexander Hamilton? &#8230; <a href="https://courses.ideate.cmu.edu/48-339/s2018/?p=611" class="more-link">Continue reading<span class="screen-reader-text"> "Story &#8211; Music Box"</span></a>]]></description>
								<content:encoded><![CDATA[<p>I listen to a lot of musicals, and that is my background music when I work. Listen to the same thing over and over again is nice to some extent, however, stories might be told differently from different character&#8217;s perspective. What if the version of the story is from Elisa Schulyer instead of Alexander Hamilton? What if Cosette is the major character? Not that the music need to change (for a new show, probably).</p>
<p>It would be really interesting to make a interactive music box that have the same song but tells the same story from a different sequence based on the main character that you can choose. It should be mobile, with a rechargable battery, like a real music box (it would be a interesting gift). It doesn&#8217;t have to be just musical, it can get connected to wifi and search for certain artist that you wanna listen to. All you need to do is to put a figurine on top and click the play button.</p>
<p>What would be the advantage of having a music box than just use your phone or your computer? Well, say that you are using some music software like spotify. When you want to change a song, you have to go to that interface and click the music you want to listen to. Opening up another page could be really distracting, spotify might also recommend you this and that which doesn&#8217;t help. Having a physical interaction can potentially make you less distracted cause there is no “recommend based on history&#8221; at least.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
							<wfw:commentRss>https://courses.ideate.cmu.edu/48-339/s2018/?feed=rss2&#038;p=611</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Smart desk</title>
		<link>https://courses.ideate.cmu.edu/48-339/s2018/?p=601</link>
				<comments>https://courses.ideate.cmu.edu/48-339/s2018/?p=601#respond</comments>
				<pubDate>Thu, 05 Apr 2018 15:37:52 +0000</pubDate>
		<dc:creator><![CDATA[Rachel Wong]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-339/s2018/?p=601</guid>
				<description><![CDATA[Computers and technology are an integral part of most people&#8217;s everyday lives. Individuals push themselves to have maximum productivity every day. In many cases, this drive to work has caused many people to disregard their own health and self-care. A pattern I&#8217;ve noticed in the tech industry is workers changing their work station set-up to &#8230; <a href="https://courses.ideate.cmu.edu/48-339/s2018/?p=601" class="more-link">Continue reading<span class="screen-reader-text"> "Smart desk"</span></a>]]></description>
								<content:encoded><![CDATA[<p>Computers and technology are an integral part of most people&#8217;s everyday lives. Individuals push themselves to have maximum productivity every day. In many cases, this drive to work has caused many people to disregard their own health and self-care. A pattern I&#8217;ve noticed in the tech industry is workers changing their work station set-up to be more ergonomic. Standing desks and unconventional desks are increasingly popular. Yet, it seems these changes help workers spend even more time in front of the screen. My vision is to create a work station that not only helps increase productivity, but also reminds the user to be human. From the minute the user approaches the desk, they will have a intuitive and seamless work session experience. Using light, timers, motors, and various sensors, the user will be able to organize their tasks while remembering to follow best practices for physical health. Many of us get in a &#8220;zone&#8221; while we work, which causes us to focus for hours on end without moving an inch. This desk will remind users to walk around and take a break on timed intervals. It will monitor the environment to ensure users are comfortable. It will have small &#8220;helpers&#8221; that will make working feel less tedious so users can really focus on their work. The desk will also try to accommodate people with vision and hearing problems by implementing different methods of user alert systems.</p>
]]></content:encoded>
							<wfw:commentRss>https://courses.ideate.cmu.edu/48-339/s2018/?feed=rss2&#038;p=601</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Asssignment 8&#8211;Arduino Timer</title>
		<link>https://courses.ideate.cmu.edu/48-339/s2018/?p=580</link>
				<comments>https://courses.ideate.cmu.edu/48-339/s2018/?p=580#respond</comments>
				<pubDate>Tue, 03 Apr 2018 17:09:06 +0000</pubDate>
		<dc:creator><![CDATA[Rachel Wong]]></dc:creator>
				<category><![CDATA[Assignment 8]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-339/s2018/?p=580</guid>
				<description><![CDATA[#include #ifdef __AVR__ #include #endif static const int PIN = 3; static const int NUMPIXELS = 2; int incomingByte; char incomingLetter; Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); unsigned long interval = 10000; unsigned long previousMillis = 0; void setup() { pixels.begin(); pixels.setPixelColor(0, pixels.Color(0, 0, 0)); pixels.setPixelColor(1, pixels.Color(0, 0, 0)); pixels.show(); } void loop() &#8230; <a href="https://courses.ideate.cmu.edu/48-339/s2018/?p=580" class="more-link">Continue reading<span class="screen-reader-text"> "Asssignment 8&#8211;Arduino Timer"</span></a>]]></description>
								<content:encoded><![CDATA[<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">#include</div></div>
<p>#ifdef __AVR__<br />
#include<br />
#endif</p>
<p>static const int PIN = 3;<br />
static const int NUMPIXELS = 2;<br />
int incomingByte;<br />
char incomingLetter;<br />
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);<br />
unsigned long interval = 10000;<br />
unsigned long previousMillis = 0;</p>
<p>void setup() {<br />
pixels.begin();<br />
pixels.setPixelColor(0, pixels.Color(0, 0, 0));<br />
pixels.setPixelColor(1, pixels.Color(0, 0, 0));<br />
pixels.show();</p>
<p>}</p>
<p>void loop() {</p>
<p>unsigned long currentMillis = millis();</p>
<p>if (Serial.available() &gt; 0) {<br />
incomingByte = Serial.read();<br />
incomingLetter = (char) incomingByte;<br />
if (incomingLetter == &#8216;S&#8217;) {<br />
while(currentMillis &#8211; previousMillis &lt; interval) {<br />
currentMillis = millis();<br />
}</p>
<p>previousMillis = currentMillis;<br />
pixels.setPixelColor(0, pixels.Color(255, 0, 0));<br />
pixels.show();<br />
}</p>
<p>else if (incomingLetter == &#8216;B&#8217;) {<br />
while(currentMillis &#8211; previousMillis &lt; interval){<br />
pixels.setPixelColor(1, pixels.Color(0, 255, 0));<br />
pixels.show();<br />
currentMillis = millis();<br />
}<br />
previousMillis = currentMillis;<br />
pixels.setPixelColor(1, pixels.Color(0, 0, 0));<br />
pixels.show();<br />
}</p>
<p>else {<br />
pixels.setPixelColor(0, pixels.Color(0, 0, 0));<br />
pixels.setPixelColor(1, pixels.Color(0, 0, 0));<br />
pixels.show();<br />
}<br />
}<br />
}</p>
]]></content:encoded>
							<wfw:commentRss>https://courses.ideate.cmu.edu/48-339/s2018/?feed=rss2&#038;p=580</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Final project storyboarding &#8211; storytelling musicbox</title>
		<link>https://courses.ideate.cmu.edu/48-339/s2018/?p=575</link>
				<comments>https://courses.ideate.cmu.edu/48-339/s2018/?p=575#respond</comments>
				<pubDate>Tue, 03 Apr 2018 15:40:34 +0000</pubDate>
		<dc:creator><![CDATA[yihanz@andrew.cmu.edu]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-339/s2018/?p=575</guid>
				<description><![CDATA[The general idea of interaction goes like this: place some figurine on top of the box, assume the sequence being figurine1 (f1 for short),f2,f3&#8230;&#8230; Hit play button to play music (where all figurine is a part of, from the very first story) remove some figurine and add more figurine or do nothing to play more &#8230; <a href="https://courses.ideate.cmu.edu/48-339/s2018/?p=575" class="more-link">Continue reading<span class="screen-reader-text"> "Final project storyboarding &#8211; storytelling musicbox"</span></a>]]></description>
								<content:encoded><![CDATA[<p>The general idea of interaction goes like this:</p>
<ol>
<li>place some figurine on top of the box, assume the sequence being figurine1 (f1 for short),f2,f3&#8230;&#8230;</li>
<li>Hit play button to play music (where all figurine is a part of, from the very first story)</li>
<li>remove some figurine and add more figurine or do nothing to play more music:
<ol>
<li>if nothing change, go to the next song that all of them are in follow the story sequence</li>
<li>if new figurine added, play the next song they all in</li>
<li>if figurine got removed: (assume f1, f2,f3 was there)
<ol>
<li>if f2 or f3 got removed, same as new figurine added</li>
<li>if f1 got removed, f2 becomes the pivot*.</li>
</ol>
</li>
</ol>
</li>
</ol>
<p>&nbsp;</p>
<ul>
<li>*Pivot in this case is that favour the pivot figurine, if no songs are really up to standards(eg: strictly solo/duet).</li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
							<wfw:commentRss>https://courses.ideate.cmu.edu/48-339/s2018/?feed=rss2&#038;p=575</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Touchy: A Game for Toddlers</title>
		<link>https://courses.ideate.cmu.edu/48-339/s2018/?p=540</link>
				<comments>https://courses.ideate.cmu.edu/48-339/s2018/?p=540#respond</comments>
				<pubDate>Fri, 30 Mar 2018 03:51:56 +0000</pubDate>
		<dc:creator><![CDATA[vkamath@andrew.cmu.edu]]></dc:creator>
				<category><![CDATA[Assignment 4 CRIT]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://courses.ideate.cmu.edu/48-339/s2018/?p=540</guid>
				<description><![CDATA[Abstract: Touchy a game for toddlers. Method: Ethnographic study,  Participatory Design with Parents I spent a few months getting to know the participant, babysitting the kid. This helped me learn the interactions that the user was familiar with. I used the design elements that player was familiar with for e.g. Hey Dugee. Playtesting: A demo &#8230; <a href="https://courses.ideate.cmu.edu/48-339/s2018/?p=540" class="more-link">Continue reading<span class="screen-reader-text"> "Touchy: A Game for Toddlers"</span></a>]]></description>
								<content:encoded><![CDATA[<p><strong>Abstract</strong>: Touchy a game for toddlers.</p>
<p><strong>Method</strong>: Ethnographic study,  Participatory Design with Parents</p>
<p>I spent a few months getting to know the participant, babysitting the kid. This helped me learn the interactions that the user was familiar with. I used the design elements that player was familiar with for e.g. Hey Dugee.</p>
<p><strong>Playtesting: </strong>A demo of a player using the interface.</p>
<p><iframe width="840" height="473" src="https://www.youtube.com/embed/_DGJ8MhvFdg?feature=oembed" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></p>
<p><strong>Parent Feedback</strong>:</p>
<p><img class="alignnone wp-image-543 " src="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/03/photo5037296932657145822-576x1024.jpg" alt="" width="267" height="475" srcset="https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/03/photo5037296932657145822-576x1024.jpg 576w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/03/photo5037296932657145822-169x300.jpg 169w, https://courses.ideate.cmu.edu/48-339/s2018/wp-content/uploads/2018/03/photo5037296932657145822.jpg 720w" sizes="(max-width: 267px) 85vw, 267px" /></p>
<p>Next steps: Add sound, use the yellow car a toy that</p>
<p>Demo: <a href="http://kmarkiv.com/a5/A5js/">http://kmarkiv.com/a5/A5js/</a></p>
<p><span style="color: #993300">[update] </span></p>
<p>After seeking feedback from parents, I added a button to support to direct the child&#8217;s attention to the screen.</p>
<ul>
<li><strong>Demo 2</strong>: <a href="http://kmarkiv.com/a5/A5jsv2/">http://kmarkiv.com/a5/A5jsv2/</a></li>
<li><strong>Code</strong>: <a href="https://drive.google.com/open?id=1YBk1J4fUhweWXnX1DdudYCCycPalWCRn">https://drive.google.com/open?id=1YBk1J4fUhweWXnX1DdudYCCycPalWCRn</a></li>
<li><strong>Feedback:</strong> Parents have now asked for learning component to make the child&#8217;s time productive. One design direction would be to speak the numbers slowly as the character jumps over the car.</li>
</ul>
]]></content:encoded>
							<wfw:commentRss>https://courses.ideate.cmu.edu/48-339/s2018/?feed=rss2&#038;p=540</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
	</channel>
</rss>
