Introduction: Neverdream


Neverdream is an installation which reinterprets a traditional Chinese opera, The Peony Pavilion, using 3D electronic story object. The interaction allows exploration between dream and reality in the story. Neverdream attempts to make traditional Chinese opera relevant to contemporary audiences.


Background: Song Dynasty

Characters: Du Liliang, the daughter of an important official

Liu Mengmei, a poor scholar

Du and Liu meet and fall in love with each other in their dreams. They reunite in the real world after experiencing separation, death, and revival.


The user plays the role of Liu in the story. The installation presents the scene, that Liu meets a girl under a plum tree in his dream.

Step 1: Materials

  • Flexinol
  • Thermochromic Pigment
  • Transparent Base
  • TIP 120
  • Diode
  • 100k-ohm resistors
  • 100-ohm resistors
  • 9V batteries
  • Wires
  • Crimp beads
  • Paper
  • Arduino
  • Copper tape
  • Soldering tools
  • Heating pad

Step 2: Printing

Printing the painting on a little thicker paper

Step 3: Painting With Thermochromic Pigment

1. Mix thermochromic pigment with the transparent base. Try different ratios.

2. Spread the pigment on the drawing and test whether the color can disappear when heated.

3. Cut off the best one.

Step 4: Making Petals

1. Prepare several petals, flexinol, copper tape, and crimp beads

2. Sew to fix the flexinol on one side of petal

3. Use crimp beads at the end of flexinol and solder the beads on the tape to make a connection.
Detailed tutorial: Shape Memory Alloy Connection

4. Connect 4 petals in series connection

Step 5: Making Transistor Nodes

Using TIP 120, diode, 100k-ohm resistors, 100-ohm resistors 9V batteries, copper tape to make two circuits as the image. It will protect Arduino from high voltage.

Step 6: Circuit and Code

int heatPin=7;
int flowerPin=8;
unsigned long lastDebounceTime = 0;
bool open;
void setup() {   
// put your setup code here, to run once: 

pinMode(heatPin, OUTPUT);
pinMode(flowerPin, OUTPUT); pinMode(4, INPUT_PULLUP); Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: if(digitalRead(4)==0 && !open) { open=true; lastDebounceTime=millis(); Serial.println("here"); } if(open){ if(millis() - lastDebounceTime<30000) { analogWrite(flowerPin,0); analogWrite(heatPin,250); } else if(millis() - lastDebounceTime>30000 && millis() - lastDebounceTime<38000) { analogWrite(flowerPin,200); analogWrite(heatPin,0); } else if(millis() - lastDebounceTime>=38000) { analogWrite(flowerPin,0); analogWrite(heatPin,0); open=false; } }


Step 7: Assemblage

1. Make two holes and stretch out the flower and girl figure behind the out layer

2. Build the circuit and put the heating pad right behind the girl figure