Pill OVO

IMG_0236-16.jpg

Pill OVO

The one and only interactive Drake face pillow.

See intractable here

https://vimeo.com/149339766

IMG_0243-17.jpg

Code

[code]
int valueRead = 0;
int buttonState = 0;
int lastButtonState = 0;

unsigned long currentMillis;
unsigned long pauseMillis;
int millisCounter = 0;

void setup() {
// put your setup code here, to run once:

Serial.begin(9600);
pinMode(4, OUTPUT);
digitalWrite(4, HIGH);
pinMode(5, OUTPUT);
digitalWrite(5, HIGH);
pinMode(6, OUTPUT);
digitalWrite(6, HIGH);
pinMode(7, OUTPUT);
digitalWrite(7, HIGH);
pinMode(8, OUTPUT);
digitalWrite(8, HIGH);
pinMode(9, OUTPUT);
digitalWrite(9, HIGH);

currentMillis = millis();
}

void loop() {
// put your main code here, to run repeatedly:

if(millis() – currentMillis>250)
{
valueRead = analogRead(A0);
int pin = random(6, 9);

Serial.println(analogRead(A0));
if(valueRead > 20){
buttonState = 1;
millisCounter = 0;
}

else {
buttonState = 0;

millisCounter++;
}

// IF INACTIVE FOR 10 SECONDS

if(millisCounter == 120)
{

Serial.println("INACTIVE FOR 10 SECONDS");

pauseMillis = millis();
digitalWrite(5,LOW); // ACTIVATE PIN FOR 30 SECOND PLAY

delay(250);

}

if(millisCounter>120)
{
Serial.println("60 SECOND LOOP");

// digitalWrite(5,HIGH); // DEACTIVATE PIN FOR 30 SECOND PLAYJ

if (millis() – pauseMillis > 60000) // AFTER A MINUTE RESET THE COUNTER
{
millisCounter = 0;
}

}

// IF NOT INACTIVE FOR 10 SECONDS

else
{

if(buttonState == lastButtonState){
for(int i=1; i < 9; i++){
digitalWrite(i, HIGH);
}
}
if(buttonState != lastButtonState){
if (buttonState == 1){
Serial.println(pin);
Serial.println("oh fuck yeah, right there");
digitalWrite(pin, LOW);
delay(250);
//digitalWrite(8, LOW);
}
else if(buttonState == 0){
Serial.println("touch me!");
//digitalWrite(8, HIGH);
for(int i=1; i < 5; i++){
digitalWrite(i, HIGH);
}

}
}

}

lastButtonState = buttonState;

currentMillis = millis();

// END MILLIS LOOP

}

// END LOOP

}

[/code]

The Language of Rain by Ailun Sai

People have a mixture of emotional responses to the rain. Some people enjoy it, while others do not. However, if you consider rain as a friend who is just telling a story to you, then you will love the feeling of touching it. I think the rain has its own emotion and this jacket uses music and light to translate the rain’s emotion into a physical experience for people. With the changing color of the LED sewed onto the jacket and the tempo of the beats, you can immerse yourself in the rainy scene.

Test video

Here is my instructable.

http://www.instructables.com/id/The-Language-of-Rain/

And the video.

The BrainStormer WiBi Rebirth_V

Sometimes finding your thoughts can seem like an impossible task.

A challenge we as designers take seriously when in a job, a class, and not to mention a life where you find that a simple brain storming exercise turns into this vast exploration of space and getting lost.

When was the last time you ever got stuck in your thoughts when brain storming for new ideas?

“La tete dans les nuages”  the French say.

“Your head is in the clouds!”, my teachers would repeat.

WiBi the Winky Brain has found a way to embrace the cloud he has been paying visits to. He took on some of the storm’s characteristics such as lightning –  is working on thunder – and redesigned himself to become a brainstorming session must have!

Well let me show you his first transformation and also how to make BrainStormers of your own…

They are your thoughts, your designs and most importantly your life’s story…

So have fun!

WiBi in the Cloud _V1

What you need?

Screen Shot 2015-12-17 at 8.20.20 AMScreen Shot 2015-12-17 at 8.22.03 AMScreen Shot 2015-12-17 at 8.22.54 AM

Electronic parts:

  • Adafruit MPR121 12-Key Capacitive Touch Sensor and 9V battery
  • Arduino Uno and breadholder mounted on arduino Holder
  • Regular breadboard mounted into arduino holder
  • Solid core wires in different colors
  • 6 x 560 Ohm resistors
  • 6 x LEDs ———- Experiment with colors!

Plush Cloud:

  • Choose your fabric: I chose white felt
  • Conductive fabric
  • Cotton or stuffing fabric. Experiment your light diffusions!

Tools:

  • Soldering iron & solder
  • Wire snippers/strippers
  • Box cutter/Multi-tool
  • Sewing tools/machine

 

Figure out your code and mount your circuit on your Arduino first

If you are not yet acquainted with coding – like me – experimenting, experimenting, experimenting is the best way to learn!

You can find below a presentation from Adafruit that helped me understand MPR121 and of course the great resource that is Adarfuit:

