Wen and Baoqi’s Final Project Update

This image has an empty alt attribute; its file name is 442335F4-4D2D-4EA6-B25C-E7871EEA1C5B.png

What:

We decided to use a microphone to detect the public speaker’s volume and visualize the volume information by NeoPixel which can be served as a reminder for the speaker to use proper volume when they give speeches.

Where:

Classroom (Pod)/ Public Space (As Installation)

When:

Giving Presentation/ Rehearsal/ Practicing/ Party

How:

The NeoPixel will give speaker real-time feedback on their volume and voice visualization, and after the speech, the speaker can check their volume history on their phone which is able to help them improve for next time.

At the same time we were thinking about whether we could hang the whole installation, so that it would give the speaker real time feedback and it would hang on the wall as a work of art.

Prototype:

We use Rhino to make the 3D model.
And then we put the model into the real background to see the effect.

Bill List:

NeoPixel

Electret Microphone Amplifier – MAX4466 with Adjustable Gain

Electret Microphone Amplifier - MAX4466 with Adjustable Gain

Mini Illuminated Momentary Pushbutton – Blue Power Symbol

Mini Illuminated Momentary Pushbutton - Blue Power Symbol

TBD: Adafruit Accessories Mini 8×8 white LED Matrix(maybe larger)

Frosted acrylic light diffusion tube

Interaction:

We’ve thought about a lot of ways to interact, and we’re going to do a follow-up experiment this week when we get the material together.


1.Lights flicker like flames to show volume


2.The light changes color with the volume of the sound (for example: the volume is small blue, and the light becomes red as the volume increases)


3.Simulate the curve of sound wave to change the position of light

Amplitude waves. Music sound voice wave. Dynamic equalizer

Danica& Baoqi’s Halloween Costume Working Progress

#include <Adafruit_NeoPixel.h>

#define PIN 0

#define NUM_LEDS 20

#define BRIGHTNESS 50
// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
// NEO_RGB Pixels are wired for RGB bitstream
// NEO_GRB Pixels are wired for GRB bitstream, correct if colors are swapped upon testing
// NEO_RGBW Pixels are wired for RGBW bitstream
// NEO_KHZ400 400 KHz bitstream (e.g. FLORA pixels)
// NEO_KHZ800 800 KHz bitstream (e.g. High Density LED strip), correct for neopixel stick
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800);

void setup() {

strip.setBrightness(BRIGHTNESS);
strip.begin();
strip.show(); // Initialize all pixels to ‘off’
}

void loop() {

customFunction(strip.Color(0,0,255), 100);
customFunction2(strip.Color(0,0,0), 100);
}

void customFunction(uint32_t c, uint8_t wait){
for(uint16_t i=0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, c);
strip.show();
delay(wait);
}
}
void customFunction2(uint32_t c, uint8_t wait){
for(uint16_t i=0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, c);
strip.show();
delay(wait);
}
}

PIXEL COSTUME~

Danica+Baoqi

Our costume is inspired by the game Minecraft, and we will appear in the Halloween parade as two pixelated characters, one with an axe and one with a torch. 

The cube is going to cover our head, upper body part and arms. 

The first pixel girl with the axe has the block sequence around her(or in the other hand), she uses the axe to shut down the block by hitting the axe to the block. We intend to use a hidden switch to trigger this action. 

And the top of the torch in the hand of the pixel holding the torch presents the shape of wave, visually represents the shape of the flame, and has a built-in light string. 

our structure sketch of the torch
the character sketch
some details

Material(possible): Corrugated plastic sheet/ painting/ sticker(pixel patterns)/ boxes

size 12*12

use Wide Format Vinyl Printer & Cutter to print the pattern

Baoqi’s week 5 homework

#include <Adafruit_NeoPixel.h>

#define PIN 6

#define NUM_LEDS 6

#define BRIGHTNESS 50

// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_RGB     Pixels are wired for RGB bitstream
//   NEO_GRB     Pixels are wired for GRB bitstream, correct if colors are swapped upon testing
//   NEO_RGBW    Pixels are wired for RGBW bitstream
//   NEO_KHZ400  400 KHz bitstream (e.g. FLORA pixels)
//   NEO_KHZ800  800 KHz bitstream (e.g. High Density LED strip), correct for neopixel stick
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800);

void setup() {

  strip.setBrightness(BRIGHTNESS);
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
}

void loop() {
 
colorWipe(strip.Color(255, 50, 0), 50); 
colorWipe(strip.Color(0, 0, 255), 50); 
colorWipe(strip.Color(0, 255, 0), 50); 


 delay(2000); 
}

// Fill the dots one after the other with a color
void colorWipe(uint32_t c, uint8_t wait) {
  for(uint16_t i=0; i<strip.numPixels(); i++) {
    strip.setPixelColor(i, c);
    strip.show();
    delay(wait);
  }
}

void pulseWhite(uint8_t wait) {
  for(int j = 0; j < 256 ; j++){
      for(uint16_t i=0; i<strip.numPixels(); i++) {
          strip.setPixelColor(i, strip.Color(0,0,0, j ) );
        }
        delay(wait);
        strip.show();
      }

  for(int j = 255; j >= 0 ; j--){
      for(uint16_t i=0; i<strip.numPixels(); i++) {
          strip.setPixelColor(i, strip.Color(0,0,0, j ) );
        }
        delay(wait);
        strip.show();
      }
}


