For our final project, we were prompted to create a physically interactive system of our choice. My group choose to take an approach toward interactive wearables by taking on an Interactive T-Shirt. Our project proposal can be found here.
Formal Description/Summary of Project:
Our system is an interactive t-shirt that responds to user input from a remote control and in turn displays a graphic. Our group believes that self expression should have no limitations. Therefore, we developed a single shirt that reduces the worry of cluttered closets or limited closet space by having the ability to be a lot of things at once. We also believe that clothing is a great way to express yourself. So, we provided users with an adaptable piece of clothing that can be customized for the use of 21 different graphics. Whether our users want to show school spirit, dress up in a costume, or even make a political statement, our interactive t-shirt is available as the ultimate form of unconstrained and personally developed self-expression. Although we pulled inspiration from Emily Dalp’s embedded LEDs in clothing for dancers, Chris Hill’s soft circuit work with Arduinos, and Tara Simpson’s LED t-shirt, our shirt is unique in that it is controlled by a remote and that it can be programmed to display any type of visual that the user desires. A storyboard of this process for the user is shown below.

The system is a combination of hard circuitry and soft textile materials. To begin, we worked through the hard circuitry. First, we programmed a NeoPixel Matrix (which is a 16×16 grid of LEDs with built-in resistors and mini microcontrollers) with an Arduino. We initially just connected the NeoPixel Matrix directly to the Arduino. Once the two were connected, we were able to test how the LEDs were arranged on the board and how to manipulate them individually and all at once. After gaining a better understanding of how this interaction works, we moved on to develop unique graphics. As a group, we created 9 unique graphics. Next, we moved on to incorporate a remote control. We used an IR Remote which sends infrared signals between the remote and the receiver which are invisible to the human eye but allow the two devices to “talk” to one another. To connect our remote to the existing Arduino and NeoPixel system, we connected the IR Receiver to our Arduino and then identified the unique values for each button. This gave us more information which we could then use to control the graphic display. Once we had the value of each button, we were able to coordinate the pressing of a button to the changing of the graphics on the NeoPixel display.
Finally, we constructed the t-shirt enclosure. To begin, we sewed a pocket on the front of our t-shirt with a secondary t-shirt to hold the NeoPixel Matrix in place nicely. Before being able to completely secure the NeoPixel inside the shirt, we had to solder the components of our circuit so that they would not become disconnected as the user wore the shirt. After soldering we placed the NeoPixel inside the shirt pocket and carefully sewed the wires of the matrix along the inside of the shirt to ensure that the from the outside, all of the wires were hidden only leaving a crisp and clear exterior. We then developed several hidden pockets along the hem of our shirt to store the major technical components of our circuit: the Arduino and the remote. For the Arduino, the pocket was placed along the inside hem so that it was not visible to others but secure. For the remote, the pocket was sewn to be accessible to the user for storage and removal. In line with the soft fabric of the shirt, the user has the option to either push the buttons through the shirt pocket or remove the remote to push the buttons.
More in-depth details about this process are documented below.
PART 1 – Circuitry and Programming:
To begin, we created a circuit with our NeoPixel board. Because we were all new to NeoPixels Matrices, we referenced a few tutorials and YouTube videos to help us get started.
- Individually Addressable RGB LEDs Breakdown
- Adafruit NeoPixel Guide
- Using Excel to make NeoPixel Pattern
- Adafruit Neopixel 8×8 Connectivity and Test
After referencing these videos, we learned that our NeoPixel Matrix consists of Individually Addressable RGB LEDs. This means that each LED has a tiny microcontroller within it that allows it to light up with a unique color and brightness. Between each LED strip there is also a GND, 5V, and data wire. The data wire transfers data between each LED. Each LED reads the data passed to it then increments an LED counter by one before passing the data on. This results in each LED having its own unique identifier from 0 to N-1 (one less than the total number of LEDs).
Following the Adafruit Neopixel 8×8 Connectivity and Tes video, we tested out our Matrix. To connect the NeoPixel Matrix to our Arduino, we connected the 5V pin on the Matrix to the 5V pin on the Arduino, the GND pin on the Matrix to the GND pin on the Arduino, and finally the DIN pin on the Matrix to the 8 pin on the Arduino.



Schematic of Circuit (Produced by Sofia Ozambela):

Next we opened up Arduino to test that we correctly made the connections. But first we had to import some libraries to help us. As suggested in the video, we installed Adafruit GFX, Adafruit NeoPixel and Adafruit NeoMatrix. Adafruit GFX provides graphic functions for LCD and OLED displays, Adafruit NeoPixel and its sub-library Adafruit NeoMatrix provide us with easy ways to control the LEDs in interesting ways. To test our connections initially, we went to the example files for the Adafruit NeoPixel library and choose the RGBWstrandtest file. This file essentially creates a NeoPixel object and then calls several functions. The video below demonstrates the initial filling of the board.
The code for this Adafruit NeoPixel Library example is below:
// NeoPixel test program showing use of the WHITE channel for RGBW | |
// pixels only (won't look correct on regular RGB NeoPixel strips). | |
#include <Adafruit_NeoPixel.h> | |
#ifdef __AVR__ | |
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket | |
#endif | |
// Which pin on the Arduino is connected to the NeoPixels? | |
// On a Trinket or Gemma we suggest changing this to 1: | |
#define LED_PIN 8 | |
// How many NeoPixels are attached to the Arduino? | |
#define LED_COUNT 256 | |
// NeoPixel brightness, 0 (min) to 255 (max) | |
#define BRIGHTNESS 50 // Set BRIGHTNESS to about 1/5 (max = 255) | |
// Declare our NeoPixel strip object: | |
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRBW + NEO_KHZ800); | |
// Argument 1 = Number of pixels in NeoPixel strip | |
// Argument 2 = Arduino pin number (most are valid) | |
// Argument 3 = Pixel type flags, add together as needed: | |
// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs) | |
// NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers) | |
// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products) | |
// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2) | |
// NEO_RGBW Pixels are wired for RGBW bitstream (NeoPixel RGBW products) | |
void setup() { | |
// These lines are specifically to support the Adafruit Trinket 5V 16 MHz. | |
// Any other board, you can remove this part (but no harm leaving it): | |
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000) | |
clock_prescale_set(clock_div_1); | |
#endif | |
// END of Trinket-specific code. | |
strip.begin(); // INITIALIZE NeoPixel strip object (REQUIRED) | |
strip.show(); // Turn OFF all pixels ASAP | |
strip.setBrightness(BRIGHTNESS); | |
} | |
void loop() { | |
// Fill along the length of the strip in various colors… | |
// colorWipe(strip.Color(255, 0, 0) , 50); // Red | |
// colorWipe(strip.Color( 0, 255, 0) , 50); // Green | |
// colorWipe(strip.Color( 0, 0, 255) , 50); // Blue | |
// colorWipe(strip.Color( 0, 0, 0, 255), 50); // True white (not RGB white) | |
whiteOverRainbow(75, 5); | |
pulseWhite(5); | |
rainbowFade2White(3, 3, 1); | |
} | |
// Fill strip pixels one after another with a color. Strip is NOT cleared | |
// first; anything there will be covered pixel by pixel. Pass in color | |
// (as a single 'packed' 32-bit value, which you can get by calling | |
// strip.Color(red, green, blue) as shown in the loop() function above), | |
// and a delay time (in milliseconds) between pixels. | |
void colorWipe(uint32_t color, int wait) { | |
for(int i=0; i<strip.numPixels(); i++) { // For each pixel in strip… | |
strip.setPixelColor(i, color); // Set pixel's color (in RAM) | |
strip.show(); // Update strip to match | |
delay(wait); // Pause for a moment | |
} | |
} | |
void whiteOverRainbow(int whiteSpeed, int whiteLength) { | |
if(whiteLength >= strip.numPixels()) whiteLength = strip.numPixels() – 1; | |
int head = whiteLength – 1; | |
int tail = 0; | |
int loops = 3; | |
int loopNum = 0; | |
uint32_t lastTime = millis(); | |
uint32_t firstPixelHue = 0; | |
for(;;) { // Repeat forever (or until a 'break' or 'return') | |
for(int i=0; i<strip.numPixels(); i++) { // For each pixel in strip… | |
if(((i >= tail) && (i <= head)) || // If between head & tail… | |
((tail > head) && ((i >= tail) || (i <= head)))) { | |
strip.setPixelColor(i, strip.Color(0, 0, 0, 255)); // Set white | |
} else { // else set rainbow | |
int pixelHue = firstPixelHue + (i * 65536L / strip.numPixels()); | |
strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(pixelHue))); | |
} | |
} | |
strip.show(); // Update strip with new contents | |
// There's no delay here, it just runs full-tilt until the timer and | |
// counter combination below runs out. | |
firstPixelHue += 40; // Advance just a little along the color wheel | |
if((millis() – lastTime) > whiteSpeed) { // Time to update head/tail? | |
if(++head >= strip.numPixels()) { // Advance head, wrap around | |
head = 0; | |
if(++loopNum >= loops) return; | |
} | |
if(++tail >= strip.numPixels()) { // Advance tail, wrap around | |
tail = 0; | |
} | |
lastTime = millis(); // Save time of last movement | |
} | |
} | |
} | |
void pulseWhite(uint8_t wait) { | |
for(int j=0; j<256; j++) { // Ramp up from 0 to 255 | |
// Fill entire strip with white at gamma-corrected brightness level 'j': | |
strip.fill(strip.Color(0, 0, 0, strip.gamma8(j))); | |
strip.show(); | |
delay(wait); | |
} | |
for(int j=255; j>=0; j–) { // Ramp down from 255 to 0 | |
strip.fill(strip.Color(0, 0, 0, strip.gamma8(j))); | |
strip.show(); | |
delay(wait); | |
} | |
} | |
void rainbowFade2White(int wait, int rainbowLoops, int whiteLoops) { | |
int fadeVal=0, fadeMax=100; | |
// Hue of first pixel runs 'rainbowLoops' complete loops through the color | |
// wheel. Color wheel has a range of 65536 but it's OK if we roll over, so | |
// just count from 0 to rainbowLoops*65536, using steps of 256 so we | |
// advance around the wheel at a decent clip. | |
for(uint32_t firstPixelHue = 0; firstPixelHue < rainbowLoops*65536; | |
firstPixelHue += 256) { | |
for(int i=0; i<strip.numPixels(); i++) { // For each pixel in strip… | |
// Offset pixel hue by an amount to make one full revolution of the | |
// color wheel (range of 65536) along the length of the strip | |
// (strip.numPixels() steps): | |
uint32_t pixelHue = firstPixelHue + (i * 65536L / strip.numPixels()); | |
// strip.ColorHSV() can take 1 or 3 arguments: a hue (0 to 65535) or | |
// optionally add saturation and value (brightness) (each 0 to 255). | |
// Here we're using just the three-argument variant, though the | |
// second value (saturation) is a constant 255. | |
strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(pixelHue, 255, | |
255 * fadeVal / fadeMax))); | |
} | |
strip.show(); | |
delay(wait); | |
if(firstPixelHue < 65536) { // First loop, | |
if(fadeVal < fadeMax) fadeVal++; // fade in | |
} else if(firstPixelHue >= ((rainbowLoops-1) * 65536)) { // Last loop, | |
if(fadeVal > 0) fadeVal–; // fade out | |
} else { | |
fadeVal = fadeMax; // Interim loop, make sure fade is at max | |
} | |
} | |
for(int k=0; k<whiteLoops; k++) { | |
for(int j=0; j<256; j++) { // Ramp up 0 to 255 | |
// Fill entire strip with white at gamma-corrected brightness level 'j': | |
strip.fill(strip.Color(0, 0, 0, strip.gamma8(j))); | |
strip.show(); | |
} | |
delay(1000); // Pause 1 second | |
for(int j=255; j>=0; j–) { // Ramp down 255 to 0 | |
strip.fill(strip.Color(0, 0, 0, strip.gamma8(j))); | |
strip.show(); | |
} | |
} | |
delay(500); // Pause 1/2 second | |
} |
After testing the NeoPixel Matrix out and getting a better understanding of how it works, we began to write our own code. The first simple script we wrote was pulled and adapted from the Adafruit NeoPixel documentation. We used Adafruit’s recommendation for changing individual pixels and all pixels of the matrix and created a few functions from that simple code. From there, we used Serial to read in a value that would change the display as if it were checking a sensor value from our remote or other switch.
/* Author: Mallory Benna | |
* Date: April 8, 2021 | |
* Purpose: To test input for changing NeoPixel display by function control | |
*/ | |
#include <Adafruit_NeoPixel.h> //import NeoPixel library | |
#define LED_PIN 6 //Pin connected to NeoPixel on Arduino | |
#define LED_COUNT 256 // Number of NeoPixels attached to Arduiino | |
// Define NeoPixel Object | |
// LED_COUNT = Number of pixels in NeoPixel strip | |
// LED_PIN = Arduino pin number | |
// Pixel type flags: | |
// NEO_GRB = Pixels wired fro GRB bitstream | |
// NEO_KHZ800 = 800 KHz bitstream (most NeoPixel products with WS2812 LEDs) | |
Adafruit_NeoPixel neoPix(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); | |
void setup() { | |
neoPix.begin(); //Initialize the neoPixel | |
neoPix.show(); //Turn all pixels 'off' | |
Serial.begin(9600); | |
} | |
void loop() { | |
// while new data is available on the serial port | |
while (Serial.available() > 0) { | |
int receivedData = Serial.parseInt(); // parse an incoming ASCII integer and store it in a variable | |
// When reaching the line break | |
if (Serial.read() == '\n') { | |
// Check whether the data is in the correct range that we need | |
if (receivedData >= 0 && receivedData <= 3) { | |
//set function | |
if(receivedData == 1){ | |
setOne(); | |
} else if (receivedData == 2){ | |
setColor(); | |
} else if (receivedData == 3) { | |
setAll(); | |
} | |
} | |
} | |
} | |
} | |
void setOne(){ | |
neoPix.clear(); | |
neoPix.setPixelColor(11,0,255,0); // number, R, G, B | |
neoPix.show(); | |
delay(5); | |
} | |
void setColor(){ | |
neoPix.clear(); | |
uint32_t magenta = neoPix.Color(255,0,255); | |
neoPix.setPixelColor(11,magenta); | |
neoPix.show(); | |
delay(5); | |
} | |
void setAll(){ | |
neoPix.clear(); | |
uint32_t magenta = neoPix.Color(0,0,255); | |
neoPix.fill(magenta); | |
neoPix.show(); | |
delay(5); | |
} |
We then referenced this tutorial on how to map coordinates in an Excel sheet to the coordinates on the NeoPixel Matrix. We wanted to create a series of displays that had different themes and several options within those themes. This tutorial helped us easily create images in a user-friendly forum like Excel and then translate those images into code without having to write them pixel by pixel. Basically, we changed the fill color of cells in the Excel sheet to make a particular pattern.