https://learn.adafruit.com/adafruit-mpr121-12-key-capacitive-touch-sensor-breakout-tutorial?view=all

https://learn.adafruit.com/downloads/pdf/adafruit-mpr121-12-key-capacitive-touch-sensor-breakout-tutorial.pdf

Try to experiment how a storm would be and visualize it with LED lights in a cloud… How would it look to you?

Screen Shot 2015-12-17 at 9.24.49 AM

Screen Shot 2015-12-17 at 8.22.32 AM

Click to access adafruit-mpr121-12-key-capacitive-touch-sensor-breakout-tutorial.pdf

I am using a regular breadboard and so to minimize risks of wires getting loose I would recommend you replace loose wires with stronger well fitted customized wires that you would cut and then insert and mount. Also it would help you when soldering!

Draw your Brain/Cloud and this is where WiBi will wink back at you!

 

Solder your LEDs and Resistors and connect them to your Arduino board as shown here:

Depending on your cloud size think your wires size through

Once you figure out where each LED goes and where you want your push buttons ( conductive fabric ) to go, start sewing!

Let’ s make BrainClouds!

 

Make holes inside the fabric to fuse your pins and Arduino boards with your LEDs and your conductive fabric…

Isolate your conductive fabric so they don’t touch when you squoo000sh them…

Don’t forget to mimic a semi brainy cloud!

The Code:

Screen Shot 2015-12-17 at 9.57.32 AM

Screen Shot 2015-12-17 at 9.57.57 AM

Screen Shot 2015-12-17 at 9.58.19 AM

This is V1: Concept and Ideation. Later stages would involve High Resolution and High Tech more fun innovations to experiment with. I highly recommend you start with “old fashion tech” and retrace the history of products for better understanding of firstly your hands, your mind and how what you have in your hands and take from the shelves – or would like to put on the shelves –  would interact with you to begin with and with the rest of the world.

Watch…

 

Find it also at:

http://www.instructables.com/id/The-Brain-StormerVersion1-Brain-Cloud/

The Streching Doorbell

 

I had been thinking to make a shape that can turn people on. So I came up with a lot of ideas at first, but finally decided to make a retreat and stretch structure which can replay to the touch of a finger. the product can be achieved in the process and interesting interaction.

At first, I wanted to use spiky bags to present this retreat and stretch to show the relationship between aggression and friendly interaction. But then I found those spikes very difficult to do the retreat and stretch movement. Then I folded a paper spring, which was very interesting. So I started to place it everywhere to see what connection would the organic shape create with other artifacts, people’s way of life, behavior and mental state.

I thought of turning it into a cup, a plant, a support structure…And finally, I found it interesting when it acted as a doorbell.

Doorbells in our mind are always super concise products, and shouldn’t take much space. They are mostly with white square bases and white round buttons. However, in ancient China, most families’ “doorbell” could be an iron loop fixed on the doors. Some of the families only had wood doors with nothing on it, and in government houses, they may have a big drum instead of little iron loops.

Different people knocking the doors with different emotion creating different stories.

For example, intellectuals might visit seclusive friends on the mountain, reaching the firewood door with their skinny hands from huge sleeves, gently and elegantly; a peasant women might visit relatives, holding the hand of her husband or kid in one hand,  with the other hand knocking the door casually using an old iron loop, and she didn’t have to be polite; visitings between noblemen might be started with the verbal communication of their servants, instead of knocking doors by their own hands, no matter  how delicate their iron loops were; and when a citizen suffering an injustice beat  the drum with anger in front of a government house door, his desire for justice could be directly heard by the ears of the judges and other citizens.

However, in modern society, as people meet friends outside instead of home visiting, neighbors are isolated, fewer family members, the only person who pushes the doorbell is a stranger who is a courier. This results in the concise appearance of doorbells—white, as small as possible and not  obvious. And as the action of pushing a button is modern people’s most familiar action, people spare no efforts, no time and no emotion to do it.

People also don’t like waiting. Everybody ringing the doorbell hopes the people inside can open the door right away. This impatience makes waiting time go even faster, one second becomes one minute. So people outside rang the bell more frequently, and the people in the house would hate the sound of doorbell next time. Thus, a vicious cycle makes the ringing of doorbell an unpleasant way of starting a visit.

So I hope that the interesting little spring can clearly act out the waiting time, but not in a way of telling you the exact minutes of seconds, instead, in the form of a “natural” way—stretching. The retreating of the paper spring from touching is like a shy look, or a quick react. And then the following slow stretching process which is like the stretching of the snail’s antenna is like it’s talking to you,”Who is there? Let me check, oh, it is you!”

If you have this interesting doorbell hanging beside the door, absolutely more people would like to knock at your door! Although as the video mentions, the doorbell is designed to prevent somebody ringing your doorbell too frequently, however, as ringing the doorbell becomes an interesting interaction, maybe people would enjoy keeping ringing your doorbell just to have fun?

See my instructable here!

Breezefinder: Citizen Wind Energy

Anyone who has walked down Tenth Avenue after a rainstorm is familiar with the broken umbrellas scattered everywhere–stuffed into trashcans, abandoned in corners. If the city is so windy, why aren’t there wind turbines everywhere?

