Joniiz Final Project Documentation

Materials:

  • Graphite pencil
  • Encaustic medium
  • Natural brushes (the rough ones)
  • Wax warmer pot
  • Heat gun
  • Canvas
  • Masking tape
  • 16×16 Neopixel LED Matrix
  • 4 1.5v AA batteries
  • 6v battery holder
  • Jack plug adapter barrel connector
  • 2 pin jst connector
  • Mini screwdriver
  • CPX

Instructions:

  1. Preheat encaustic medium in wax warmer pot. Make sure you know what temperature to bring the wax to!
  2. Using masking tape, line the sides of your canvas. This allows for easy cleanup and removes any unnecessary wax that may drip onto the sides of your canvas.
  3. Trace or sketch directly onto your canvas! Remember that using a graphite pencil will lead to a smudgy design. If this is your desired aesthetic, this works great! If not, opt for a sharpie or paint.
  4. Line your workspace with newspaper or anything else disposable. This makes cleanup so much quicker.
  5. Once your encaustic medium has heated through, use your natural brush to lay an even layer of wax over your canvas. Don’t worry about the messy streaks!
  6. Using a heat gun, reheat the brushed wax into an even layer.
  7. For my project, I wanted an uneven coat, to expose bits of the canvas. If you are looking for a thicker, more even coat, continue to repeat steps 5 and 6!
  8. Allow your canvas to cool
  9. Remove masking tape carefully to remove excess wax from sides of canvas.
  10. Upload your Arduino code onto your Circuit Playground.
  11. Attach your Neopixel matrix with alligator clips directly to your CPX. Be sure to attach your Data input to the appropriate pin from your code.
  12. Attach your 2 pin jst connector to your jack plug adapter barrel connector. Connect this to battery holder.
  13. Using a mini screwdriver, screw these male/female wires into the jack plug adapter.
  14. Insert batteries into holder.
  15. Position everything behind canvas as desired.
  16. Clap to active (:

Code:

#include <Adafruit_GFX.h>

#include <Adafruit_NeoPixel.h>

#include <Adafruit_NeoMatrix.h>

#include <Adafruit_CircuitPlayground.h>

#define LED_PIN A2

#define MATRIX_WIDTH 16

#define MATRIX_HEIGHT 16

#define MATRIX_TYPE   (NEO_MATRIX_BOTTOM + NEO_MATRIX_LEFT + \

                       NEO_MATRIX_ROWS + NEO_MATRIX_ZIGZAG)

// Text

const char* text_to_scroll = “Perez “;

int scroll_speed = 25;    

// higher = less sensitive

#define SOUND_THRESHOLD 85     

const unsigned long CLAP_DELAY_WINDOW = 800;

Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(MATRIX_WIDTH, MATRIX_HEIGHT, LED_PIN,

  MATRIX_TYPE,

  NEO_GRB + NEO_KHZ800);

int x    = matrix.width();

int text_min_x;          

// Clap detection

int clapCount = 0;

unsigned long lastClapTime = 0;

bool displayState = false;

void setup() {

  CircuitPlayground.begin();

  matrix.begin();

  matrix.setBrightness(50);

  matrix.setTextSize(2);

  matrix.setTextColor(matrix.Color(255, 0, 0));

  text_min_x = -(12 * strlen(text_to_scroll));

  matrix.fillScreen(0);

  matrix.show();

}

void loop() {

  detectDoubleClap();

  if (displayState) {

    matrix.fillScreen(0);

    matrix.setCursor(x, 0);

    matrix.print(text_to_scroll);

    matrix.show();

    x = x – 1;

    if (x < text_min_x) {

      x = matrix.width();

    }

    delay(scroll_speed);

  } else {

    matrix.fillScreen(0);

    matrix.show();

    delay(10);

  }

}

void detectDoubleClap() {

  float value = CircuitPlayground.mic.soundPressureLevel(50);

  unsigned long currentTime = millis();

  if (value > SOUND_THRESHOLD) {

    if ((currentTime – lastClapTime) > 100) {

      clapCount++;

      lastClapTime = currentTime;

      if (clapCount == 2) {

        displayState = !displayState;

        if (displayState) {

          x = matrix.width();

        }

        clapCount = 0;

      }

    }

  }

  if (clapCount > 0 && (currentTime – lastClapTime) > CLAP_DELAY_WINDOW) {

    clapCount = 0;

  }

}