Next, we copy and pasted the mapLEDXY( ) function next to the column of X,Y coordinates of the cell that we filled in above in the Excel sheet.

The original writer of this sheet already had a the =CONCATENATE( ) Excel function built into it, so all of the functions that we wrote in were collected in one area that was easy to cut and paste into our code. This concatenated line is the red line in the following image.

Lastly, we pasted the concatenated mapLEDXY( ) functions into our modified version of the Excel code. We only took the mapLEDXY( ) function from the original code and changed it so that it would return a struct of type MappedVals. This struct contains the values for the location of the pixel and the R, G, and B values of that pixel. We then created an array of the mapLEDXY( ) function calls copied from the Excel sheet. Because the mapLEDXY( ) function returns a structure, we iterated over each value in that array and subsequently accessed the memory of the location, R, G, and B values of that structure in a for loop. Therefore, this loop sent the information needed to display a particular pixel of particular color to the NeoPixel Matrix to our Arduino.
The code for the mapping and a function — X( ) — to be mapped is shown below:
/* Author: Mallory Benna | |
* Date: April 8, 2021 | |
* Purpose: To test input for changing NeoPixel display by function control | |
*/ | |
#include <Adafruit_NeoPixel.h> //import NeoPixel library | |
#define LED_PIN 8 //Pin connected to NeoPixel on Arduino | |
#define LED_COUNT 256 // Number of NeoPixels attached to Arduiino | |
// Define NeoPixel Object | |
// LED_COUNT = Number of pixels in NeoPixel strip | |
// LED_PIN = Arduino pin number | |
// Pixel type flags: | |
// NEO_GRB = Pixels wired fro GRB bitstream | |
// NEO_KHZ800 = 800 KHz bitstream (most NeoPixel products with WS2812 LEDs) | |
Adafruit_NeoPixel neoPix(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); | |
//Structure to hold mapped values from Excel | |
struct MappedVals{ | |
int location; | |
int R; | |
int G; | |
int B; | |
}; | |
void setup() { | |
neoPix.begin(); //Initialize the neoPixel | |
neoPix.show(); //Turn all pixels 'off' | |
Serial.begin(9600); | |
} | |
void loop() { | |
// while new data is available on the serial port | |
while (Serial.available() > 0) { | |
int receivedData = Serial.parseInt(); // parse an incoming ASCII integer and store it in a variable | |
// When reaching the line break | |
if (Serial.read() == '\n') { | |
// Check whether the data is in the correct range that we need | |
if (receivedData >= 0 && receivedData <= 3) { | |
//set function | |
if(receivedData == 1){ | |
X(0; | |
} | |
} | |
} | |
} | |
} | |
//Function to map Excel Image to NeoPixel Index from: https://www.youtube.com/watch?v=A_S3LAUQHwU | |
MappedVals mapLEDXY(int y, int x, int RED, int GREEN, int BLUE) { | |
int RGBlocation = 0; | |
if (y % 2 == 0) { //even column | |
RGBlocation = x + y * 16; | |
} else { //odd column | |
RGBlocation = 15 – x + y * 16; | |
} | |
MappedVals valuesMap; //instantiate new struct | |
//set struct values | |
valuesMap.location = RGBlocation; | |
valuesMap.R = RED; | |
valuesMap.G = GREEN; | |
valuesMap.B = BLUE; | |
return valuesMap; | |
} | |
void X() { | |
neoPix.clear(); | |
MappedVals mappedValuesArr[] = { mapLEDXY(0, 0, 0, 0, 10), mapLEDXY(0, 15, 0, 0, 10), mapLEDXY(1, 1, 0, 0, 10), | |
mapLEDXY(1, 14, 0, 0, 10), mapLEDXY(2, 2, 0, 0, 10), mapLEDXY(2, 13, 0, 0, 10), | |
mapLEDXY(3, 3, 0, 0, 10), mapLEDXY(3, 12, 0, 0, 10), mapLEDXY(4, 4, 0, 0, 10), | |
mapLEDXY(4, 11, 0, 0, 10), mapLEDXY(5, 5, 0, 0, 10), mapLEDXY(5, 10, 0, 0, 10), | |
mapLEDXY(6, 6, 0, 0, 10), mapLEDXY(6, 9, 0, 0, 10), mapLEDXY(7, 7, 0, 0, 10), | |
mapLEDXY(7, 8, 0, 0, 10), mapLEDXY(8, 7, 0, 0, 10), mapLEDXY(8, 8, 0, 0, 10), | |
mapLEDXY(9, 6, 0, 0, 10), mapLEDXY(9, 9, 0, 0, 10), mapLEDXY(10, 5, 0, 0, 10), | |
mapLEDXY(10, 10, 0, 0, 10), mapLEDXY(11, 4, 0, 0, 10), mapLEDXY(11, 11, 0, 0, 10), | |
mapLEDXY(12, 3, 0, 0, 10), mapLEDXY(12, 12, 0, 0, 10), mapLEDXY(13, 2, 0, 0, 10), | |
mapLEDXY(13, 13, 0, 0, 10), mapLEDXY(14, 1, 0, 0, 10), mapLEDXY(14, 14, 0, 0, 10), | |
mapLEDXY(15, 0, 0, 0, 10), mapLEDXY(15, 15, 0, 0, 10) }; | |
for(int i=0; i < 32; i++){ | |
neoPix.setPixelColor(mappedValuesArr[i].location,mappedValuesArr[i].R,mappedValuesArr[i].G,mappedValuesArr[i].B); | |
neoPix.show(); | |
} | |
delay(10); | |
} |
Now that we had the general structure, we were able to produce different displays for our NeoPixel. They are all outlined in Excel format here.
Next, we introduced a remote controller to our circuit. To add the remote, we connected the IR Receiver Module to power, ground, and pin 12.
SCHEMATIC 2:

From there, we used the Arduino documentation for the IR Remote to write code that gave us the individual tags for each button on the remote. We uploaded the code to our Arduino and then pressed the buttons on the remote to see what value was given in the “Data” description of each press.

A demonstration of this process to find the button tag values is shown below. You can see the receiver blinking red when a button is pressed, indicating that the remote successfully sent a signal:
Arduino IR Remote Test Code:
/* | |
* SimpleReceiver.cpp | |
* | |
* Demonstrates receiving NEC IR codes with IRrecv | |
* | |
* Copyright (C) 2020-2021 Armin Joachimsmeyer | |
* armin.joachimsmeyer@gmail.com | |
* | |
* This file is part of Arduino-IRremote https://github.com/Arduino-IRremote/Arduino-IRremote. | |
* | |
* MIT License | |
*/ | |
/* | |
* Specify which protocol(s) should be used for decoding. | |
* If no protocol is defined, all protocols are active. | |
*/ | |
#include <Arduino.h> | |
#include <IRremote.h> | |
int IR_RECEIVE_PIN = 12; | |
void setup() { | |
Serial.begin(9600); | |
// Just to know which program is running on my Arduino | |
Serial.println(F("START " __FILE__ " from " __DATE__ "\r\nUsing library version " VERSION_IRREMOTE)); | |
/* | |
* Start the receiver, enable feedback LED and take LED feedback pin from the internal boards definition | |
*/ | |
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); | |
Serial.println(F("Ready to receive IR signals at pin ")); | |
Serial.println("PIN: " + IR_RECEIVE_PIN); | |
Serial.println("setup"); | |
} | |
void loop() { | |
/* | |
* Check if received data is available and if yes, try to decode it. | |
* Decoded result is in the IrReceiver.decodedIRData structure. | |
* | |
* E.g. command is in IrReceiver.decodedIRData.command | |
* address is in command is in IrReceiver.decodedIRData.address | |
* and up to 32 bit raw data in IrReceiver.decodedIRData.decodedRawData | |
*/ | |
if (IrReceiver.decode()) { | |
// Print a short summary of received data | |
IrReceiver.printIRResultShort(&Serial); | |
if (IrReceiver.decodedIRData.protocol == UNKNOWN) { | |
// We have an unknown protocol here, print more info | |
IrReceiver.printIRResultRawFormatted(&Serial, true); | |
} | |
Serial.println(); | |
/* | |
* !!!Important!!! Enable receiving of the next value, | |
* since receiving has stopped after the end of the current received data packet. | |
*/ | |
IrReceiver.resume(); // Enable receiving of the next value | |
/* | |
* Finally, check the received data and perform actions according to the received command | |
*/ | |
if (IrReceiver.decodedIRData.command == 0x10) { | |
Serial.println("hello"); | |
} else if (IrReceiver.decodedIRData.command == 0x45) { | |
Serial.println("second"); | |
} | |
} | |
} |
Now that we had the remote values for each button, we were able to map those values to trigger certain functions to run on our NeoPixel Matrix. We just had to input the data tag value for the button we want to press and call the corresponding function we want to display within the loop( ) of the IR program, just like we did with Serial input. We then compiled our code skeletons together for a functioning program:
/* Author: Mallory Benna | |
* Date: April 8, 2021 | |
* Purpose: To change neopixel display with IR Remote | |
* References: IR – https://github.com/Arduino-IRremote/Arduino-IRremote/blob/master/examples/ReceiveDemo/ReceiveDemo.ino#L38 | |
* | |
*/ | |
#include <Adafruit_NeoPixel.h> //import NeoPixel library | |
#include <Arduino.h> | |
#include <IRremote.h> //Import IR Remote library | |
#define LED_PIN 8 //Pin connected to NeoPixel on Arduino | |
#define LED_COUNT 256 // Number of NeoPixels attached to Arduiino | |
// Define NeoPixel Object | |
// LED_COUNT = Number of pixels in NeoPixel strip | |
// LED_PIN = Arduino pin number | |
// Pixel type flags: | |
// NEO_GRB = Pixels wired fro GRB bitstream | |
// NEO_KHZ800 = 800 KHz bitstream (most NeoPixel products with WS2812 LEDs) | |
Adafruit_NeoPixel neoPix(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); | |
int IR_RECEIVE_PIN = 12; //Pin declaration for IR Remote | |
//Structure to hold mapped values from Excel | |
struct MappedVals{ | |
int location; | |
int R; | |
int G; | |
int B; | |
}; | |
void setup() { | |
Serial.begin(9600); | |
neoPix.begin(); //Initialize the neoPixel | |
neoPix.show(); //Turn all pixels 'off' | |
/* | |
* Start the receiver, enable feedback LED and take LED feedback pin from the internal boards definition | |
*/ | |
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); | |
} | |
void loop() { | |
/* | |
* Check if received data is available and if yes, try to decode it. | |
* Decoded result is in the IrReceiver.decodedIRData structure. | |
* | |
* E.g. command is in IrReceiver.decodedIRData.command | |
* address is in command is in IrReceiver.decodedIRData.address | |
* and up to 32 bit raw data in IrReceiver.decodedIRData.decodedRawData | |
*/ | |
if (IrReceiver.decode()) { | |
// Print a short summary of received data | |
IrReceiver.printIRResultShort(&Serial); | |
if (IrReceiver.decodedIRData.protocol == UNKNOWN) { | |
// We have an unknown protocol here, print more info | |
IrReceiver.printIRResultRawFormatted(&Serial, true); | |
} | |
Serial.println(); | |
/* | |
* !!!Important!!! Enable receiving of the next value, | |
* since receiving has stopped after the end of the current received data packet. | |
*/ | |
IrReceiver.resume(); // Enable receiving of the next value | |
/* | |
* Finally, check the received data and perform actions according to the received command | |
*/ | |
if (IrReceiver.decodedIRData.command == 0x45) { //power button | |
Serial.println("hello"); | |
X(); | |
} else if (IrReceiver.decodedIRData.command == 0x46) { //vol up | |
Serial.println("second"); | |
onePix(); | |
} | |
} | |
} | |
//Function to map Excel Image to NeoPixel Index from: https://www.youtube.com/watch?v=A_S3LAUQHwU | |
MappedVals mapLEDXY(int y, int x, int RED, int GREEN, int BLUE) { | |
int RGBlocation = 0; | |
if (y % 2 == 0) { //even column | |
RGBlocation = x + y * 16; | |
} else { //odd column | |
RGBlocation = 15 – x + y * 16; | |
} | |
MappedVals valuesMap; //instantiate new struct | |
//set struct values | |
valuesMap.location = RGBlocation; | |
valuesMap.R = RED; | |
valuesMap.G = GREEN; | |
valuesMap.B = BLUE; | |
return valuesMap; | |
} | |
void X() { | |
neoPix.clear(); | |
MappedVals mappedValuesArr[] = { mapLEDXY(0, 0, 0, 0, 10), mapLEDXY(0, 15, 0, 0, 10), mapLEDXY(1, 1, 0, 0, 10), | |
mapLEDXY(1, 14, 0, 0, 10), mapLEDXY(2, 2, 0, 0, 10), mapLEDXY(2, 13, 0, 0, 10), | |
mapLEDXY(3, 3, 0, 0, 10), mapLEDXY(3, 12, 0, 0, 10), mapLEDXY(4, 4, 0, 0, 10), | |
mapLEDXY(4, 11, 0, 0, 10), mapLEDXY(5, 5, 0, 0, 10), mapLEDXY(5, 10, 0, 0, 10), | |
mapLEDXY(6, 6, 0, 0, 10), mapLEDXY(6, 9, 0, 0, 10), mapLEDXY(7, 7, 0, 0, 10), | |
mapLEDXY(7, 8, 0, 0, 10), mapLEDXY(8, 7, 0, 0, 10), mapLEDXY(8, 8, 0, 0, 10), | |
mapLEDXY(9, 6, 0, 0, 10), mapLEDXY(9, 9, 0, 0, 10), mapLEDXY(10, 5, 0, 0, 10), | |
mapLEDXY(10, 10, 0, 0, 10), mapLEDXY(11, 4, 0, 0, 10), mapLEDXY(11, 11, 0, 0, 10), | |
mapLEDXY(12, 3, 0, 0, 10), mapLEDXY(12, 12, 0, 0, 10), mapLEDXY(13, 2, 0, 0, 10), | |
mapLEDXY(13, 13, 0, 0, 10), mapLEDXY(14, 1, 0, 0, 10), mapLEDXY(14, 14, 0, 0, 10), | |
mapLEDXY(15, 0, 0, 0, 10), mapLEDXY(15, 15, 0, 0, 10) }; | |
for(int i=0; i < 32; i++){ | |
neoPix.setPixelColor(mappedValuesArr[i].location,mappedValuesArr[i].R,mappedValuesArr[i].G,mappedValuesArr[i].B); | |
neoPix.show(); | |
} | |
delay(10); | |
} | |
void onePix() { | |
neoPix.clear(); | |
neoPix.setPixelColor(11,255,0,255); | |
neoPix.show(); | |
delay(10); | |
} |
Lastly, we implemented each function we made in the Excel sheet. We did run into some issues with the Excel map function giving us some odd pixel references so we ended up just using the .setPixelColor() Arduino function to display each individual pixel. The “test” sheet of the Excel workbook shows the number associated with each pixel.
The final code used is located in the final iteration section.
PART 2 – Enclosure:
For our enclosure, we used a white Gildan t-shirt for the base. We purchased two t-shirts, one for the actual t-shirt itself and one that we cut up for the pocket so that it matched the t-shirt. Below are images of the sewing process, done by my teammate Sofia Ozambela.