As it turns out, the technology to harness unpredictable urban winds is pretty new, but an even bigger problem is a lack of data. Breezefinder is a citizen science solution to the question: where is wind energy?

Main challenges: coding with string and char functions, mastering GPS and phone functions in a relatively new Arduino library, power supply

Eventful mishaps: setting the FONA on fire (just a little)

Next time: a more appropriately designed housing, consolidated power management, no fire

I am really proud of how this project turned out and would like to take it further in the future. Right now my sample data is available @breezefinder on Twitter, and if I had the chance, I’d love to have several Breezefinder feeds collecting data. The Instructable for making Breezefinder yourself is here.

The code:

#include “Adafruit_FONA.h”
#include <SoftwareSerial.h>

#define FONA_RX 2
#define FONA_TX 3
#define FONA_RST 4

SoftwareSerial fonaSS = SoftwareSerial(FONA_TX, FONA_RX);
SoftwareSerial *fonaSerial = &fonaSS;

Adafruit_FONA fona = Adafruit_FONA(FONA_RST);

const int analogInPin = A0;  // Analog input pin that the anemometer is attached to
float outputValue = 0; //value output to PWM (analog out) controls m/s reading

int sensorValue = 0;        // value read from the pot
int threshold = 10.00;          // change this to your desired triggering anemometer reading
char sendto[21] = “40404”;
String label = String(“Yes! windspeed = “);
String label2 = String(” GPS location is “);
String messageString = String();
char message[141];

void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(9600);

Serial.println(F(“Breezefinder SMS test”));
Serial.println(F(“Initializing….(May take 3 seconds)”));

// make it slow so its easy to read!
fonaSerial->begin(9600);
if (! fona.begin(*fonaSerial)) {
Serial.println(F(“Couldn’t find FONA”));
while(1);
}
Serial.println(F(“FONA is OK”));

// Print SIM card IMEI number.
char imei[15] = {0}; // MUST use a 16 character buffer for IMEI!
uint8_t imeiLen = fona.getIMEI(imei);
if (imeiLen > 0) {
Serial.print(“SIM card IMEI: “); Serial.println(imei);
}

Serial.println(F(“FONA is OK”));
// Try to enable GPRS

Serial.println(F(“Enabling GPS…”));
fona.enableGPS(true);

Serial.println(“FONA Ready”);
}

void loop() {
// read the analog in value:
sensorValue = analogRead(analogInPin);

// map the incoming sensor data to the range of the digital out:

/* analog inputs will always bring in a value from 0-1023,
and the second set of numbers in the map function
describe the resulting range.

The sensor is supposed to have a linear relationship from voltage to wind speed,
so this math should result in a multiplier you can use to figure out m/s from the anlog input.
1023/32.4=31.57
*/
outputValue = map(sensorValue, 80, 500, 0, 31.57); //because 1023 is the normal value, but it maps to 5V in the Arduino, I changed it to 500.
//80 is the minimum value of the serial log
// print the results to the serial monitor:
Serial.print(“sensor = ” );
Serial.print(sensorValue);
Serial.print(“\t output = “);
Serial.println(outputValue);

// alter LED state
if (outputValue > 9){ //now you can evaluate for actual wind speed
Serial.print(“YES”);
digitalWrite (ledPin, HIGH);}
else {
Serial.print (“NO”);
digitalWrite (ledPin, LOW);
}
// wait 2 seconds before the next loop
// for the analog-to-digital converter to settle
// after the last reading:
delay(10000);

// read the GPS value
delay(2000);

float latitude, longitude, speed_kph, heading, speed_mph, altitude;

// if you ask for an altitude reading, getGPS will return false if there isn’t a 3D fix
boolean gps_success = fona.getGPS(&latitude, &longitude, &speed_kph, &heading, &altitude);

if (gps_success) {

Serial.print(“GPS lat:”);
Serial.println(latitude, 6);
Serial.print(“GPS long:”);
Serial.println(longitude, 6);
//    Serial.print(“GPS speed KPH:”);
//  Serial.println(speed_kph);
//Serial.print(“GPS speed MPH:”);
//    speed_mph = speed_kph * 0.621371192;
//  Serial.println(speed_mph);
Serial.print(“GPS heading:”);
Serial.println(heading);
Serial.print(“GPS altitude:”);
Serial.println(altitude);

} else {
Serial.println(“Waiting for FONA GPS 3D fix…”);
}

// print the results to the serial monitor:

messageString = label + outputValue + label2 + fona.getGPS(&latitude, &longitude, &speed_kph, &heading, &altitude); //HOW DO I GET GPS DATA IN HERE?
messageString.toCharArray(message, 141);
if (outputValue > threshold){
//Send an automatic response
Serial.println(“Threshold exceeded, sending reponse…”);
if (!fona.sendSMS(sendto, message)) {
Serial.println(F(“Failed”));
} else {
Serial.println(F(“Sent!”));
}
}

// wait 2 milliseconds before the next loop
// for the analog-to-digital converter to settle
// after the last reading:
delay(2);
}