void rainbowFade2White(uint8_t wait, int rainbowLoops, int whiteLoops) {
  float fadeMax = 100.0;
  int fadeVal = 0;
  uint32_t wheelVal;
  int redVal, greenVal, blueVal;

  for(int k = 0 ; k < rainbowLoops ; k ++){
    
    for(int j=0; j<256; j++) { // 5 cycles of all colors on wheel

      for(int i=0; i< strip.numPixels(); i++) {

        wheelVal = Wheel(((i * 256 / strip.numPixels()) + j) & 255);

        redVal = red(wheelVal) * float(fadeVal/fadeMax);
        greenVal = green(wheelVal) * float(fadeVal/fadeMax);
        blueVal = blue(wheelVal) * float(fadeVal/fadeMax);

        strip.setPixelColor( i, strip.Color( redVal, greenVal, blueVal ) );

      }

      //First loop, fade in!
      if(k == 0 && fadeVal < fadeMax-1) {
          fadeVal++;
      }

      //Last loop, fade out!
      else if(k == rainbowLoops - 1 && j > 255 - fadeMax ){
          fadeVal--;
      }

        strip.show();
        delay(wait);
    }
  
  }



  delay(500);


  for(int k = 0 ; k < whiteLoops ; k ++){

    for(int j = 0; j < 256 ; j++){

        for(uint16_t i=0; i < strip.numPixels(); i++) {
            strip.setPixelColor(i, strip.Color(0,0,0, j ) );
          }
          strip.show();
        }

        delay(2000);
    for(int j = 255; j >= 0 ; j--){

        for(uint16_t i=0; i < strip.numPixels(); i++) {
            strip.setPixelColor(i, strip.Color(0,0,0, j ) );
          }
          strip.show();
        }
  }

  delay(500);


}

void whiteOverRainbow(uint8_t wait, uint8_t whiteSpeed, uint8_t whiteLength ) {
  
  if(whiteLength >= strip.numPixels()) whiteLength = strip.numPixels() - 1;

  int head = whiteLength - 1;
  int tail = 0;

  int loops = 3;
  int loopNum = 0;

  static unsigned long lastTime = 0;


  while(true){
    for(int j=0; j<256; j++) {
      for(uint16_t i=0; i<strip.numPixels(); i++) {
        if((i >= tail && i <= head) || (tail > head && i >= tail) || (tail > head && i <= head) ){
          strip.setPixelColor(i, strip.Color(0,0,0, 255 ) );
        }
        else{
          strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
        }
        
      }

      if(millis() - lastTime > whiteSpeed) {
        head++;
        tail++;
        if(head == strip.numPixels()){
          loopNum++;
        }
        lastTime = millis();
      }

      if(loopNum == loops) return;
    
      head%=strip.numPixels();
      tail%=strip.numPixels();
        strip.show();
        delay(wait);
    }
  }
  
}
void fullWhite() {
  
    for(uint16_t i=0; i<strip.numPixels(); i++) {
        strip.setPixelColor(i, strip.Color(0,0,0, 255 ) );
    }
      strip.show();
}


// Slightly different, this makes the rainbow equally distributed throughout
void rainbowCycle(uint8_t wait) {
  uint16_t i, j;

  for(j=0; j<256 * 5; j++) { // 5 cycles of all colors on wheel
    for(i=0; i< strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
    }
    strip.show();
    delay(wait);
  }
}

void rainbow(uint8_t wait) {
  uint16_t i, j;

  for(j=0; j<256; j++) {
    for(i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel((i+j) & 255));
    }
    strip.show();
    delay(wait);
  }
}

// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
  WheelPos = 255 - WheelPos;
  if(WheelPos < 85) {
    return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3,0);
  }
  if(WheelPos < 170) {
    WheelPos -= 85;
    return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3,0);
  }
  WheelPos -= 170;
  return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0,0);
}

uint8_t red(uint32_t c) {
  return (c >> 8);
}
uint8_t green(uint32_t c) {
  return (c >> 16);
}
uint8_t blue(uint32_t c) {
  return (c);
}

BAOQI DING’s Plush Night Light

This project -FIRST DAY & LAST DAY- is about my feelings about New York and my impression of my hometown. It is a small device about memory. I pixelated the first photo I took after I came to New York and printed it on transparent fabric as my first impression of New York. My last-day impression of my hometown was related to the sea, so I combined the two to form the whole installation. This device is made for myself, and beneath the waves are my memories and emotions.

This image has an empty alt attribute; its file name is img_2271.jpg
Continue reading “BAOQI DING’s Plush Night Light”

BAOQI DING’s Plush Night Light Proposal

This project -FIRST DAY & LAST DAY- is about my feelings about New York and my impression of my hometown. It is a small device about memory. I pixelated the first photo I took after I came to New York and printed it on transparent fabric as my first impression of New York. My last-day impression of my hometown was related to the sea, so I combined the two to form the whole installation. This device is made for myself, and beneath the waves are my memories and emotions.

Continue reading “BAOQI DING’s Plush Night Light Proposal”