Once we got the pocket sewn, we tested the fit of the NeoPixel.

After determining that the fit was good, we further secured the NeoPixel by putting a velcro closure at the top of the pocket. The velcro had a strong adhesive that conformed well to the shirt, so we did not sew it in.
Finally, we tested the integrity of the velcro with the NeoPixel inside.

Once we had the front pocket set, we needed to create the smaller auxiliary pockets for the Arduino, breadboard, and remote.
The following images are produced by my teammate Sofia, who sewed these pockets.












Finally, we compiled the hardware and the enclosure. We hot glued the jumper cables to the breadboard and Arduino so that they would stay secure while a user was wearing the shirt.

Next, we cut a small hole in the internal part of the pocket to run the wires through so that they were not visible from the outside. Sofia then reinforced the hole for the wires and sewed the wires in place.
Lastly, we placed the NeoPixel in the pocket and the Arduino and remote in their respective pockets.





Part 3 – Final Iteration:
Once all the components were placed correctly, we modeled our shirt!









Demo video of working final of project:
Final Code for project:
/* Author: Mallory Benna | |
* Date: April 8, 2021 | |
* Purpose: To change neopixel display with IR Remote | |
* References: IR – https://github.com/Arduino-IRremote/Arduino-IRremote/blob/master/examples/ReceiveDemo/ReceiveDemo.ino#L38 | |
* | |
*/ | |
#include <Adafruit_NeoPixel.h> //import NeoPixel library | |
#include <Arduino.h> | |
#include <IRremote.h> //Import IR Remote library | |
#define LED_PIN 8 //Pin connected to NeoPixel on Arduino | |
#define LED_COUNT 256 // Number of NeoPixels attached to Arduiino | |
// Define NeoPixel Object | |
// LED_COUNT = Number of pixels in NeoPixel strip | |
// LED_PIN = Arduino pin number | |
// Pixel type flags: | |
// NEO_GRB = Pixels wired fro GRB bitstream | |
// NEO_KHZ800 = 800 KHz bitstream (most NeoPixel products with WS2812 LEDs) | |
Adafruit_NeoPixel neoPix(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); | |
int IR_RECEIVE_PIN = 12; //Pin declaration for IR Remote | |
//Structure to hold mapped values from Excel | |
struct MappedVals{ | |
int location; | |
int R; | |
int G; | |
int B; | |
}; | |
void setup() { | |
Serial.begin(9600); | |
neoPix.begin(); //Initialize the neoPixel | |
neoPix.show(); //Turn all pixels 'off' | |
neoPix.setBrightness(10); | |
/* | |
* Start the receiver, enable feedback LED and take LED feedback pin from the internal boards definition | |
*/ | |
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); | |
} | |
void loop() { | |
/* | |
* Check if received data is available and if yes, try to decode it. | |
* Decoded result is in the IrReceiver.decodedIRData structure. | |
* | |
* E.g. command is in IrReceiver.decodedIRData.command | |
* address is in command is in IrReceiver.decodedIRData.address | |
* and up to 32 bit raw data in IrReceiver.decodedIRData.decodedRawData | |
*/ | |
if (IrReceiver.decode()) { | |
// Print a short summary of received data | |
IrReceiver.printIRResultShort(&Serial); | |
if (IrReceiver.decodedIRData.protocol == UNKNOWN) { | |
// We have an unknown protocol here, print more info | |
//IrReceiver.printIRResultRawFormatted(&Serial, true); | |
} | |
Serial.println(); | |
/* | |
* !!!Important!!! Enable receiving of the next value, | |
* since receiving has stopped after the end of the current received data packet. | |
*/ | |
IrReceiver.resume(); // Enable receiving of the next value | |
/* | |
* Finally, check the received data and perform actions according to the received command | |
*/ | |
if (IrReceiver.decodedIRData.command == 0xC) { //1 | |
Serial.println("SKO"); | |
SKO(); | |
} else if (IrReceiver.decodedIRData.command == 0x18) { //2 | |
Serial.println("CU"); | |
CU(); | |
} else if (IrReceiver.decodedIRData.command == 0x5E){ //3 | |
Serial.println("BUFF"); | |
BUFF(); | |
} else if (IrReceiver.decodedIRData.command == 0x8){ //4 | |
Serial.println("HappyFace"); | |
happyAnimate(); | |
} else if (IrReceiver.decodedIRData.command == 0x1C) { //5 | |
squintyAnimate(); | |
} else if (IrReceiver.decodedIRData.command == 0x5A) { //6 | |
cryingAnimate(); | |
} else if(IrReceiver.decodedIRData.command == 0x42){ //7 | |
clover(); | |
} else if(IrReceiver.decodedIRData.command == 0x52){ //8 | |
blinkingTree(); | |
} else if(IrReceiver.decodedIRData.command == 0x4A){ //9 | |
jackolantern(); | |
} | |
} | |
} | |
//Function to map Excel Image to NeoPixel Index from: https://www.youtube.com/watch?v=A_S3LAUQHwU | |
MappedVals mapLEDXY(int y, int x, int RED, int GREEN, int BLUE) { | |
int RGBlocation = 0; | |
if (y % 2 == 0) { //even column | |
RGBlocation = x + y * 16; | |
} else { //odd column | |
RGBlocation = 15 – x + y * 16; | |
} | |
MappedVals valuesMap; //instantiate new struct | |
//set struct values | |
valuesMap.location = RGBlocation; | |
valuesMap.R = RED; | |
valuesMap.G = GREEN; | |
valuesMap.B = BLUE; | |
return valuesMap; | |
} | |
void CU() { | |
neoPix.clear(); | |
MappedVals mappedValuesArrCU[] = {mapLEDXY(4,2,255,215,0),mapLEDXY(5,2,255,215,0),mapLEDXY(6,2,255,215,0), | |
mapLEDXY(7,2,255,215,0),mapLEDXY(8,2,255,215,0),mapLEDXY(9,2,255,215,0), | |
mapLEDXY(9,3,255,215,0),mapLEDXY(4,3,255,215,0),mapLEDXY(4,4,255,215,0), | |
mapLEDXY(4,5,255,215,0),mapLEDXY(4,6,255,215,0),mapLEDXY(4,7,255,215,0), | |
mapLEDXY(4,8,255,215,0),mapLEDXY(4,9,255,215,0),mapLEDXY(5,9,255,215,0), | |
mapLEDXY(6,9,255,215,0),mapLEDXY(7,9,255,215,0),mapLEDXY(8,9,255,215,0), | |
mapLEDXY(9,9,255,215,0),mapLEDXY(9,8,255,215,0), | |
mapLEDXY(6,5,255,215,0), mapLEDXY(6,6,255,215,0),mapLEDXY(6,7,255,215,0), | |
mapLEDXY(6,8,255,215,0), mapLEDXY(6,10,255,215,0), | |
mapLEDXY(6,11,255,215,0), mapLEDXY(6,12,255,215,0),mapLEDXY(7,12,255,215,0), | |
mapLEDXY(8,12,255,215,0),mapLEDXY(9,12,255,215,0),mapLEDXY(10,12,255,215,0), | |
mapLEDXY(11,12,255,215,0),mapLEDXY(11,11,255,215,0),mapLEDXY(11,10,255,215,0), | |
mapLEDXY(11,9,255,215,0),mapLEDXY(11,8,255,215,0),mapLEDXY(11,7,255,215,0), | |
mapLEDXY(11,6,255,215,0),mapLEDXY(11,5,255,215,0)}; | |
for(int i=0; i < 39; i++){ | |
neoPix.setPixelColor(mappedValuesArrCU[i].location,mappedValuesArrCU[i].R,mappedValuesArrCU[i].G,mappedValuesArrCU[i].B); | |
neoPix.show(); | |
} | |
delay(10); | |
} | |
void BUFF() { | |
neoPix.clear(); | |
MappedVals mappedValuesArrBUFF[] = {mapLEDXY(2,7,255,255,255),mapLEDXY(2,10,255,255,255),mapLEDXY(2,11,255,255,255), | |
mapLEDXY(2,12,255,255,255),mapLEDXY(3,8,255,255,255),mapLEDXY(3,9,255,255,255), | |
mapLEDXY(3,10,255,255,255),mapLEDXY(4,7,255,255,255),mapLEDXY(4,8,255,255,255), | |
mapLEDXY(4,9,255,255,255),mapLEDXY(4,10,255,255,255),mapLEDXY(5,6,255,255,255), | |
mapLEDXY(5,7,255,255,255),mapLEDXY(5,8,255,255,255),mapLEDXY(5,9,255,255,255), | |
mapLEDXY(5,10,255,255,255),mapLEDXY(6,5,255,255,255),mapLEDXY(6,6,255,255,255), | |
mapLEDXY(6,7,255,255,255),mapLEDXY(6,8,255,255,255),mapLEDXY(6,9,255,255,255), | |
mapLEDXY(7,4,255,255,255),mapLEDXY(7,5,255,255,255),mapLEDXY(7,6,255,255,255), | |
mapLEDXY(7,7,255,255,255),mapLEDXY(7,8,255,255,255),mapLEDXY(7,9,255,255,255), | |
mapLEDXY(8,4,255,255,255),mapLEDXY(8,5,255,255,255),mapLEDXY(8,6,255,255,255), | |
mapLEDXY(8,7,255,255,255),mapLEDXY(8,8,255,255,255),mapLEDXY(8,9,255,255,255), | |
mapLEDXY(9,5,255,255,255),mapLEDXY(9,6,255,255,255),mapLEDXY(9,7,255,255,255), | |
mapLEDXY(9,8,255,255,255),mapLEDXY(9,9,255,255,255),mapLEDXY(9,10,255,255,255), | |
mapLEDXY(9,11,255,255,255),mapLEDXY(10,6,255,255,255),mapLEDXY(10,7,255,255,255), | |
mapLEDXY(10,8,255,255,255),mapLEDXY(10,9,255,255,255),mapLEDXY(10,10,255,255,255), | |
mapLEDXY(11,7,255,255,255),mapLEDXY(11,8,255,255,255),mapLEDXY(11,9,255,255,255), | |
mapLEDXY(12,4,255,255,255),mapLEDXY(12,5,255,255,255),mapLEDXY(12,6,255,255,255), | |
mapLEDXY(12,7,255,255,255),mapLEDXY(13,5,255,255,255),mapLEDXY(13,6,255,255,255), | |
mapLEDXY(13,7,255,255,255),mapLEDXY(13,7,255,255,255),mapLEDXY(14,6,255,255,255) | |
}; | |
for(int i=0; i < 57; i++){ | |
neoPix.setPixelColor(mappedValuesArrBUFF[i].location,mappedValuesArrBUFF[i].R,mappedValuesArrBUFF[i].G,mappedValuesArrBUFF[i].B); | |
neoPix.setPixelColor(139,255,255,255); | |
neoPix.setPixelColor(140,255,255,255); | |
neoPix.setPixelColor(185,255,255,255); | |
neoPix.setPixelColor(186,255,255,255); | |
neoPix.show(); | |
} | |
delay(10); | |
} | |
void SKO() { | |
neoPix.clear(); | |
MappedVals mappedValuesArrSKO[] = {mapLEDXY(3,1,255,255,255),mapLEDXY(3,2,255,255,255),mapLEDXY(3,3,255,255,255), | |
mapLEDXY(3,4,255,255,255),mapLEDXY(3,6,255,255,255),mapLEDXY(3,7,255,255,255), | |
mapLEDXY(3,9,255,255,255),mapLEDXY(3,10,255,255,255),mapLEDXY(3,11,255,255,255), | |
mapLEDXY(3,12,255,255,255),mapLEDXY(3,13,255,255,255),mapLEDXY(3,14,255,255,255), | |
mapLEDXY(4,1,255,255,255),mapLEDXY(4,4,255,255,255),mapLEDXY(4,7,255,255,255), | |
mapLEDXY(4,9,255,255,255),mapLEDXY(4,14,255,255,255),mapLEDXY(5,1,255,255,255), | |
mapLEDXY(5,4,255,255,255),mapLEDXY(5,7,255,255,255),mapLEDXY(5,9,255,255,255), | |
mapLEDXY(5,14,255,255,255),mapLEDXY(6,1,255,255,255),mapLEDXY(6,2,255,255,255), | |
mapLEDXY(6,4,255,255,255),mapLEDXY(6,5,255,255,255),mapLEDXY(6,6,255,255,255), | |
mapLEDXY(6,11,255,255,255),mapLEDXY(6,12,255,255,255),mapLEDXY(6,13,255,255,255), | |
mapLEDXY(6,14,255,255,255),mapLEDXY(8,1,255,255,255),mapLEDXY(8,2,255,255,255), | |
mapLEDXY(8,3,255,255,255),mapLEDXY(8,4,255,255,255),mapLEDXY(8,5,255,255,255), | |
mapLEDXY(8,6,255,255,255),mapLEDXY(8,7,255,255,255),mapLEDXY(8,9,255,255,255), | |
mapLEDXY(8,10,255,255,255),mapLEDXY(9,4,255,255,255),mapLEDXY(9,9,255,255,255), | |
mapLEDXY(9,10,255,255,255),mapLEDXY(9,11,255,255,255),mapLEDXY(10,3,255,255,255), | |
mapLEDXY(10,5,255,255,255),mapLEDXY(10,9,255,255,255),mapLEDXY(10,10,255,255,255), | |
mapLEDXY(10,11,255,255,255),mapLEDXY(10,12,255,255,255),mapLEDXY(10,14,255,255,255), | |
mapLEDXY(11,2,255,255,255),mapLEDXY(11,6,255,255,255),mapLEDXY(11,9,255,255,255), | |
mapLEDXY(11,10,255,255,255),mapLEDXY(11,11,255,255,255),mapLEDXY(12,1,255,255,255), | |
mapLEDXY(12,7,255,255,255),mapLEDXY(12,9,255,255,255),mapLEDXY(12,10,255,255,255)}; | |
for(int i=0; i < 63; i++){ | |
neoPix.setPixelColor(mappedValuesArrSKO[i].location,mappedValuesArrSKO[i].R,mappedValuesArrSKO[i].G,mappedValuesArrSKO[i].B); | |
neoPix.setPixelColor(103,255,255,255); | |
neoPix.setPixelColor(105,255,255,255); | |
neoPix.setPixelColor(106,255,255,255); | |
neoPix.show(); | |
} | |
delay(10); | |
} | |
void happyFace() { | |
neoPix.clear(); | |
neoPix.setPixelColor(22,255,255,0); | |
neoPix.setPixelColor(23,255,255,0); | |
neoPix.setPixelColor(24,255,255,0); | |
neoPix.setPixelColor(25,255,255,0); | |
neoPix.setPixelColor(37,255,255,0); | |
neoPix.setPixelColor(42,255,255,0); | |
neoPix.setPixelColor(52,255,255,0); | |
neoPix.setPixelColor(59,255,255,0); | |
neoPix.setPixelColor(67,255,255,0); | |
neoPix.setPixelColor(76,255,255,0); | |
neoPix.setPixelColor(82,255,255,0); | |
neoPix.setPixelColor(87,255,0,0); | |
neoPix.setPixelColor(90,0,0,255); | |
neoPix.setPixelColor(91,0,0,255); | |
neoPix.setPixelColor(93,255,255,0); | |
neoPix.setPixelColor(97,255,255,0); | |
neoPix.setPixelColor(100,0,0,255); | |
neoPix.setPixelColor(101,0,0,255); | |
neoPix.setPixelColor(104,255,0,0); | |
neoPix.setPixelColor(105,255,0,0); | |
neoPix.setPixelColor(110,255,255,0); | |
neoPix.setPixelColor(113,255,255,0); | |
neoPix.setPixelColor(117,255,0,0); | |
neoPix.setPixelColor(118,255,0,0); | |
neoPix.setPixelColor(119,255,0,0); | |
neoPix.setPixelColor(126,255,255,0); | |
neoPix.setPixelColor(129,255,255,0); | |
neoPix.setPixelColor(136,255,0,0); | |
neoPix.setPixelColor(137,255,0,0); | |
neoPix.setPixelColor(138,255,0,0); | |
neoPix.setPixelColor(142,255,255,0); | |
neoPix.setPixelColor(145,255,255,0); | |
neoPix.setPixelColor(150,255,0,0); | |
neoPix.setPixelColor(151,255,0,0); | |
neoPix.setPixelColor(154,0,0,255); | |
neoPix.setPixelColor(155,0,0,255); | |
neoPix.setPixelColor(158,255,255,0); | |
neoPix.setPixelColor(162,255,255,0); | |
neoPix.setPixelColor(164,0,0,255); | |
neoPix.setPixelColor(165,0,0,255); | |
neoPix.setPixelColor(168,255,0,0); | |
neoPix.setPixelColor(173,255,255,0); | |
neoPix.setPixelColor(179,255,255,0); | |
neoPix.setPixelColor(188,255,255,0); | |
neoPix.setPixelColor(196,255,255,0); | |
neoPix.setPixelColor(203,255,255,0); | |
neoPix.setPixelColor(213,255,255,0); | |
neoPix.setPixelColor(218,255,255,0); | |
neoPix.setPixelColor(230,255,255,0); | |
neoPix.setPixelColor(231,255,255,0); | |
neoPix.setPixelColor(232,255,255,0); | |
neoPix.setPixelColor(233,255,255,0); | |
neoPix.show(); | |
} | |
void happyFace2(){ | |
//neoPix.clear(); | |
neoPix.setPixelColor(22,255,255,0); | |
neoPix.setPixelColor(23,255,255,0); | |
neoPix.setPixelColor(24,255,255,0); | |
neoPix.setPixelColor(25,255,255,0); | |
neoPix.setPixelColor(37,255,255,0); | |
neoPix.setPixelColor(42,255,255,0); | |
neoPix.setPixelColor(52,255,255,0); | |
neoPix.setPixelColor(59,255,255,0); | |
neoPix.setPixelColor(67,255,255,0); | |
neoPix.setPixelColor(72,255,0,0); | |
neoPix.setPixelColor(76,255,255,0); | |
neoPix.setPixelColor(82,255,255,0); | |
neoPix.setPixelColor(86,255,0,0); | |
neoPix.setPixelColor(87,255,0,0); | |
neoPix.setPixelColor(90,0,0,255); | |
neoPix.setPixelColor(91,255,255,255); | |
neoPix.setPixelColor(93,255,255,0); | |
neoPix.setPixelColor(97,255,255,0); | |
neoPix.setPixelColor(100,0,0,255); | |
neoPix.setPixelColor(101,0,0,255); | |
neoPix.setPixelColor(104,255,0,0); | |
neoPix.setPixelColor(105,255,0,0); | |
neoPix.setPixelColor(106,255,0,0); | |
neoPix.setPixelColor(110,255,255,0); | |
neoPix.setPixelColor(113,255,255,0); | |
neoPix.setPixelColor(116,255,0,0); | |
neoPix.setPixelColor(117,255,0,0); | |
neoPix.setPixelColor(118,255,0,0); | |
neoPix.setPixelColor(119,255,0,0); | |
neoPix.setPixelColor(126,255,255,0); | |
neoPix.setPixelColor(129,255,255,0); | |
neoPix.setPixelColor(136,255,0,0); | |
neoPix.setPixelColor(137,255,0,0); | |
neoPix.setPixelColor(138,255,0,0); | |
neoPix.setPixelColor(139,255,0,0); | |
neoPix.setPixelColor(142,255,255,0); | |
neoPix.setPixelColor(145,255,255,0); | |
neoPix.setPixelColor(149,255,0,0); | |
neoPix.setPixelColor(150,255,0,0); | |
neoPix.setPixelColor(151,255,0,0); | |
neoPix.setPixelColor(154,0,0,255); | |
neoPix.setPixelColor(155,255,255,255); | |
neoPix.setPixelColor(158,255,255,0); | |
neoPix.setPixelColor(162,255,255,0); | |
neoPix.setPixelColor(164,0,0,255); | |
neoPix.setPixelColor(165,0,0,255); | |
neoPix.setPixelColor(168,255,0,0); | |
neoPix.setPixelColor(169,255,0,0); | |
neoPix.setPixelColor(173,255,255,0); | |
neoPix.setPixelColor(179,255,255,0); | |
neoPix.setPixelColor(183,255,0,0); | |
neoPix.setPixelColor(188,255,255,0); | |
neoPix.setPixelColor(196,255,255,0); | |
neoPix.setPixelColor(203,255,255,0); | |
neoPix.setPixelColor(213,255,255,0); | |
neoPix.setPixelColor(218,255,255,0); | |
neoPix.setPixelColor(230,255,255,0); | |
neoPix.setPixelColor(231,255,255,0); | |
neoPix.setPixelColor(232,255,255,0); | |
neoPix.setPixelColor(233,255,255,0); | |
neoPix.show(); | |
} | |
void happyAnimate(){ | |
for(int i=0; i < 5; i++){ | |
happyFace(); | |
delay(1000); | |
happyFace2(); | |
delay(1000); | |
} | |
} | |
void squinty1(){ | |
neoPix.clear(); | |
neoPix.setPixelColor(22,255,255,0); | |
neoPix.setPixelColor(23,255,255,0); | |
neoPix.setPixelColor(24,255,255,0); | |
neoPix.setPixelColor(25,255,255,0); | |
neoPix.setPixelColor(37,255,255,0); | |
neoPix.setPixelColor(42,255,255,0); | |
neoPix.setPixelColor(52,255,255,0); | |
neoPix.setPixelColor(59,255,255,0); | |
neoPix.setPixelColor(67,255,255,0); | |
neoPix.setPixelColor(76,255,255,0); | |
neoPix.setPixelColor(82,255,255,0); | |
neoPix.setPixelColor(86,255,0,0); | |
neoPix.setPixelColor(89,0,0,255); | |
neoPix.setPixelColor(91,0,0,255); | |
neoPix.setPixelColor(93,255,255,0); | |
neoPix.setPixelColor(97,255,255,0); | |
neoPix.setPixelColor(101,0,0,255); | |
neoPix.setPixelColor(106,255,0,0); | |
neoPix.setPixelColor(110,255,255,0); | |
neoPix.setPixelColor(113,255,255,0); | |
neoPix.setPixelColor(118,255,0,0); | |
neoPix.setPixelColor(126,255,255,0); | |
neoPix.setPixelColor(129,255,255,0); | |
neoPix.setPixelColor(138,255,0,0); | |
neoPix.setPixelColor(142,255,255,0); | |
neoPix.setPixelColor(145,255,255,0); | |
neoPix.setPixelColor(150,255,0,0); | |
neoPix.setPixelColor(154,0,0,255); | |
neoPix.setPixelColor(158,255,255,0); | |
neoPix.setPixelColor(162,255,255,0); | |
neoPix.setPixelColor(164,0,0,255); | |
neoPix.setPixelColor(166,0,0,255); | |
neoPix.setPixelColor(170,255,0,0); | |
neoPix.setPixelColor(173,255,255,0); | |
neoPix.setPixelColor(179,255,255,0); | |
neoPix.setPixelColor(188,255,255,0); | |
neoPix.setPixelColor(196,255,255,0); | |
neoPix.setPixelColor(203,255,255,0); | |
neoPix.setPixelColor(213,255,255,0); | |
neoPix.setPixelColor(218,255,255,0); | |
neoPix.setPixelColor(230,255,255,0); | |
neoPix.setPixelColor(231,255,255,0); | |
neoPix.setPixelColor(232,255,255,0); | |
neoPix.setPixelColor(233,255,255,0); | |
neoPix.show(); | |
} | |
void squinty2(){ | |
neoPix.setPixelColor(22,255,255,0); | |
neoPix.setPixelColor(23,255,255,0); | |
neoPix.setPixelColor(24,255,255,0); | |
neoPix.setPixelColor(25,255,255,0); | |
neoPix.setPixelColor(37,255,255,0); | |
neoPix.setPixelColor(42,255,255,0); | |
neoPix.setPixelColor(52,255,255,0); | |
neoPix.setPixelColor(59,255,255,0); | |
neoPix.setPixelColor(67,255,255,0); | |
neoPix.setPixelColor(76,255,255,0); | |
neoPix.setPixelColor(82,255,255,0); | |
neoPix.setPixelColor(85,255,0,0); | |
neoPix.setPixelColor(89,0,0,255); | |
neoPix.setPixelColor(91,0,0,255); | |
neoPix.setPixelColor(93,255,255,0); | |
neoPix.setPixelColor(97,255,255,0); | |
neoPix.setPixelColor(101,0,0,255); | |
neoPix.setPixelColor(105,255,0,0); | |
neoPix.setPixelColor(110,255,255,0); | |
neoPix.setPixelColor(113,255,255,0); | |
neoPix.setPixelColor(117,255,0,0); | |
neoPix.setPixelColor(126,255,255,0); | |
neoPix.setPixelColor(129,255,255,0); | |
neoPix.setPixelColor(137,255,0,0); | |
neoPix.setPixelColor(142,255,255,0); | |
neoPix.setPixelColor(145,255,255,0); | |
neoPix.setPixelColor(149,255,0,0); | |
neoPix.setPixelColor(154,0,0,255); | |
neoPix.setPixelColor(158,255,255,0); | |
neoPix.setPixelColor(162,255,255,0); | |
neoPix.setPixelColor(164,0,0,255); | |
neoPix.setPixelColor(166,0,0,255); | |
neoPix.setPixelColor(169,255,0,0); | |
neoPix.setPixelColor(173,255,255,0); | |
neoPix.setPixelColor(179,255,255,0); | |
neoPix.setPixelColor(188,255,255,0); | |
neoPix.setPixelColor(196,255,255,0); | |
neoPix.setPixelColor(203,255,255,0); | |
neoPix.setPixelColor(213,255,255,0); | |
neoPix.setPixelColor(218,255,255,0); | |
neoPix.setPixelColor(230,255,255,0); | |
neoPix.setPixelColor(231,255,255,0); | |
neoPix.setPixelColor(232,255,255,0); | |
neoPix.setPixelColor(233,255,255,0); | |
neoPix.show(); | |
} | |
void squintyAnimate(){ | |
for(int i=0; i < 5; i++){ | |
squinty1(); | |
delay(1000); | |
squinty2(); | |
delay(1000); | |
} | |
} | |
void clover(){ | |
neoPix.clear(); | |
neoPix.setPixelColor(27, 55, 200, 70); | |
neoPix.setPixelColor(26, 55, 200, 70); | |
neoPix.setPixelColor(25, 55, 200, 70); | |
neoPix.setPixelColor(24, 55, 200, 70); | |
neoPix.setPixelColor(34, 55, 200, 70); | |
neoPix.setPixelColor(35, 55, 200, 70); | |
neoPix.setPixelColor(36, 55, 200, 70); | |
neoPix.setPixelColor(37, 55, 200, 70); | |
neoPix.setPixelColor(38, 55, 200, 70); | |
neoPix.setPixelColor(39, 55, 200, 70); | |
neoPix.setPixelColor(61, 55, 200, 70); | |
neoPix.setPixelColor(60, 55, 200, 70); | |
neoPix.setPixelColor(59, 55, 200, 70); | |
neoPix.setPixelColor(58, 55, 200, 70); | |
neoPix.setPixelColor(56, 55, 200, 70); | |
neoPix.setPixelColor(66, 55, 200, 70); | |
neoPix.setPixelColor(67, 55, 200, 70); | |
neoPix.setPixelColor(68, 55, 200, 70); | |
neoPix.setPixelColor(69, 55, 200, 70); | |
neoPix.setPixelColor(71, 55, 200, 70); | |
neoPix.setPixelColor(93, 55, 200, 70); | |
neoPix.setPixelColor(92, 55, 200, 70); | |
neoPix.setPixelColor(88, 55, 200, 70); | |
neoPix.setPixelColor(20, 55, 200, 70); | |
neoPix.setPixelColor(19, 55, 200, 70); | |
neoPix.setPixelColor(18, 55, 200, 70); | |
neoPix.setPixelColor(41, 55, 200, 70); | |
neoPix.setPixelColor(42, 55, 200, 70); | |
neoPix.setPixelColor(43, 55, 200, 70); | |
neoPix.setPixelColor(44, 55, 200, 70); | |
neoPix.setPixelColor(45, 55, 200, 70); | |
neoPix.setPixelColor(46, 55, 200, 70); | |
neoPix.setPixelColor(54, 55, 200, 70); | |
neoPix.setPixelColor(52, 55, 200, 70); | |
neoPix.setPixelColor(51, 55, 200, 70); | |
neoPix.setPixelColor(50, 55, 200, 70); | |
neoPix.setPixelColor(49, 55, 200, 70); | |
neoPix.setPixelColor(73, 55, 200, 70); | |
neoPix.setPixelColor(75, 55, 200, 70); | |
neoPix.setPixelColor(76, 55, 200, 70); | |
neoPix.setPixelColor(77, 55, 200, 70); | |
neoPix.setPixelColor(78, 55, 200, 70); | |
neoPix.setPixelColor(86, 55, 200, 70); | |
neoPix.setPixelColor(82, 55, 200, 70); | |
neoPix.setPixelColor(81, 55, 200, 70); | |
neoPix.setPixelColor(99, 55, 200, 70); | |
neoPix.setPixelColor(100, 55, 200, 70); | |
neoPix.setPixelColor(101, 55, 200, 70); | |
neoPix.setPixelColor(102, 55, 200, 70); | |
neoPix.setPixelColor(103, 55, 200, 70); | |
neoPix.setPixelColor(104, 55, 200, 70); | |
neoPix.setPixelColor(105, 55, 200, 70); | |
neoPix.setPixelColor(106, 55, 200, 70); | |
neoPix.setPixelColor(107, 55, 200, 70); | |
neoPix.setPixelColor(108, 55, 200, 70); | |
neoPix.setPixelColor(109, 55, 200, 70); | |
neoPix.setPixelColor(110, 55, 200, 70); | |
neoPix.setPixelColor(119, 55, 200, 70); | |
neoPix.setPixelColor(117, 55, 200, 70); | |
neoPix.setPixelColor(131, 55, 200, 70); | |
neoPix.setPixelColor(132, 55, 200, 70); | |
neoPix.setPixelColor(133, 55, 200, 70); | |
neoPix.setPixelColor(134, 55, 200, 70); | |
neoPix.setPixelColor(135, 55, 200, 70); | |
neoPix.setPixelColor(136, 55, 200, 70); | |
neoPix.setPixelColor(137, 55, 200, 70); | |
neoPix.setPixelColor(138, 55, 200, 70); | |
neoPix.setPixelColor(139, 55, 200, 70); | |
neoPix.setPixelColor(140, 55, 200, 70); | |
neoPix.setPixelColor(157, 55, 200, 70); | |
neoPix.setPixelColor(156, 55, 200, 70); | |
neoPix.setPixelColor(152, 55, 200, 70); | |
neoPix.setPixelColor(162, 55, 200, 70); | |
neoPix.setPixelColor(163, 55, 200, 70); | |
neoPix.setPixelColor(164, 55, 200, 70); | |
neoPix.setPixelColor(165, 55, 200, 70); | |
neoPix.setPixelColor(167, 55, 200, 70); | |
neoPix.setPixelColor(189, 55, 200, 70); | |
neoPix.setPixelColor(188, 55, 200, 70); | |
neoPix.setPixelColor(187, 55, 200, 70); | |
neoPix.setPixelColor(186, 55, 200, 70); | |
neoPix.setPixelColor(184, 55, 200, 70); | |
neoPix.setPixelColor(194, 55, 200, 70); | |
neoPix.setPixelColor(195, 55, 200, 70); | |
neoPix.setPixelColor(196, 55, 200, 70); | |
neoPix.setPixelColor(197, 55, 200, 70); | |
neoPix.setPixelColor(198, 55, 200, 70); | |
neoPix.setPixelColor(199, 55, 200, 70); | |
neoPix.setPixelColor(219, 55, 200, 70); | |
neoPix.setPixelColor(218, 55, 200, 70); | |
neoPix.setPixelColor(217, 55, 200, 70); | |
neoPix.setPixelColor(216, 55, 200, 70); | |
neoPix.setPixelColor(150, 55, 200, 70); | |
neoPix.setPixelColor(146, 55, 200, 70); | |
neoPix.setPixelColor(169, 55, 200, 70); | |
neoPix.setPixelColor(171, 55, 200, 70); | |
neoPix.setPixelColor(172, 55, 200, 70); | |
neoPix.setPixelColor(173, 55, 200, 70); | |
neoPix.setPixelColor(174, 55, 200, 70); | |
neoPix.setPixelColor(182, 55, 200, 70); | |
neoPix.setPixelColor(180, 55, 200, 70); | |
neoPix.setPixelColor(179, 55, 200, 70); | |
neoPix.setPixelColor(178, 55, 200, 70); | |
neoPix.setPixelColor(177, 55, 200, 70); | |
neoPix.setPixelColor(201, 55, 200, 70); | |
neoPix.setPixelColor(202, 55, 200, 70); | |
neoPix.setPixelColor(203, 55, 200, 70); | |
neoPix.setPixelColor(204, 55, 200, 70); | |
neoPix.setPixelColor(205, 55, 200, 70); | |
neoPix.setPixelColor(206, 55, 200, 70); | |
neoPix.setPixelColor(212, 55, 200, 70); | |
neoPix.setPixelColor(211, 55, 200, 70); | |
neoPix.setPixelColor(210, 55, 200, 70); | |
neoPix.setPixelColor(57, 25, 205, 33); | |
neoPix.setPixelColor(70, 25, 205, 33); | |
neoPix.setPixelColor(53, 25, 205, 33); | |
neoPix.setPixelColor(74, 25, 105, 33); | |
neoPix.setPixelColor(89, 25, 205, 33); | |
neoPix.setPixelColor(90, 25, 205, 33); | |
neoPix.setPixelColor(91, 25, 205, 33); | |
neoPix.setPixelColor(85, 25, 205, 33); | |
neoPix.setPixelColor(84, 25, 205, 33); | |
neoPix.setPixelColor(83, 25, 205, 33); | |
neoPix.setPixelColor(118, 25, 205, 33); | |
neoPix.setPixelColor(116, 25, 205, 33); | |
neoPix.setPixelColor(115, 25, 205, 33); | |
neoPix.setPixelColor(114, 25, 205, 33); | |
neoPix.setPixelColor(141, 25, 205, 33); | |
neoPix.setPixelColor(142, 25, 205, 33); | |
neoPix.setPixelColor(145, 25, 205, 33); | |
neoPix.setPixelColor(144, 25, 205, 33); | |
neoPix.setPixelColor(155, 25, 205, 33); | |
neoPix.setPixelColor(154, 25, 205, 33); | |
neoPix.setPixelColor(153, 25, 205, 33); | |
neoPix.setPixelColor(166, 25, 205, 33); | |
neoPix.setPixelColor(185, 25, 205, 33); | |
neoPix.setPixelColor(149, 25, 205, 33); | |
neoPix.setPixelColor(148, 25, 205, 33); | |
neoPix.setPixelColor(147, 25, 205, 33); | |
neoPix.setPixelColor(170, 25, 205, 33); | |
neoPix.setPixelColor(181, 25, 205, 33); | |
neoPix.setPixelColor(175, 25, 205, 33); | |
neoPix.setPixelColor(176, 25, 205, 33); | |
neoPix.setPixelColor(207, 25, 205, 33); | |
neoPix.setPixelColor(208, 25, 205, 33); | |
neoPix.setPixelColor(239, 25, 205, 33); | |
neoPix.show(); | |
} | |
void crying1(){ | |
neoPix.clear(); | |
neoPix.setPixelColor(22,0,0,255); | |
neoPix.setPixelColor(23,255,255,0); | |
neoPix.setPixelColor(24,255,255,0); | |
neoPix.setPixelColor(25,255,255,0); | |
neoPix.setPixelColor(37,255,255,0); | |
neoPix.setPixelColor(42,255,255,0); | |
neoPix.setPixelColor(52,255,255,0); | |
neoPix.setPixelColor(90,0,0,255); | |
neoPix.setPixelColor(59,255,255,0); | |
neoPix.setPixelColor(67,255,255,0); | |
neoPix.setPixelColor(76,255,255,0); | |
neoPix.setPixelColor(84,255,0,0); | |
neoPix.setPixelColor(90,0,0,255); | |
neoPix.setPixelColor(91,0,0,255); | |
neoPix.setPixelColor(93,255,255,0); | |
neoPix.setPixelColor(97,255,255,0); | |
neoPix.setPixelColor(100,0,0,255); | |
neoPix.setPixelColor(101,0,0,255); | |
neoPix.setPixelColor(105,255,0,0); | |
neoPix.setPixelColor(106,255,0,0); | |
neoPix.setPixelColor(107,255,0,0); | |
neoPix.setPixelColor(110,255,255,0); | |
neoPix.setPixelColor(113,255,255,0); | |
neoPix.setPixelColor(116,255,0,0); | |
neoPix.setPixelColor(117,255,0,0); | |
neoPix.setPixelColor(118,255,0,0); | |
neoPix.setPixelColor(126,255,255,0); | |
neoPix.setPixelColor(129,255,255,0); | |
neoPix.setPixelColor(137,255,0,0); | |
neoPix.setPixelColor(138,255,0,0); | |
neoPix.setPixelColor(139,255,0,0); | |
neoPix.setPixelColor(142,255,255,0); | |
neoPix.setPixelColor(145,255,255,0); | |
neoPix.setPixelColor(148,255,0,0); | |
neoPix.setPixelColor(149,255,0,0); | |
neoPix.setPixelColor(150,255,0,0); | |
neoPix.setPixelColor(154,0,0,255); | |
neoPix.setPixelColor(155,0,0,255); | |
neoPix.setPixelColor(158,255,255,0); | |
neoPix.setPixelColor(162,255,255,0); | |
neoPix.setPixelColor(164,0,0,255); | |
neoPix.setPixelColor(165,0,0,255); | |
neoPix.setPixelColor(171,255,0,0); | |
neoPix.setPixelColor(173,255,255,0); | |
neoPix.setPixelColor(179,255,255,0); | |
neoPix.setPixelColor(188,255,255,0); | |
neoPix.setPixelColor(196,255,255,0); | |
neoPix.setPixelColor(199,0,0,255); | |
neoPix.setPixelColor(203,255,255,0); | |
neoPix.setPixelColor(213,255,255,0); | |
neoPix.setPixelColor(218,255,255,0); | |
neoPix.setPixelColor(230,255,255,0); | |
neoPix.setPixelColor(231,255,255,0); | |
neoPix.setPixelColor(232,255,255,0); | |
neoPix.setPixelColor(233,0,0,255); | |
neoPix.setPixelColor(56,0,0,255); | |
neoPix.setPixelColor(82,255,255,0); | |
neoPix.show(); | |
} | |
void crying2(){ | |
neoPix.clear(); | |
neoPix.setPixelColor(22,255,255,0); | |
neoPix.setPixelColor(82,255,255,0); | |
neoPix.setPixelColor(23,255,255,0); | |
neoPix.setPixelColor(24,255,255,0); | |
neoPix.setPixelColor(25,255,255,0); | |
neoPix.setPixelColor(37,255,255,0); | |
neoPix.setPixelColor(42,255,255,0); | |
neoPix.setPixelColor(40,0,0,255); | |
neoPix.setPixelColor(52,255,255,0); | |
neoPix.setPixelColor(56,0,0,255); | |
neoPix.setPixelColor(59,255,255,0); | |
neoPix.setPixelColor(67,255,255,0); | |
neoPix.setPixelColor(70,0,0,255); | |
neoPix.setPixelColor(76,255,255,0); | |
neoPix.setPixelColor(84,255,0,0); | |
neoPix.setPixelColor(90,0,0,255); | |
neoPix.setPixelColor(91,0,0,255); | |
neoPix.setPixelColor(93,255,255,0); | |
neoPix.setPixelColor(97,255,255,0); | |
neoPix.setPixelColor(100,0,0,255); | |
neoPix.setPixelColor(101,0,0,255); | |
//neoPix.setPixelColor(105,255,0,0); | |
neoPix.setPixelColor(106,255,0,0); | |
neoPix.setPixelColor(107,255,0,0); | |
neoPix.setPixelColor(110,255,255,0); | |
neoPix.setPixelColor(113,255,255,0); | |
//neoPix.setPixelColor(116,255,0,0); | |
//neoPix.setPixelColor(117,255,0,0); | |
neoPix.setPixelColor(118,255,0,0); | |
neoPix.setPixelColor(126,255,255,0); | |
neoPix.setPixelColor(129,255,255,0); | |
neoPix.setPixelColor(137,255,0,0); | |
//neoPix.setPixelColor(138,255,0,0); | |
//neoPix.setPixelColor(139,255,0,0); | |
neoPix.setPixelColor(142,255,255,0); | |
neoPix.setPixelColor(145,255,255,0); | |
neoPix.setPixelColor(148,255,0,0); | |
neoPix.setPixelColor(149,255,0,0); | |
//neoPix.setPixelColor(150,255,0,0); | |
neoPix.setPixelColor(154,0,0,255); | |
neoPix.setPixelColor(155,0,0,255); | |
neoPix.setPixelColor(158,255,255,0); | |
neoPix.setPixelColor(162,255,255,0); | |
neoPix.setPixelColor(164,0,0,255); | |
neoPix.setPixelColor(165,0,0,255); | |
neoPix.setPixelColor(171,255,0,0); | |
neoPix.setPixelColor(173,255,255,0); | |
neoPix.setPixelColor(179,255,255,0); | |
neoPix.setPixelColor(185,0,0,255); | |
neoPix.setPixelColor(188,255,255,0); | |
neoPix.setPixelColor(196,255,255,0); | |
neoPix.setPixelColor(199,0,0,255); | |
neoPix.setPixelColor(203,255,255,0); | |
neoPix.setPixelColor(213,255,255,0); | |
neoPix.setPixelColor(215,0,0,255); | |
neoPix.setPixelColor(218,255,255,0); | |
neoPix.setPixelColor(230,255,255,0); | |
neoPix.setPixelColor(231,255,255,0); | |
neoPix.setPixelColor(232,255,255,0); | |
neoPix.setPixelColor(233,255,255,0); | |
neoPix.show(); | |
} | |
void cryingAnimate(){ | |
for(int i=0; i < 5; i++){ | |
crying1(); | |
delay(1000); | |
crying2(); | |
delay(1000); | |
} | |
} | |
void tree(){ | |
neoPix.clear(); | |
neoPix.setPixelColor(44, 0, 125, 0); | |
neoPix.setPixelColor(45, 0, 125, 0); | |
neoPix.setPixelColor(50, 0, 125, 0); | |
neoPix.setPixelColor(51, 0, 125, 0); | |
neoPix.setPixelColor(52, 0, 125, 0); | |
neoPix.setPixelColor(53, 0, 125, 0); | |
neoPix.setPixelColor(77, 0, 125, 0); | |
neoPix.setPixelColor(76, 0, 125, 0); | |
neoPix.setPixelColor(75, 0, 125, 0); | |
neoPix.setPixelColor(74, 0, 125, 0); | |
neoPix.setPixelColor(73, 0, 125, 0); | |
neoPix.setPixelColor(72, 0, 125, 0); | |
neoPix.setPixelColor(82, 0, 125, 0); | |
neoPix.setPixelColor(83, 0, 125, 0); | |
neoPix.setPixelColor(84, 0, 125, 0); | |
neoPix.setPixelColor(85, 0, 125, 0); | |
neoPix.setPixelColor(86, 0, 125, 0); | |
neoPix.setPixelColor(87, 0, 125, 0); | |
neoPix.setPixelColor(88, 0, 125, 0); | |
neoPix.setPixelColor(89, 0, 125, 0); | |
neoPix.setPixelColor(90, 0, 125, 0); | |
neoPix.setPixelColor(109, 0, 125, 0); | |
neoPix.setPixelColor(108, 0, 125, 0); | |
neoPix.setPixelColor(107, 0, 125, 0); | |
neoPix.setPixelColor(106, 0, 125, 0); | |
neoPix.setPixelColor(105, 0, 125, 0); | |
neoPix.setPixelColor(104, 0, 125, 0); | |
neoPix.setPixelColor(103, 0, 125, 0); | |
neoPix.setPixelColor(102, 0, 125, 0); | |
neoPix.setPixelColor(101, 0, 125, 0); | |
neoPix.setPixelColor(100, 0, 125, 0); | |
neoPix.setPixelColor(99, 0, 125, 0); | |
neoPix.setPixelColor(114, 0, 125, 0); | |
neoPix.setPixelColor(115, 0, 125, 0); | |
neoPix.setPixelColor(116, 0, 125, 0); | |
neoPix.setPixelColor(117, 0, 125, 0); | |
neoPix.setPixelColor(118, 0, 125, 0); | |
neoPix.setPixelColor(119, 0, 125, 0); | |
neoPix.setPixelColor(120, 0, 125, 0); | |
neoPix.setPixelColor(121, 0, 125, 0); | |
neoPix.setPixelColor(122, 0, 125, 0); | |
neoPix.setPixelColor(123, 0, 125, 0); | |
neoPix.setPixelColor(124, 0, 125, 0); | |
neoPix.setPixelColor(125, 0, 125, 0); | |
neoPix.setPixelColor(141, 0, 125, 0); | |
neoPix.setPixelColor(140, 0, 125, 0); | |
neoPix.setPixelColor(139, 0, 125, 0); | |
neoPix.setPixelColor(138, 0, 125, 0); | |
neoPix.setPixelColor(137, 0, 125, 0); | |
neoPix.setPixelColor(136, 0, 125, 0); | |
neoPix.setPixelColor(135, 0, 125, 0); | |
neoPix.setPixelColor(134, 0, 125, 0); | |
neoPix.setPixelColor(133, 0, 125, 0); | |
neoPix.setPixelColor(132, 0, 125, 0); | |
neoPix.setPixelColor(131, 0, 125, 0); | |
neoPix.setPixelColor(130, 0, 125, 0); | |
neoPix.setPixelColor(146, 0, 125, 0); | |
neoPix.setPixelColor(147, 0, 125, 0); | |
neoPix.setPixelColor(148, 0, 125, 0); | |
neoPix.setPixelColor(149, 0, 125, 0); | |
neoPix.setPixelColor(150, 0, 125, 0); | |
neoPix.setPixelColor(151, 0, 125, 0); | |
neoPix.setPixelColor(152, 0, 125, 0); | |
neoPix.setPixelColor(153, 0, 125, 0); | |
neoPix.setPixelColor(154, 0, 125, 0); | |
neoPix.setPixelColor(155, 0, 125, 0); | |
neoPix.setPixelColor(156, 0, 125, 0); | |
neoPix.setPixelColor(173, 0, 125, 0); | |
neoPix.setPixelColor(172, 0, 125, 0); | |
neoPix.setPixelColor(171, 0, 125, 0); | |
neoPix.setPixelColor(170, 0, 125, 0); | |
neoPix.setPixelColor(169, 0, 125, 0); | |
neoPix.setPixelColor(168, 0, 125, 0); | |
neoPix.setPixelColor(167, 0, 125, 0); | |
neoPix.setPixelColor(166, 0, 125, 0); | |
neoPix.setPixelColor(165, 0, 125, 0); | |
neoPix.setPixelColor(178, 0, 125, 0); | |
neoPix.setPixelColor(179, 0, 125, 0); | |
neoPix.setPixelColor(180, 0, 125, 0); | |
neoPix.setPixelColor(181, 0, 125, 0); | |
neoPix.setPixelColor(182, 0, 125, 0); | |
neoPix.setPixelColor(183, 0, 125, 0); | |
neoPix.setPixelColor(205, 0, 125, 0); | |
neoPix.setPixelColor(204, 0, 125, 0); | |
neoPix.setPixelColor(203, 0, 125, 0); | |
neoPix.setPixelColor(202, 0, 125, 0); | |
neoPix.setPixelColor(210, 0, 125, 0); | |
neoPix.setPixelColor(211, 0, 125, 0); | |
neoPix.setPixelColor(126, 255, 205, 0); | |
neoPix.setPixelColor(127, 255, 205, 0); | |
neoPix.setPixelColor(128, 255, 205, 0); | |
neoPix.setPixelColor(129, 255, 205, 0); | |
neoPix.setPixelColor(112, 100, 60, 0); | |
neoPix.setPixelColor(113, 100, 60, 0); | |
neoPix.setPixelColor(142, 100, 60, 0); | |
neoPix.setPixelColor(143, 100, 60, 0); | |
neoPix.show(); | |
} | |
void lights(){ | |
//neoPix.clear(); | |
neoPix.setPixelColor(44, 0, 125, 0); | |
neoPix.setPixelColor(50, 0, 125, 0); | |
neoPix.setPixelColor(51, 0, 125, 0); | |
neoPix.setPixelColor(52, 0, 125, 0); | |
neoPix.setPixelColor(53, 0, 125, 0); | |
neoPix.setPixelColor(77, 0, 125, 0); | |
neoPix.setPixelColor(76, 0, 125, 0); | |
neoPix.setPixelColor(74, 0, 125, 0); | |
neoPix.setPixelColor(73, 0, 125, 0); | |
neoPix.setPixelColor(72, 0, 125, 0); | |
neoPix.setPixelColor(82, 0, 125, 0); | |
neoPix.setPixelColor(83, 0, 125, 0); | |
neoPix.setPixelColor(84, 0, 125, 0); | |
neoPix.setPixelColor(85, 0, 125, 0); | |
neoPix.setPixelColor(87, 0, 125, 0); | |
neoPix.setPixelColor(88, 0, 125, 0); | |
neoPix.setPixelColor(89, 0, 125, 0); | |
neoPix.setPixelColor(90, 0, 125, 0); | |
neoPix.setPixelColor(109, 0, 125, 0); | |
neoPix.setPixelColor(108, 0, 125, 0); | |
neoPix.setPixelColor(107, 0, 125, 0); | |
neoPix.setPixelColor(106, 0, 125, 0); | |
neoPix.setPixelColor(105, 0, 125, 0); | |
neoPix.setPixelColor(104, 0, 125, 0); | |
neoPix.setPixelColor(103, 0, 125, 0); | |
neoPix.setPixelColor(101, 0, 125, 0); | |
neoPix.setPixelColor(100, 0, 125, 0); | |
neoPix.setPixelColor(99, 0, 125, 0); | |
neoPix.setPixelColor(114, 0, 125, 0); | |
neoPix.setPixelColor(116, 0, 125, 0); | |
neoPix.setPixelColor(117, 0, 125, 0); | |
neoPix.setPixelColor(118, 0, 125, 0); | |
neoPix.setPixelColor(119, 0, 125, 0); | |
neoPix.setPixelColor(120, 0, 125, 0); | |
neoPix.setPixelColor(121, 0, 125, 0); | |
neoPix.setPixelColor(122, 0, 125, 0); | |
neoPix.setPixelColor(123, 0, 125, 0); | |
neoPix.setPixelColor(125, 0, 125, 0); | |
neoPix.setPixelColor(141, 0, 125, 0); | |
neoPix.setPixelColor(140, 0, 125, 0); | |
neoPix.setPixelColor(139, 0, 125, 0); | |
neoPix.setPixelColor(138, 0, 125, 0); | |
neoPix.setPixelColor(136, 0, 125, 0); | |
neoPix.setPixelColor(135, 0, 125, 0); | |
neoPix.setPixelColor(134, 0, 125, 0); | |
neoPix.setPixelColor(133, 0, 125, 0); | |
neoPix.setPixelColor(132, 0, 125, 0); | |
neoPix.setPixelColor(131, 0, 125, 0); | |
neoPix.setPixelColor(130, 0, 125, 0); | |
neoPix.setPixelColor(146, 0, 125, 0); | |
neoPix.setPixelColor(147, 0, 125, 0); | |
neoPix.setPixelColor(148, 0, 125, 0); | |
neoPix.setPixelColor(149, 0, 125, 0); | |
neoPix.setPixelColor(150, 0, 125, 0); | |
neoPix.setPixelColor(151, 0, 125, 0); | |
neoPix.setPixelColor(152, 0, 125, 0); | |
neoPix.setPixelColor(153, 0, 125, 0); | |
neoPix.setPixelColor(155, 0, 125, 0); | |
neoPix.setPixelColor(156, 0, 125, 0); | |
neoPix.setPixelColor(172, 0, 125, 0); | |
neoPix.setPixelColor(171, 0, 125, 0); | |
neoPix.setPixelColor(170, 0, 125, 0); | |
neoPix.setPixelColor(169, 0, 125, 0); | |
neoPix.setPixelColor(167, 0, 125, 0); | |
neoPix.setPixelColor(166, 0, 125, 0); | |
neoPix.setPixelColor(165, 0, 125, 0); | |
neoPix.setPixelColor(178, 0, 125, 0); | |
neoPix.setPixelColor(179, 0, 125, 0); | |
neoPix.setPixelColor(180, 0, 125, 0); | |
neoPix.setPixelColor(182, 0, 125, 0); | |
neoPix.setPixelColor(183, 0, 125, 0); | |
neoPix.setPixelColor(205, 0, 125, 0); | |
neoPix.setPixelColor(204, 0, 125, 0); | |
neoPix.setPixelColor(203, 0, 125, 0); | |
neoPix.setPixelColor(202, 0, 125, 0); | |
neoPix.setPixelColor(210, 0, 125, 0); | |
neoPix.setPixelColor(211, 0, 125, 0); | |
neoPix.setPixelColor(124, 255, 0, 0); | |
neoPix.setPixelColor(154, 255, 0, 0); | |
neoPix.setPixelColor(102, 255, 0, 0); | |
neoPix.setPixelColor(168, 255, 0, 0); | |
neoPix.setPixelColor(86, 255, 0, 0); | |
neoPix.setPixelColor(137, 255, 0, 0); | |
neoPix.setPixelColor(181, 255, 0, 0); | |
neoPix.setPixelColor(75, 255, 0, 0); | |
neoPix.setPixelColor(115, 255, 0, 0); | |
neoPix.setPixelColor(45, 255, 0, 0); | |
neoPix.setPixelColor(173, 255, 0, 0); | |
neoPix.setPixelColor(126, 255, 205, 0); | |
neoPix.setPixelColor(127, 255, 205, 0); | |
neoPix.setPixelColor(128, 255, 205, 0); | |
neoPix.setPixelColor(129, 255, 205, 0); | |
neoPix.setPixelColor(112, 100, 60, 0); | |
neoPix.setPixelColor(113, 100, 60, 0); | |
neoPix.setPixelColor(142, 100, 60, 0); | |
neoPix.setPixelColor(143, 100, 60, 0); | |
neoPix.show(); | |
} | |
void blinkingTree(){ | |
for(int i=0; i < 10; i++){ | |
tree(); | |
delay(200); | |
lights(); | |
delay(200); | |
} | |
} | |
void jackolantern(){ | |
neoPix.clear(); | |
neoPix.setPixelColor(40, 255, 70, 0); | |
neoPix.setPixelColor(41, 255, 70, 0); | |
neoPix.setPixelColor(42, 255, 70, 0); | |
neoPix.setPixelColor(43, 255, 70, 0); | |
neoPix.setPixelColor(44, 255, 70, 0); | |
neoPix.setPixelColor(45, 255, 70, 0); | |
neoPix.setPixelColor(49, 255, 70, 0); | |
neoPix.setPixelColor(50, 255, 70, 0); | |
neoPix.setPixelColor(51, 255, 70, 0); | |
neoPix.setPixelColor(52, 255, 70, 0); | |
neoPix.setPixelColor(53, 255, 70, 0); | |
neoPix.setPixelColor(54, 255, 70, 0); | |
neoPix.setPixelColor(55, 255, 70, 0); | |
neoPix.setPixelColor(56, 255, 70, 0); | |
neoPix.setPixelColor(71, 255, 70, 0); | |
neoPix.setPixelColor(72, 255, 70, 0); | |
neoPix.setPixelColor(74, 255, 70, 0); | |
neoPix.setPixelColor(75, 255, 70, 0); | |
neoPix.setPixelColor(78, 255, 70, 0); | |
neoPix.setPixelColor(79, 255, 70, 0); | |
neoPix.setPixelColor(80, 255, 70, 0); | |
neoPix.setPixelColor(81, 255, 70, 0); | |
neoPix.setPixelColor(83, 255, 70, 0); | |
neoPix.setPixelColor(84, 255, 70, 0); | |
neoPix.setPixelColor(85, 255, 70, 0); | |
neoPix.setPixelColor(88, 255, 70, 0); | |
neoPix.setPixelColor(89, 255, 70, 0); | |
neoPix.setPixelColor(102, 255, 70, 0); | |
neoPix.setPixelColor(103, 255, 70, 0); | |
neoPix.setPixelColor(104, 255, 70, 0); | |
neoPix.setPixelColor(106, 255, 70, 0); | |
neoPix.setPixelColor(107, 255, 70, 0); | |
neoPix.setPixelColor(108, 255, 70, 0); | |
neoPix.setPixelColor(111, 255, 70, 0); | |
neoPix.setPixelColor(121, 255, 70, 0); | |
neoPix.setPixelColor(120, 255, 70, 0); | |
neoPix.setPixelColor(119, 255, 70, 0); | |
neoPix.setPixelColor(118, 255, 70, 0); | |
neoPix.setPixelColor(117, 255, 70, 0); | |
neoPix.setPixelColor(115, 255, 70, 0); | |
neoPix.setPixelColor(113, 255, 70, 0); | |
neoPix.setPixelColor(112, 255, 70, 0); | |
neoPix.setPixelColor(143, 255, 70, 0); | |
//neoPix.setPixelColor(141, 255, 70, 0); | |
neoPix.setPixelColor(140, 255, 70, 0); | |
neoPix.setPixelColor(138, 255, 70, 0); | |
neoPix.setPixelColor(137, 255, 70, 0); | |
neoPix.setPixelColor(136, 255, 70, 0); | |
neoPix.setPixelColor(135, 255, 70, 0); | |
neoPix.setPixelColor(134, 255, 70, 0); | |
neoPix.setPixelColor(153, 255, 70, 0); | |
neoPix.setPixelColor(152, 255, 70, 0); | |
neoPix.setPixelColor(151, 255, 70, 0); | |
neoPix.setPixelColor(149, 255, 70, 0); | |
neoPix.setPixelColor(148, 255, 70, 0); | |
neoPix.setPixelColor(147, 255, 70, 0); | |
//neoPix.setPixelColor(146, 255, 70, 0); | |
neoPix.setPixelColor(144, 255, 70, 0); | |
neoPix.setPixelColor(166, 255, 70, 0); | |
neoPix.setPixelColor(167, 255, 70, 0); | |
neoPix.setPixelColor(170, 255, 70, 0); | |
neoPix.setPixelColor(171, 255, 70, 0); | |
neoPix.setPixelColor(172, 255, 70, 0); | |
neoPix.setPixelColor(174, 255, 70, 0); | |
neoPix.setPixelColor(175, 255, 70, 0); | |
neoPix.setPixelColor(184, 255, 70, 0); | |
neoPix.setPixelColor(183, 255, 70, 0); | |
neoPix.setPixelColor(181, 255, 70, 0); | |
neoPix.setPixelColor(180, 255, 70, 0); | |
neoPix.setPixelColor(177, 255, 70, 0); | |
neoPix.setPixelColor(176, 255, 70, 0); | |
neoPix.setPixelColor(206, 255, 70, 0); | |
neoPix.setPixelColor(205, 255, 70, 0); | |
neoPix.setPixelColor(204, 255, 70, 0); | |
neoPix.setPixelColor(203, 255, 70, 0); | |
neoPix.setPixelColor(202, 255, 70, 0); | |
neoPix.setPixelColor(201, 255, 70, 0); | |
neoPix.setPixelColor(200, 255, 70, 0); | |
neoPix.setPixelColor(199, 255, 70, 0); | |
neoPix.setPixelColor(210, 255, 70, 0); | |
neoPix.setPixelColor(211, 255, 70, 0); | |
neoPix.setPixelColor(212, 255, 70, 0); | |
neoPix.setPixelColor(213, 255, 70, 0); | |
neoPix.setPixelColor(214, 255, 70, 0); | |
neoPix.setPixelColor(215, 255, 70, 0); | |
neoPix.setPixelColor(110, 255, 70, 0); | |
neoPix.setPixelColor(142, 255, 70, 0); | |
neoPix.setPixelColor(145, 255, 70, 0); | |
neoPix.setPixelColor(101, 5, 195, 25); | |
neoPix.setPixelColor(122, 5, 195, 25); | |
neoPix.setPixelColor(133, 5, 195, 25); | |
neoPix.setPixelColor(154, 5, 195, 25); | |
neoPix.setPixelColor(123, 5, 195, 25); | |
neoPix.setPixelColor(132, 5, 195, 25); | |
neoPix.setPixelColor(131, 5, 195, 25); | |
neoPix.setPixelColor(156, 5, 195, 25); | |
neoPix.setPixelColor(163, 5, 195, 25); | |
neoPix.setPixelColor(0, 105, 0, 255); | |
neoPix.setPixelColor(1, 105, 0, 255); | |
neoPix.setPixelColor(2, 105, 0, 255); | |
neoPix.setPixelColor(3, 105, 0, 255); | |
neoPix.setPixelColor(4, 105, 0, 255); | |
neoPix.setPixelColor(5, 105, 0, 255); | |
neoPix.setPixelColor(6, 105, 0, 255); | |
neoPix.setPixelColor(7, 105, 0, 255); | |
neoPix.setPixelColor(8, 105, 0, 255); | |
neoPix.setPixelColor(9, 105, 0, 255); | |
neoPix.setPixelColor(10, 105, 0, 255); | |
neoPix.setPixelColor(11, 105, 0, 255); | |
neoPix.setPixelColor(12, 105, 0, 255); | |
neoPix.setPixelColor(13, 105, 0, 255); | |
neoPix.setPixelColor(14, 105, 0, 255); | |
neoPix.setPixelColor(15, 105, 0, 255); | |
neoPix.setPixelColor(16, 105, 0, 255); | |
neoPix.setPixelColor(17, 105, 0, 255); | |
neoPix.setPixelColor(18, 105, 0, 255); | |
neoPix.setPixelColor(19, 105, 0, 255); | |
neoPix.setPixelColor(20, 105, 0, 255); | |
neoPix.setPixelColor(21, 105, 0, 255); | |
neoPix.setPixelColor(22, 105, 0, 255); | |
neoPix.setPixelColor(23, 105, 0, 255); | |
neoPix.setPixelColor(24, 105, 0, 255); | |
neoPix.setPixelColor(25, 105, 0, 255); | |
neoPix.setPixelColor(26, 105, 0, 255); | |
neoPix.setPixelColor(27, 105, 0, 255); | |
neoPix.setPixelColor(28, 105, 0, 255); | |
neoPix.setPixelColor(29, 105, 0, 255); | |
neoPix.setPixelColor(30, 105, 0, 255); | |
neoPix.setPixelColor(31, 105, 0, 255); | |
neoPix.setPixelColor(32, 105, 0, 255); | |
neoPix.setPixelColor(33, 105, 0, 255); | |
neoPix.setPixelColor(34, 105, 0, 255); | |
neoPix.setPixelColor(35, 105, 0, 255); | |
neoPix.setPixelColor(36, 105, 0, 255); | |
neoPix.setPixelColor(37, 105, 0, 255); | |
neoPix.setPixelColor(38, 105, 0, 255); | |
neoPix.setPixelColor(39, 105, 0, 255); | |
neoPix.setPixelColor(46, 105, 0, 255); | |
neoPix.setPixelColor(47, 105, 0, 255); | |
neoPix.setPixelColor(48, 105, 0, 255); | |
neoPix.setPixelColor(57, 105, 0, 255); | |
neoPix.setPixelColor(58, 105, 0, 255); | |
neoPix.setPixelColor(59, 105, 0, 255); | |
neoPix.setPixelColor(60, 105, 0, 255); | |
neoPix.setPixelColor(61, 105, 0, 255); | |
neoPix.setPixelColor(62, 105, 0, 255); | |
neoPix.setPixelColor(63, 105, 0, 255); | |
neoPix.setPixelColor(64, 105, 0, 255); | |
neoPix.setPixelColor(65, 105, 0, 255); | |
neoPix.setPixelColor(66, 105, 0, 255); | |
neoPix.setPixelColor(67, 105, 0, 255); | |
neoPix.setPixelColor(68, 105, 0, 255); | |
neoPix.setPixelColor(69, 105, 0, 255); | |
neoPix.setPixelColor(70, 105, 0, 255); | |
neoPix.setPixelColor(90, 105, 0, 255); | |
neoPix.setPixelColor(91, 105, 0, 255); | |
neoPix.setPixelColor(92, 105, 0, 255); | |
neoPix.setPixelColor(93, 105, 0, 255); | |
neoPix.setPixelColor(94, 105, 0, 255); | |
neoPix.setPixelColor(95, 105, 0, 255); | |
neoPix.setPixelColor(96, 105, 0, 255); | |
neoPix.setPixelColor(97, 105, 0, 255); | |
neoPix.setPixelColor(98, 105, 0, 255); | |
neoPix.setPixelColor(99, 105, 0, 255); | |
neoPix.setPixelColor(100, 105, 0, 255); | |
neoPix.setPixelColor(124, 105, 0, 255); | |
neoPix.setPixelColor(125, 105, 0, 255); | |
neoPix.setPixelColor(126, 105, 0, 255); | |
neoPix.setPixelColor(127, 105, 0, 255); | |
neoPix.setPixelColor(128, 105, 0, 255); | |
neoPix.setPixelColor(129, 105, 0, 255); | |
neoPix.setPixelColor(130, 105, 0, 255); | |
neoPix.setPixelColor(159, 105, 0, 255); | |
neoPix.setPixelColor(158, 105, 0, 255); | |
neoPix.setPixelColor(157, 105, 0, 255); | |
neoPix.setPixelColor(155, 105, 0, 255); | |
neoPix.setPixelColor(160, 105, 0, 255); | |
neoPix.setPixelColor(161, 105, 0, 255); | |
neoPix.setPixelColor(162, 105, 0, 255); | |
neoPix.setPixelColor(164, 105, 0, 255); | |
neoPix.setPixelColor(165, 105, 0, 255); | |
neoPix.setPixelColor(185, 105, 0, 255); | |
neoPix.setPixelColor(186, 105, 0, 255); | |
neoPix.setPixelColor(187, 105, 0, 255); | |
neoPix.setPixelColor(188, 105, 0, 255); | |
neoPix.setPixelColor(189, 105, 0, 255); | |
neoPix.setPixelColor(190, 105, 0, 255); | |
neoPix.setPixelColor(191, 105, 0, 255); | |
neoPix.setPixelColor(192, 105, 0, 255); | |
neoPix.setPixelColor(193, 105, 0, 255); | |
neoPix.setPixelColor(194, 105, 0, 255); | |
neoPix.setPixelColor(195, 105, 0, 255); | |
neoPix.setPixelColor(196, 105, 0, 255); | |
neoPix.setPixelColor(197, 105, 0, 255); | |
neoPix.setPixelColor(198, 105, 0, 255); | |
neoPix.setPixelColor(207, 105, 0, 255); | |
neoPix.setPixelColor(208, 105, 0, 255); | |
neoPix.setPixelColor(209, 105, 0, 255); | |
neoPix.setPixelColor(216, 105, 0, 255); | |
neoPix.setPixelColor(217, 105, 0, 255); | |
neoPix.setPixelColor(218, 105, 0, 255); | |
neoPix.setPixelColor(219, 105, 0, 255); | |
neoPix.setPixelColor(220, 105, 0, 255); | |
neoPix.setPixelColor(221, 105, 0, 255); | |
neoPix.setPixelColor(222, 105, 0, 255); | |
neoPix.setPixelColor(223, 105, 0, 255); | |
neoPix.setPixelColor(224, 105, 0, 255); | |
neoPix.setPixelColor(225, 105, 0, 255); | |
neoPix.setPixelColor(226, 105, 0, 255); | |
neoPix.setPixelColor(227, 105, 0, 255); | |
neoPix.setPixelColor(228, 105, 0, 255); | |
neoPix.setPixelColor(229, 105, 0, 255); | |
neoPix.setPixelColor(230, 105, 0, 255); | |
neoPix.setPixelColor(231, 105, 0, 255); | |
neoPix.setPixelColor(232, 105, 0, 255); | |
neoPix.setPixelColor(233, 105, 0, 255); | |
neoPix.setPixelColor(234, 105, 0, 255); | |
neoPix.setPixelColor(235, 105, 0, 255); | |
neoPix.setPixelColor(236, 105, 0, 255); | |
neoPix.setPixelColor(237, 105, 0, 255); | |
neoPix.setPixelColor(238, 105, 0, 255); | |
neoPix.setPixelColor(239, 105, 0, 255); | |
neoPix.setPixelColor(240, 105, 0, 255); | |
neoPix.setPixelColor(241, 105, 0, 255); | |
neoPix.setPixelColor(242, 105, 0, 255); | |
neoPix.setPixelColor(243, 105, 0, 255); | |
neoPix.setPixelColor(244, 105, 0, 255); | |
neoPix.setPixelColor(245, 105, 0, 255); | |
neoPix.setPixelColor(246, 105, 0, 255); | |
neoPix.setPixelColor(247, 105, 0, 255); | |
neoPix.setPixelColor(248, 105, 0, 255); | |
neoPix.setPixelColor(249, 105, 0, 255); | |
neoPix.setPixelColor(250, 105, 0, 255); | |
neoPix.setPixelColor(251, 105, 0, 255); | |
neoPix.setPixelColor(252, 105, 0, 255); | |
neoPix.setPixelColor(253, 105, 0, 255); | |
neoPix.setPixelColor(254, 105, 0, 255); | |
neoPix.setPixelColor(255, 105, 0, 255); | |
neoPix.show(); | |
} |
CREDITS:
Sophia Ozambela’s role in this project was to create 3 graphics for the NeoPixel Matrix, draw up the schematics and overview images, and sew the enclosure for our NeoPixel Matrix out of the Gildan t-shirt. Her blog can be found here. The 3 graphics were holiday themes: a clover for St. Patrick’s Day, a Christmas tree for Christmas, and a jack-o-lantern for Halloween. She developed the overview images and schematics on a virtual notebook. For the enclosure, she sewed a pocket on the t-shirt for both the NeoPixel and the Arduino, sewed velcro on the top of the NeoPixel pocket to keep the NeoPixel secure, and fixed the internal wires.
Katherine Monsef’s role in this project was to create 3 graphics for the NeoPixel Matrix, create the Playtesting presentation for our check-in, create the storyboard of our interaction, and create the final demo video. Her blog can be found here. The 3 graphics were emotion themes: a happy face, a sad face, and a squinty face. Each of them she animated by producing two versions of the same type of face to toggle between. For the Playtesting presentation, she wrote out our elevator pitch and compiled our in progress schematics and images. Finally, she also put together the storyboard and final demo video.
INDIVIDUAL SUMMARY:
For this project, I did the circuitry and coding portion. For the circuitry, I figured out how to connect the NeoPixel and IR Remote to our Arduino to produce meaningful output. I figured out how to control the NeoPixel Matrix and developed unique code for taking inputs from Serial to change the display of the NeoPixel Matrix. Then, I figured out how to create visuals in Excel and translate them to code that can be mapped to the NeoPixel screen. Finally, I further developed the code to take input from a remote control and display particular functions to the NeoPixel based on a particular remote control command. The last coding portion I completed was pulling my group mate’s code snippets from the Excel workbook and making them into functions in our final code mapped to unique buttons on the remote.
Hello. I was taken by the mastery of invention. I want that shirt. I have much to say! G.
LikeLike
This captivated me. I have must to say and must have this shirt. Please forward info on that. G
LikeLike