Novo Aduro Final Project And Reflection

Everything started when I visited my friend’s house. He had home automation everywhere and had lights that he could control through his phone. I was just left in awe. I did not know it was possible to have lights change colors to whatever I wanted. This is why I decided to name my project “Novo Aduro”. It stems from the latin roots that originate from new and light, respectively. I think this name was perfect because my project’s idea really revolved around lights. The “Aduro” part fits in perfectly as well because I wanted to find a way to re-contextualize projects that use RBG or neopixel lights.  After this is when I finally figured out in what direction I wanted to go with my project! I went through a lot of projects that I wanted to reverse-engineer, but the one that really caught my attention was the ambient lighting. Below you can find some of my inspirations:

  • Firefly LED Jar – a static version of what I am trying to do. The idea is the same, but the overall concept is fairly different, thus making it very hard to use. I still like how the final product resemble a lamp that can illuminate based on different colors.
  • Mood Lighting – A little lamp that changes colors based on someone’s mood. I like the idea, but the shape for the lamp was not attractive, nor was any code that can be easily modified provided.
  • Bluetooth controlled LED –  This is fairly close to what I want! Instead of using bluetooth, I want to connect it with wires first. And instead of using an application, I want to use a touchpad that directly mounts to an Arduino.
  • Ambient Computer lights – Uses neopixels instead of standard RGB LED’s, which is basically what I want to do.
  • Led Cube – Pretty much a mix of all of the other projects that inspired me. This inspired me the most!

As I mentioned in my previous post, I feel like the connection between the neopixels and my touchpad shield will be the biggest problem. Just by looking at the schematics, I can see that the shield will cover the whole entire Arduino Uno. How will I hook up my neopixels if the screen will take up all of the space?  Aside from this problem, there also exists a similar troublesome problem as well. This problem, even though it targets a different part of the project, is still something I see myself having trouble with in the future. This is the fact that my project is not really concrete. My re-contextualization is basically changing up my references completely and modifying the majority of it. Since I am heavily modifying everything, the BOM will not be accurate, I will have to get different code bases, and I will have to try to look at other projects for help and tips during this construction process. Using these links as my inspiration, I was able to finish my bill of materials as well.

BOM:

Novo Aduro is going to be one of a kind. Something so complicated internally yet externally simple to use. Something so efficient and useful yet often overlooked. It’s going to be a handmade lamp with some neopixels inside that can change color according to the absolute position on the touchpad. Using this touchpad you can change the color and even the brightness. You can mix and match colors and literally create endless possibilities! This does not stop here. After this is done, I also have many improvements I would like to make to it. Instead of being a standalone portable LED customizable lamp, I would like to make it daisy chain-able. I would like to be able to make several lamps and control them all together using just one touchpad. I can take it even further by later creating an app that can control all of them over wifi or bluetooth to truly serve the purpose of true home automation. For now though, I would like to make this lamp very efficient with a nice and elegant UI and UX interface, that rapidly as well as swiftly responds to the touchpad and instantly produces the desired color effect with minimal lag/latency. I want my finished product to be very user-friendly so that I can target every audience without an age restriction as well. Just think about it. Instead of going out and wasting so much money on something that looks plain and can not be customized to your liking, is not very fun. If you have kids, it will not catch their interest. With this Novo Aduro, you can change colors to match lullabies to put kids to sleep as well as match the color for the room on a romantic evening. The possibilities of this creation is endless, and that is why I think it deserves to exist and serve it’s purpose by being accessible to the community.

Now that I have all of my ideas planned out, I realized how much I just love how everything can affect the lights to change into different colors. My version a.k.a re-contextualization of the projects I used for inspiration, really bears fruit with the simplicity of lights and the ease of the user interface. So it got me thinking. If I can find a way to make something with lights that users can have fun with, it will be perfect. Even more so because my target audience has no boundaries. I wanted anyone ranging from a child all the way to an adult to be able to use and operate my project with no learning curve whatsoever. This gave me the idea of 3D printing a lamp that turned on according to someone’s mood. Since I love Japanese culture, I decided to go with a modern japanese-style lamp, which can be found here. I customized it a little bit to my liking and added some new things to it to make it hold plexiglass all around the sides.

This is the piece that will hold me plexiglass. I added four of them to my lamp on each side, and printed it all assembled together.

20150512_085310

This is a video of it printing:

After the piece finished printing, I had to take off all of the support that printed with it. After it’s completion, I left it at home for a few hours and went to school to finish soldering some wires. By the time I came home, this is what I found:

IMG_20150513_180640:nopm:It was completely broken! I had to run to an arts and crafts store to buy a little wooden box to replace it with. I then made some cut-outs for the power cables and spray-painted it black.

Time to move on to the actual core of the project: The touchscreen. The touchscreen shield is really what makes this project since it’s what bridges my project with the neopixels. I used a breadboard to make all of my connections. I broke out the pins of the touchshield along with digital pin 6 for the neopixels and power and ground. The pins for the touch shield were unnecessary, but since I didn’t really know if i would be needing it, I broke it out just in case. I then bought a neopixel stick to practice with before using the neopixel strip for the final version. Below are some pictures of my setup:

20150505_173627

20150505_173656

20150505_173742

20150505_173548

IMG_20150506_142836:nopm:

20150508_165305

The problem with my current idea of the lamp is that the user interface was pretty boring. Just touching the lamp is way too simple. I then had to think a little deeper. After searching for new innovative ideas, it finally hit me! Why don’t I stick with my original lamp idea and just have a touchscreen that connects to it where the user can change the color whenever they want. During class, however, especially after receiving a lot of feedback, I realized I had to research twice as much as everyone else because my project is really all custom code. There is no code to match my idea of having a custom user interface on a touchscreen shield where it is directly linked to some kind of lights. The positive side of this is that I can put it anywhere in my home. It is not restricted to a specific device like ambient lighting where it has to be on an object like a tv or monitor. The ending result is something that can be more accessible by others! Since I am re-contextualizing this project to the extreme, a lot of the stuff I want to do will not be included in the project that I got this idea from.

It was finally time to switch to my neopixel strip! The problem with the strip was that the connector wires were soldered to the wrong end. I had to cut off the water-proof film and de-solder it. Solder back the wires and then soldered it to the other side of the strip where the data input side was located.

20150508_201401

20150508_204629

After finishing all of the soldering and connections, it was finally time to test the strip! Since I practiced with the neopixel stick already, it was fairly easy to switch the strip. Below you can find some pictures and videos of the strip testing!

20150508_234604

It was finally time to work on the touchshield! The only issue I had was with the number of pins available after connecting the touch shield. I had to breakout the pins in order to solder them together, which was a real hassle for me because I am not a hardware person. The code I used was customized for my specific purpose. All it simply does is button map a whole bunch of coordinates creating a grid where a user gets to touch down on any box displaying on the screen, and whatever color inside that box will be sent to the neo-pixels in order to update it. Button mapping it was actually very hard though. I added comments in a few places to depicting exactly what I was doing which really helped me out with all of the debugging I had to do before it being open to the public. The code can be found at the end of this post.

20150512_195208

20150512_195202

It came out really nice and colorful just how I wanted it to be. The six numbers on the bottom are all different effects that the neopixels can make. The static colors are on top and the bottom is more for dynamic changing lights giving the user the option to switch between them fairly easily! Now, it’s time for testing!

20150512_194334

It was finally time to finish up this project by removing everything from the breadboard and soldering it together to fit in the box I bought. If I had enough time, I would’ve loved to create the little lamp box myself, but since I was also preparing for NASA’s 2015 Robotic Mining Competition, I didn’t really have the time. Below you can see some pictures of how I was putting everything together to mold around the shape of the lamp shade.

20150516_155253

20150516_161401

20150515_235404

After completing this project, I had an art show I had to attend, which counted as part of the final grade.

20150514_132801

In this art show I had to show off my creation to everyone. People were asking me questions about how I got my touchscreen working with the lights and how I was able to make the custom code. Since I am majoring in Computer Science, I was able to understand the Arduino language, which I had to use to work with my Arduino Uno. After understanding the code, I was able to create my own using it as a reference. The reactions everyone had were priceless. I had no idea people were going to be that surprised by my project. They were just surprised as me when I first thought of the idea of having changing lights. These people have never seen technology like this, so It was pretty interesting to see how in shock they were. Since my touchscreen shield was re-located to the top of the lamp I have, it was viewable by anyone. I then covered the lamp with a black cloth to change the way the lights look. Since the room was pretty dark, my camera didn’t focus really well, but you can see that the touchshield is on top of the lamp.

20150514_130152

As soon as people saw the colors of the shield, they just instinctively wanted to touch it. It was pretty crazy, but fun at the same time. I was also talking to people about our york college robot that we were heavily testing at the time for Nasa’s robotic mining competition.

20150514_132604

I had no feedback at all from anyone. No one gave me suggestions or anything on how to make it better. I am not surprised because many of them were just there for sightseeing, but from the reactions I got, I think it was perfectly fine the way it is. My project worked exactly as intended, which was very nice. This obviously meant that all of the components used made sense and were self-explanatory. Since this project only used the arduino language, it was pretty easy to put it all together since I just had to focus on one language. I put efficient comments everywhere so the people reading the code, know exactly what is happening, and it also makes it easier to debug. I did a lot of debugging. In fact, most of my time was spent debugging. Mainly because I didn’t have any tutorials to look at when building it. Because of this my build time was pretty long. It took me about three weeks to finish everything, including all of the research I had to do. My lamp’s dimensions were fairly small. It was a 4.5 x 4.5 x 4.5 inch cube. Mounting the arduino on top, bumped up the height to 6 inches though.

Since my project is very flexible and portable, it can actually be used by anyone! This is what makes it so nice. The fact that anyone can use it, modify it, contribute or even build off of mine is amazing. It simply used the input of the user via the touchscreen interface to light up the neopixels as the output. This makes it relatively simple for anyone to use especially since I am contributing to the community. Just knowing that people are actually using my stuff, is just unbelievably awesome as well! I can see people using this for many things. If they want to build it just how I am creating it, then they can use it as a lamp just how anyone normally would. Now if they want to modify it, they can also. They can turn it into ambient lighting, shelf lighting, lighting controlled by voice or anything else involving the use of LED’s. Creative people will love my project the most. The fact that you have so much power over the color and brightness of each and every individual pixel, while still keeping the user interface nice and simply, will give off a user friendly approach attracting a lot of people especially those who love home automation.

I think I did really well for my first time using an arduino. I learned the language fairly quickly, and using my knowledge in computer science, I was able to work my way around many obstacles. My final project came out very nice. So nice, in fact, that even I was surprised that it was my first time messing around with this stuff. Given the facts that I am new to this, and that the project came out to be such a great success, If I were to give myself a grade, it would definitely be an A! I feel very confident and proud, that given my lack of resources and time, I was able to pull off such a great feat as this. This project was just so much fun, and I would love to do build something new sometime in the future!

This is the final product without using the breadboard. The breadboard was just connected to the little mount I had to hold the arduino in place, but it is not being used nor does it affect the project in any way. Enjoy!

20150516_162958


Arduino Source Code

#include <Adafruit_GFX.h> // Core graphics library
#include <SPI.h>
#include <Wire.h> // this is needed even tho we aren’t using it
#include <Adafruit_ILI9341.h>
#include <Adafruit_STMPE610.h>

#include <Adafruit_NeoPixel.h>
#include <avr/power.h>

#define PIN 6
#define NUMPIXELS 60

// This is calibration data for the raw touch data to the screen coordinates
#define TS_MINX 150
#define TS_MINY 130
#define TS_MAXX 3800
#define TS_MAXY 4000

// The STMPE610 uses hardware SPI on the shield, and #8
#define STMPE_CS 8
Adafruit_STMPE610 ts = Adafruit_STMPE610(STMPE_CS);

// The display also uses hardware SPI, plus #9 & #10
#define TFT_CS 10
#define TFT_DC 9
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);

// Size of the color selection boxes, the paintbrush size and the amount of ROWS that fit on the screen
#define BOXSIZE 40
#define PENRADIUS 3
#define COLUMNS 6 //shades
#define ROWS 7 //colors
int oldcolor, currentcolor;

// Fixed-size offset for every box
#define MULTIPLIER_2 2
#define MULTIPLIER_3 3
#define MULTIPLIER_4 4
#define MULTIPLIER_5 5
#define MULTIPLIER_6 6
#define MULTIPLIER_7 7

#define DELAYVAL 50 // delay for 50ms
/** RED SHADES (Dark-to-light)
* Maroon – 128,0,0 => 0x8000
* Firebrick – 178,34,34 => 0xB104
* Crimon – 220,20,60 => 0xD8A7
* Red – 255,0,0 => 0xF800
* Indian Red – 205,92,92 => 0xCAEB
* light Coral – 240,128,128 => 0xF410
*/
uint16_t shadesOfRed[7] = {
0x8000,
0xB104,
0xD8A7,
0xF800,
0xCAEB,
0xF410
};

/** BLUE SHADES
* Navy – 0,0,128 => 0x0010
* Blue – 0,0,255 => 0x001F
* Deep Sky Blue – 0,191,255 => 0x05FF
* Light Sky Blue – 145,206,250 => 0x967F
* Cyan – 0,255,255 => 0x07FF
* Turquiose – 64,224,208 => 0x471A
*/

uint16_t shadesOfBlue[7] = {
0x0010,
0x001F,
0x05FF,
0x967F,
0x07FF,
0x471A
};

/** GREEN SHADES
* Olive – 128,128,0 => 0x8400
* Yellow Green – 154,205,50 => 0x9E66
* Lawn Green – 124,252,0 => 0x7FE0
* Green – 0,128,0 => 0x0400
* Lime Green – 50,205,50 => 0x3666
* Lime – 0,255,0 => 0x07E0
*/

uint16_t shadesOfGreen[7] = {
0x8400,
0x9E66,
0x7FE0,
0x0400,
0x3666,
0x07E0

};

/** ORANGE AND YELLOW SHADES
* Orange Red – 250,80,0 => 0xFA80
* Dark Orange – 255,140,0 => 0xFC60
* Orange – 255,165,0 => 0xFD20
* Golden Rod – 218,165,32 => 0xDD24
* Gold – 255,215,0 => 0xFEA0
* Yellow – 255,255,0 => 0xFFE0
*/

uint16_t shadesOfOrangeAndYellow[7] = {
0xFA80,
0xFC60,
0xFD20,
0xDD24,
0xFEA0,
0xFFE0

};

/** PURPLE AND PINK SHADES
* Blue Violet – 138,43,226 => 0x895C
* Purple – 128,0,128 => 0x8010
* Dark Magenta – 139,0,139 => 0x8811
* Medium Orchid – 186,85,211 => 0xBABA
* Deep Pink – 255,20,147 => 0xF8B2
* Magenta – 255,0,255 => 0xF81F
*/

uint16_t shadesOfPurpleAndPink[7] = {
0x895C,
0x8010,
0x8811,
0xBABA,
0xF8B2,
0xF81F

};

/** BROWN SHADES
* Saddle Brown – 139,69,19 => 0x8A22
* Sienna – 160,82,45 => 0xA285
* Chocolate – 210,105,30 => 0xD343
* Sandy Brown – 244,164,96 => 0xF52C
* Tan – 210,180,140 => 0xD5B1
* Wheat – 245,222,179 => 0xF6F6
*/

uint16_t shadesOfBrown[7] = {
0x8A22,
0xA285,
0xD343,
0xF52C,
0xD5B1,
0xF6F6

};

/** BLACK AND WHITE SHADES
* Black – 0,0,0 => 0x0000
* Dim Grey – 96,96,96 => 0x630C
* Gray – 128,128,128 => 0x8410
* Silver – 192,192,192 => 0xC618
* Light Gray – 211,211,211 => 0xD69A
* White – 255,255,255 => 0xFFFF
*/

uint16_t shadesOfBlackAndWhite[7] = {
0x0000,
0x630C,
0x8410,
0xC618,
0xD69A,
0xFFFF

};

uint16_t allShades[COLUMNS][ROWS] = {
// // Red
// { 0x8000, 0xB104, 0xD8A7, 0xF800, 0xCAEB, 0xF410 },
// // Green
// { 0x8400, 0x9E66, 0x7FE0, 0x0400, 0x3666, 0x07E0 },
// // Blue
// { 0x0010, 0x001F, 0x05FF, 0x967F, 0x07FF, 0x471A },
// // Orange and Yellow
// { 0xFA80, 0xFC60, 0xFD20, 0xFD20, 0xFEA0, 0xFFE0 },
// // Purple and pink
// { 0x895C, 0x8010, 0x8811, 0xBABA, 0xF8B2, 0xF81F },
// // Brown
// { 0x8A22, 0xA285, 0xD343, 0xF52C, 0xD5B1, 0xF6F6 },
// // Black and White
// { 0x0000, 0x630C, 0x8410, 0xC618, 0xD69A, 0xFFFF }

//Red Green Blue Orange Purple Brown Black
{0x8000, 0x8400, 0x0010, 0xFA80, 0x895C , 0x8A22 , 0x0000},
{0xB104, 0x9E66, 0x001F, 0xFC60, 0x8010 , 0xA285 , 0x630C},
{0xD8A7, 0x7FE0, 0x05FF, 0xFD20, 0x8811 , 0xD343 , 0x8410},
{0xF800, 0x0400, 0x967F, 0xFD20, 0xBABA , 0xF52C , 0xC618},
{0xCAEB, 0x3666, 0x07FF, 0xFEA0, 0xF8B2 , 0xD5B1 , 0xD69A},
{0xF410, 0x07E0, 0x471A, 0xFFE0, 0xF81F , 0xF6F6 , 0xFFFF}
};

//Declare the pixel object, so we can change the color later on in the code
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

//5312 – ext

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

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

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

// 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< pixels.numPixels(); i++) {
pixels.setPixelColor(i, Wheel(((i * 256 / pixels.numPixels()) + j) & 255));
}
pixels.show();
delay(wait);
}
}

//Theatre-style crawling lights.
void theaterChase(uint32_t c, uint8_t wait) {
for (int j=0; j<10; j++) { //do 10 cycles of chasing
for (int q=0; q < 3; q++) {
for (int i=0; i < pixels.numPixels(); i=i+3) {
pixels.setPixelColor(i+q, c); //turn every third pixel on
}
pixels.show();

delay(wait);

for (int i=0; i < pixels.numPixels(); i=i+3) {
pixels.setPixelColor(i+q, 0); //turn every third pixel off
}
}
}
}

//Theatre-style crawling lights with rainbow effect
void theaterChaseRainbow(uint8_t wait) {
for (int j=0; j < 256; j++) { // cycle all 256 colors in the wheel
for (int q=0; q < 3; q++) {
for (int i=0; i < pixels.numPixels(); i=i+3) {
pixels.setPixelColor(i+q, Wheel( (i+j) % 255)); //turn every third pixel on
}
pixels.show();

delay(wait);

for (int i=0; i < pixels.numPixels(); i=i+3) {
pixels.setPixelColor(i+q, 0); //turn every third pixel off
}
}
}
}

// 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 pixels.Color(255 – WheelPos * 3, 0, WheelPos * 3);
} else if(WheelPos < 170) {
WheelPos -= 85;
return pixels.Color(0, WheelPos * 3, 255 – WheelPos * 3);
} else {
WheelPos -= 170;
return pixels.Color(WheelPos * 3, 255 – WheelPos * 3, 0);
}
}

//Maps the 5:6:4 RGB HEX values to it’s distinct r, g, and b values and updates the color of the neopixels
void showPixelsWithColor(uint16_t color) {
int r,g,b;
switch (color) {
// Shades of Red
case 0x8000:
r = 128; g = 0; b = 0;
break;
case 0xB104:
r = 178; g = 34; b = 34;
break;
case 0xD8A7:
r = 220; g = 20; b = 60;
break;
case 0xF800:
r = 255; g = 0; b = 0;
break;
case 0xCAEB:
r = 205; g = 92; b = 92;
break;
case 0xF410:
r = 240; g = 128; b = 128;
break;

// Shades of Blue
case 0x0010:
r = 0; g = 0; b = 128;
break;
case 0x001F:
r = 0; g = 0; b = 255;
break;
case 0x05FF:
r = 0; g = 191; b = 255;
break;
case 0x967F:
r = 145; g = 206; b = 250;
break;
case 0x07FF:
r = 0; g = 255; b = 255;
break;
case 0x471A:
r = 64; g = 224; b = 208;
break;
case 0x067A:
r = 0; g = 206; b = 209;
break;

// Shades Of Green
case 0x8400:
r = 128; g = 128; b = 0;
break;
case 0x9E66:
r = 154; g = 205; b = 50;
break;
case 0x7FE0:
r = 124; g = 252; b = 0;
break;
case 0x0400:
r = 0; g = 128; b = 0;
break;
case 0x3666:
r = 50; g = 205; b = 50;
break;
case 0x07E0:
r = 0; g = 255; b = 0;
break;
case 0x9FD3:
r = 152; g = 251; b = 152;
break;

// Shades of Orange and Yellow
case 0xFA80:
r = 250; g = 80; b = 0;
break;
case 0xFC60:
r = 255; g = 140; b = 0;
break;
case 0xFD20:
r = 255; g = 165; b = 0;
break;
case 0xDD24:
r = 218; g = 165; b = 32;
break;
case 0xFEA0:
r = 255; g = 215; b = 0;
break;
case 0xFFE0:
r = 255; g = 255; b = 0;
break;
case 0xF731:
r = 240; g = 230; b = 140;
break;

// Shades of Purple and Pink
case 0x895C:
r = 138; g = 43; b = 226;
break;
case 0x8010:
r = 128; g = 0; b = 128;
break;
case 0x8811:
r = 139; g = 0; b = 139;
break;
case 0xBABA:
r = 186; g = 85; b = 211;
break;
case 0xF8B2:
r = 255; g = 20; b = 147;
break;
case 0xF81F:
r = 255; g = 0; b = 255;
break;
case 0xFB56:
r = 255; g = 105; b = 180;
break;

// Shades of Brown
case 0x8A22:
r = 139; g = 69; b = 19;
break;
case 0xA285:
r = 160; g = 82; b = 45;
break;
case 0xD343:
r = 210; g = 105; b = 30;
break;
case 0xF52C:
r = 244; g = 164; b = 96;
break;
case 0xD5B1:
r = 210; g = 180; b = 140;
break;
case 0xF6F6:
r = 245; g = 222; b = 179;
break;
case 0xFF38:
r = 255; g = 228; b = 196;
break;

// Shades of Black and White
case 0x0000:
r = 0; g = 0; b = 0;
break;
case 0x630C:
r = 96; g = 96; b = 96;
break;
case 0x8410:
r = 128; g = 128; b = 128;
break;
case 0xC618:
r = 192; g = 192; b = 192;
break;
case 0xD69A:
r = 211; g = 211; b = 211;
break;
case 0xDEFB:
r = 220; g = 220; b = 220;
break;
case 0xFFFF:
r = 255; g = 255; b = 255;
break;

default:
Serial.print(“Error in showPixelsWithColor() switch statement\nColor is: “);
Serial.print(color);
break;
}

// Display the color of the neopixel stick
for(int i=0;i<NUMPIXELS;i++) {
pixels.setPixelColor(i, pixels.Color(r,g,b));
pixels.show(); // This sends the updated pixel color to the hardware.
}
Serial.print(“Changed neopixel color to: “);
Serial.print(color);
Serial.print(“\nR, G, B: “);
Serial.print(r);
Serial.print(“, “);
Serial.print(b);
Serial.print(“, “);
Serial.print(g);
Serial.print(“\n”);
}

void turnPixelsOff() {
//Set the neo pixels to off to begin with!
for(int i=0;i<NUMPIXELS;i++) {
pixels.setPixelColor(i, pixels.Color(0,0,0));
pixels.show(); // This sends the updated pixel color to the hardware.
}
}
void displayLogo() {
tft.setCursor(65, 100);
tft.setTextColor(ILI9341_WHITE); tft.setTextSize(5);
tft.println(“Novo”);
tft.setCursor(50, 150);
tft.setTextColor(ILI9341_WHITE); tft.setTextSize(5);
tft.println(“Aduro”);
}

void createBoxes(int delayval = DELAYVAL) {
//First Row
for(int i = 0; i < ROWS; i++) {
tft.fillRect(BOXSIZE*i, 0, BOXSIZE, BOXSIZE, shadesOfRed[i]);//xywh
delay(delayval);
}

//Second Row
for(int i = 0; i < ROWS; i++) {
tft.fillRect(BOXSIZE*i, BOXSIZE, BOXSIZE, BOXSIZE, shadesOfGreen[i]);//xywh
delay(delayval);
}

//Third Row
for(int i = 0; i < ROWS; i++) {
tft.fillRect(BOXSIZE*i, BOXSIZE*MULTIPLIER_2, BOXSIZE, BOXSIZE, shadesOfBlue[i]);//xywh
delay(delayval);
}

//Fourth Row
for(int i = 0; i < ROWS; i++) {
tft.fillRect(BOXSIZE*i, BOXSIZE*MULTIPLIER_3, BOXSIZE, BOXSIZE, shadesOfOrangeAndYellow[i]);//xywh
delay(delayval);
}

//Fifth Row
for(int i = 0; i < ROWS; i++) {
tft.fillRect(BOXSIZE*i, BOXSIZE*MULTIPLIER_4, BOXSIZE, BOXSIZE, shadesOfPurpleAndPink[i]);//xywh
delay(delayval);
}

//Sixth Row
for(int i = 0; i < ROWS; i++) {
tft.fillRect(BOXSIZE*i, BOXSIZE*MULTIPLIER_5, BOXSIZE, BOXSIZE, shadesOfBrown[i]);//xywh
delay(delayval);
}

//Seventh Row
for(int i = 0; i < ROWS; i++) {
tft.fillRect(BOXSIZE*i, BOXSIZE*MULTIPLIER_6, BOXSIZE, BOXSIZE, shadesOfBlackAndWhite[i]);//xywh
delay(delayval);
}

//Eighth Row (Special Effects)
for(int i = 0; i < ROWS; i++) {
tft.drawRect(BOXSIZE*i, BOXSIZE*MULTIPLIER_7, BOXSIZE, BOXSIZE, allShades[0][i]);//xywh
tft.setCursor(BOXSIZE*i+18, BOXSIZE*MULTIPLIER_7+14);
tft.setTextColor(ILI9341_WHITE); tft.setTextSize(2);
tft.println(i+1);
delay(delayval);
}
}
void setup(void) {

Serial.begin(9600);
Serial.println(F(“Touch Paint!”));

pixels.begin(); // This initializes the NeoPixel library.
tft.begin();

if (!ts.begin()) {
Serial.println(“Couldn’t start touchscreen controller”);
while (1);
}
Serial.println(“Touchscreen started”);

tft.fillScreen(ILI9341_BLACK);
//displayLogo();
//delay(1000);
createBoxes(0);
turnPixelsOff();

//showPixelsWithColor(shadesOfBlackAndWhite[5]);

}
void loop() {

// See if there’s any touch data for us
if (ts.bufferEmpty()) {
//displayLogo();
return;
}

// // You can also wait for a touch
// if (! ts.touched()) {
// return;
// }

Serial.print(“touchscreen touched!”);

// Retrieve a point
TS_Point p = ts.getPoint();

Serial.print(“X = “); Serial.print(p.x);
Serial.print(“\tY = “); Serial.print(p.y);
Serial.print(“\tPressure = “); Serial.println(p.z);

// Scale from ~0->4000 to tft.width using the calibration #’s
p.x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width());
p.y = map(p.y, TS_MINY, TS_MAXY, 0, tft.height());

//tft.fillCircle(p.x, p.y, 10, ILI9341_RED);//p.x, p.y, PENRADIUS, currentcolor

Serial.print(“(“); Serial.print(p.x);
Serial.print(“, “); Serial.print(p.y);
Serial.println(“)”);

pixels.setBrightness(100);

if (p.y < BOXSIZE) {
if (p.x < BOXSIZE) {
showPixelsWithColor(shadesOfRed[0]);
} else if (p.x < BOXSIZE*2) {
showPixelsWithColor(shadesOfRed[1]);
} else if (p.x < BOXSIZE*3) {
showPixelsWithColor(shadesOfRed[2]);
} else if (p.x < BOXSIZE*4) {
showPixelsWithColor(shadesOfRed[3]);
} else if (p.x < BOXSIZE*5) {
showPixelsWithColor(shadesOfRed[4]);
} else if (p.x < BOXSIZE*6) {
showPixelsWithColor(shadesOfRed[5]);
}
} else if (p.y < BOXSIZE*2) {
if (p.x < BOXSIZE) {
showPixelsWithColor(shadesOfGreen[0]);
} else if (p.x < BOXSIZE*2) {
showPixelsWithColor(shadesOfGreen[1]);
} else if (p.x < BOXSIZE*3) {
showPixelsWithColor(shadesOfGreen[2]);
} else if (p.x < BOXSIZE*4) {
showPixelsWithColor(shadesOfGreen[3]);
} else if (p.x < BOXSIZE*5) {
showPixelsWithColor(shadesOfGreen[4]);
} else if (p.x < BOXSIZE*6) {
showPixelsWithColor(shadesOfGreen[5]);
}
} else if (p.y < BOXSIZE*3) {
if (p.x < BOXSIZE) {
showPixelsWithColor(shadesOfBlue[0]);
} else if (p.x < BOXSIZE*2) {
showPixelsWithColor(shadesOfBlue[1]);
} else if (p.x < BOXSIZE*3) {
showPixelsWithColor(shadesOfBlue[2]);
} else if (p.x < BOXSIZE*4) {
showPixelsWithColor(shadesOfBlue[3]);
} else if (p.x < BOXSIZE*5) {
showPixelsWithColor(shadesOfBlue[4]);
} else if (p.x < BOXSIZE*6) {
showPixelsWithColor(shadesOfBlue[5]);
}
} else if (p.y < BOXSIZE*4) {
if (p.x < BOXSIZE) {
showPixelsWithColor(shadesOfOrangeAndYellow[0]);
} else if (p.x < BOXSIZE*2) {
showPixelsWithColor(shadesOfOrangeAndYellow[1]);
} else if (p.x < BOXSIZE*3) {
showPixelsWithColor(shadesOfOrangeAndYellow[2]);
} else if (p.x < BOXSIZE*4) {
showPixelsWithColor(shadesOfOrangeAndYellow[3]);
} else if (p.x < BOXSIZE*5) {
showPixelsWithColor(shadesOfOrangeAndYellow[4]);
} else if (p.x < BOXSIZE*6) {
showPixelsWithColor(shadesOfOrangeAndYellow[5]);
}
} else if (p.y < BOXSIZE*5) {
if (p.x < BOXSIZE) {
showPixelsWithColor(shadesOfPurpleAndPink[0]);
} else if (p.x < BOXSIZE*2) {
showPixelsWithColor(shadesOfPurpleAndPink[1]);
} else if (p.x < BOXSIZE*3) {
showPixelsWithColor(shadesOfPurpleAndPink[2]);
} else if (p.x < BOXSIZE*4) {
showPixelsWithColor(shadesOfPurpleAndPink[3]);
} else if (p.x < BOXSIZE*5) {
showPixelsWithColor(shadesOfPurpleAndPink[4]);
} else if (p.x < BOXSIZE*6) {
showPixelsWithColor(shadesOfPurpleAndPink[5]);
}
} else if (p.y < BOXSIZE*6) {
if (p.x < BOXSIZE) {
showPixelsWithColor(shadesOfBrown[0]);
} else if (p.x < BOXSIZE*2) {
showPixelsWithColor(shadesOfBrown[1]);
} else if (p.x < BOXSIZE*3) {
showPixelsWithColor(shadesOfBrown[2]);
} else if (p.x < BOXSIZE*4) {
showPixelsWithColor(shadesOfBrown[3]);
} else if (p.x < BOXSIZE*5) {
showPixelsWithColor(shadesOfBrown[4]);
} else if (p.x < BOXSIZE*6) {
showPixelsWithColor(shadesOfBrown[5]);
}
} else if (p.y < BOXSIZE*7) {
if (p.x < BOXSIZE) {
showPixelsWithColor(shadesOfBlackAndWhite[0]);
} else if (p.x < BOXSIZE*2) {
showPixelsWithColor(shadesOfBlackAndWhite[1]);
} else if (p.x < BOXSIZE*3) {
showPixelsWithColor(shadesOfBlackAndWhite[2]);
} else if (p.x < BOXSIZE*4) {
showPixelsWithColor(shadesOfBlackAndWhite[3]);
} else if (p.x < BOXSIZE*5) {
showPixelsWithColor(shadesOfBlackAndWhite[4]);
} else if (p.x < BOXSIZE*6) {
showPixelsWithColor(shadesOfBlackAndWhite[5]);
}
} else if (p.y < BOXSIZE*8) { //SPECIAL EFFECTS
if (p.x < BOXSIZE) {
colorWipe(pixels.Color(255, 0, 0), 2);//red
colorWipe(pixels.Color(0, 255, 0), 2);//blue
colorWipe(pixels.Color(0, 0, 255), 2);//green
turnPixelsOff(); //TURN OFF!
} else if (p.x < BOXSIZE*2) {
theaterChase(pixels.Color( 0, 0, 127), 2); // Blue
theaterChase(pixels.Color( 0, 127, 0), 2); // green
theaterChase(pixels.Color( 127, 0, 0), 2); // red
turnPixelsOff();
} else if (p.x < BOXSIZE*3) {
rainbow(2);
turnPixelsOff();
} else if (p.x < BOXSIZE*4) {
rainbowCycle(2);
turnPixelsOff();
} else if (p.x < BOXSIZE*5) {
theaterChaseRainbow(2);
turnPixelsOff();
} else if (p.x < BOXSIZE*6) {
colorWipe(pixels.Color(139, 0, 139), 2);
colorWipe(pixels.Color(255, 20, 147), 2);
turnPixelsOff();
}
}
}//end loop

3D Printing Conference Experience

Technology is rapidly advancing. Who would’ve thought that printing 3D objects was possible? I used to think it was only possible to print on paper or flat-like surfaces, but man was I proven wrong! At this 3D printing expo, I saw things from small 3D printers all the way up to huge machines that can print humongous props and models for houses and buildings. Now I know how all of these prosthetics were made. Of course it is not limited to only prosthetics. You can create anything from guitars and bones all the way up to clothes. I was actually just overwhelmed when I saw that the art of 3D printing knows no bounds. Shirts, ties, watches, shoes–just about everything you can possibly wear, can be re-created using 3D printing technology. When I first arrived at the Javits center, I was pretty lost. The place was humongous.

1429233258404

 

After walking around for a bit, I found the line to register for the event. Thankfully, I registered beforehand, so I got ‘VIP’ access and cut the line.

20150416_114553

Everything was normal, until I entered the event grounds. It was a whole different world! I saw a whole mix of people from different races and cultures networking and getting to know each other. I overheard a lot of people talking about their past experiences with failed attempts at printing things, all the way up to people mentioning how they just created a masterpiece that is on display in the expo. One of the representatives from Digital Scan 3D stopped me and asked me a question: “You look like you know what you’re doing. Have you printed something before?” As soon as I told him that I printed something using a makerbot replicator 2x, he became intrigued. He started telling me he had one also, but he eventually switched because it had a lot of problems. He said the makerbot is really for people who just want to experiment with 3D printing. He also told me how there are more powerful machines out there now that do reverse-engineering. They start from the core of an object, and start building outward as you can see from the below pic:

20150416_115706

This was very interesting, but ever since he mentioned the prices of these machines, I was so astonished that I had to look around some more and see the actual capabilities of these monster machines! If this 3D printing machine was that expensive, what does that say about the others? It’s time to explore! I then came across various 3D printers that range from a small little box, all the way to a booth that scans people. Of course the real-time, 3D printing of oneself in a full-color body scanning booth, really caught my interest. Artec Shapify, the creators of this awesome technology, was by far the most interesting thing I have ever seen. Inside the booth, there are 3 wide view HD scanners that rotate around you at a high speed with some built-in lighting to help capture the RGB values. This awesome machine can scan a maximum of 2 meters in height and it captures everything in real-time using 400K polygons in under 20 minutes. As soon as I went to sign up to get scanned, the guy told me to wait in line. I was actually pretty confused, since I did not see any line. All I saw was a clutter of people doing their own things, but when I looked closely, there was a line starting all the way from the entrance. All of these people came here just to get scanned, and I do not blame them. After getting scanned, my results appeared on a monitor they had connected to the booth. After filling in the gaps and holes, it will be ready for printing!

1429233311294

 

After this awesome experience, I went to go see what else this new world had in store for me. I saw extravagant things like jewelry made out of silver and metal as well as a real-size bike, which a lot of people were trying to buy. The New York Jewelry Design Institute, or NYJDI for short, was even raffling tickets out for group classes where they teach students how to make their own jewelry using a software called 3DESIGN CAD. Shapeways, also had their own jewelry section. Theirs, however, was a little more “real” compared to that of NYJDI:

20150416_122944

 

 

This bike, was just so real, I couldn’t believe it was 3D printed! I don’t blame people for negotiating prices in order to buy this beauty.20150416_120612

The cube, made by 3DSYSTEMS, was also very interesting. The actual machine is pretty small, so they only had small objects on display, like lamps and watches:

Cube

I also visited many other booths such as googell, torwell, netfabb, lulzbot, artec 3D, cimquest, makerbot and stratasys. The main technologies I heard these companies talk about were: FDM, WDM and PolyJet. The one that caught my interest the most was definitely PolyJet. This technology shoots out layers of curable liquid photopolymer instead of the most common 3D printers that builds from the bottom up by heating and extruding thermoplastic filament in layers. This was definitely an awesome experience for me, and I learned a lot from it. Now, I will try to save up and buy my own 3D printing machine, so the next time I go, I can have a lot more to talk about.

Below you can see some other fascinating pieces of art created by these creative 3D experts: 1429233522731

20150416_141111

1429233344607

20150416_121748

1429233491506

1429233530040

20150416_121543

1429233384809

 

Novo Aduro Final Project

At first I wanted to do something along  the lines of ambient lighting. This is cool, but since I have a monitor right under a wall mounted tv, the positioning of the LED’s would be visible and defeat the purpose of the the “magic” behind ambient lighting. This made me think, however, to do something along the lines of portability. What if I take the ambient lighting and move it to a self-contained object? A few seconds later it hit me. What if I make a lamp that can be changed with the colors of a screen? This would still make it ambient but with more flexibility! During class, however, after receiving a lot of feedback, I realized I had to take it a little further. Making it dynamic will help but it still would not be enough. I then thought of the mechanism in how to go about controlling these lamps. I then tried thinking out of the box and came up with a fascinating idea. What if I change the input of the LED’s from the TV to something else like a remote control? Remote controls are fairly easy to program and can be easily made by messing around with the infrared signals. This would be nice and all, but not interesting enough. I had to think deeper! What if I change it to a touch screen LCD panel, that can freely control each individual pixel? This then brought me to neopixels.  Using neopixels with a touchpad will be the perfect combination for any kind of occasion. I can put it anywhere in my home, not only a tv or monitor, thus making it more accessible by others! Since I am re-contextualizing this project to the extreme, a lot of the stuff I want to do will not be included in the project that I got this idea from.

Estimated BOM:

In total, I will spend approximately 110 dollars!

I will need to look at others to see how I can put them all together. Some of these projects that inspired me are:

1) Firefly LED Jar – a static version of what I am trying to do. The idea is the same, but the overall concept is fairly different, thus making it very hard to use. I still like how the final product resemble a lamp that can illuminate based on different colors.

2) Mood Lighting – A little lamp that changes colors based on someones mood. I like the idea, but the shape for the lamp was not attractive, nor was any code that can be easily modified provided.

3) Bluetooth controlled LED –  This is fairly close to what I want! Instead of using bluetooth, I want to connect it with wires first. And instead of using an application, I want to use a touchpad that directly mounts to an Arduino.

4) Ambient Computer lights – Uses neopixels instead of standard RGB LED’s, which is basically what I want to do.

5) Led Cube – Pretty much a mix of all of the other projects that inspired me. This inspired me the most!

I will call my final product the Novo Aduro, which has latin roots stemming from ‘new’ and ‘light’ respectively.  As I mentioned in my previous post, I feel like the connection between the neopixels and my touchpad shield will be the biggest problem. Just by looking at the schematics, I can see that the shield will cover the whole entire Arduino Uno. How will I hook up my neopixels if the screen will take up all of the space?  Aside from this problem, there also exists a similar troublesome problem as well. This problem, even though it targets a different part of the project, is still something I see myself having trouble with in the future. This is the fact that my project is not really concrete. My re-contextualization is basically changing up my references completely and modifying the majority of it. Since I am heavily modifying everything, the BOM will not be accurate, I will have to get different code bases, and I will have to try to look at other projects for help and tips during this construction process.

Since My project is very flexible and portable, it can actually be used by anyone! This is what makes it so nice. The fact that anyone can use it, modify it, contribute or even build off of mine is amazing. The fact that I am contributing to this community, and that people are actually using my stuff, is just unbelievably awesome! I can see people using this for many things. If they want to build it just how I am creating it, then they can use it as a lamp just how anyone normally would. Now if they want to modify it, they can also. They can turn it into ambient lighting, shelf lighting, lighting controlled by voice or anything else involving the use of LED’s. Creative people will love my project the most. The fact that you have so much power over the color and brightness of each and every individual pixel, while still keeping the user interface nice and simply, will give off a user friendly approach attracting a lot of people especially those who love home automation. Given the fact that I am basically alone in this project, I am expecting this project to take me a very long time. I am estimating about 150-200 hours, if I take this very seriously.

Novo Aduro is going to be one of a kind. Something so complicated yet simple to use. Something so efficient and useful yet often overlooked. It’s going to be a handmade lamp with some neopixels inside that can change color according to the absolute position on the touchpad. Using this touchpad you can change the color and even the brightness. You can mix and match colors and literally create endless possibilities! This does not stop here. After this is done, I also have many improvements I would like to make to it. Instead of being a standalone portable LED customizable lamp, I would like to make it daisy chain-able. I would like to be able to make several lamps and control them all together using just one touchpad. I can take it even further by later creating an app that can control all of them over wifi or bluetooth to truly serve the purpose of true home automation. For now though, I would like to make this lamp very efficient with a nice and elegant UI and UX interface, that rapidly as well as swiftly responds to the touchpad and instantly produces the desired color effect with minimal lag/latency. I want my finished product to be very user-friendly so that I can target every audience without an age restriction as well. Just think about it. Instead of going out and wasting so much money on something that looks plain and can not be customized to your liking, is not very fun. If you have kids, it will not catch their interest. With this Novo Aduro, you can change colors to match lullabies to put kids to sleep as well as match the color for the room on a romantic evening. The possibilities of this creation is endless, and that is why I think it deserves to exist and serve it’s purpose by being accessible to the community.

 

Final Project Re-contextualized

I have finally decided to stick to my dynamic tv ambient LED lighting!

The list of materials are actually very simple for this project! All I will need for this project is some wire, a power supply (12 volts), some LED strips and a PWM driver. The PWM driver can be found for 6 dollars here, the led strips which are about 30 dollars for a meter here, some wire which I can easily find anywhere, or even use some from the Arduino kit (less than 5 dollars, if I buy it), and a simple power supply like this one for like 6 dollars. In total, I will spend approximately 75 dollars, If I use 2 meters of LED strips!

A picture from the website for the list of materials:

FDQ1BPBHLSH800J.LARGE

Some sample pics of the ambient lighting behind the tv:
FK08YFAHLSH800G.LARGE

FRNO131HLSH800I.LARGE

The way I am thinking of re-contextualizing this project is by putting these dynamic ambient lights into a custom made lamp, where I can then hook it up to a touchscreen LCD display, where I can mix and match the colors to create my own custom lighting for whatever mood I happen to be in. It can also help when I am studying or gaming because I tend to use more of a white light for when I am studying and a more of a yellow light when I am gaming. When I am programming, I tend to use more of a soft blue light to ease the strain off of my eyes from all the colors from the syntax highlighting. So, If I can create something like this, It will help a lot. The challenges I face with going about this project, is basically all on how I am going to hook up a touchscreen display to it. In this project, the LED’s receive input from the tv to change into different colors to match the screen, but I will want to change the input from the tv to a touchscreen display with some sliders that can mix and match colors at will. Since, this is not in the project, nor is it anywhere else for that matter (I tried googling my idea but to no avail). I feel like this will be the greatest obstacle for me in the long run. I can see many people using my product once I am finished. Since I am creating something that many people might find useful, I can imagine a lot of people using it, especially computer programmers! They will love the ability to change the lighting to match their coding styles. Being able to create your own lighting for whatever mood you are in, instead of having to buy multiple bulbs or multiple lamps, or even those multi-colored bulbs that break and burn out easily, you can simply use this. I am expecting this project to take me a very long time, since a lot of it will not be online for references. I am estimating about 80-100 hours, if I take this very seriously.

 

Arduino Projects 3 and 4

It’s finally time for the next batch of projects! These projects were definitely way harder than before. I know that these build on top of what I previously did, but it was still kind of challenging. As usual, the coding wasn’t that bad as the actual circuit building. I feel like the book doesn’t really go into much detail as to how the circuits are really built, it simply tells you how you should do it with a little brief introduction. Coming from a computer science background with almost little to no experience in hardware, these circuits are actually quite challenging.

For chapter 3, everything was working nicely as you can see from the video below. I was able to build the circuit nicely, but I am still a little confused as to why exactly the circuit had to be built this way. I still find myself thinking on how I can change the circuit for it to work differently from the book.

For chapter 4, I had a little bit more fun. Since for my final project I want to build something with dynamic LED’s, this project proved to be quite informative. The coding was interesting, and the circuit wasn’t that bad. I still had trouble understanding why all the wires had to be in the place depicted in the book, but I was so entranced with the LED, that i completely forgot about it.

  • What are some of the challenges that you see moving forward?

Some of the challenges I face going forward, are actually pretty much the same as when I first started. If every project builds on top of each other, and I still don’t have a strong understanding of circuits, it’s just going to become hell for me in the long run. I have to build a strong foundation using these projects first, before I can start tackling the bigger problems!

Arduino Projects And Assignments

These two assignments from chapter one and chapter two of the Arduino toolkit, were super fun! Even though I already completed these a while back, I realized that I created some bad habits with my design on the breadboard. Some of these bad habits were: using long cables where only short ones were needed, no spacing between LED’s, resistors all next to each other and the digital outputs in no organized order. However, there were also some good things. The code was fairly similar to C++, so it was actually near my comfort zone. Other than that, these assignments were pretty straight forward and simple. Precisely because of this assignment is why for my final Arduino project, I want it to be based on LED’s. I just love how much control you have over them. You can literally program them to do whatever you want, whenever you want. With smart LED’s, you can even make it dim, which will be amazing for ambient lighting! Some challenges that I see from here on out, however, may be the circuits. The book does not go into full detail with HOW things are connected the way they are. It just gives you an overview and shows you how to connect it based on pictures. If I were to actually want to create my own circuit, using this book will prove to be difficult.

Below are all of the videos showing my finished circuits!

Some LED Arduino inspired projects that I found:

Dynamic Ambient Lighting – Can change the colors and brightness of the LED’s to match the screen color at that specific time, thus creating a constantly changing dynamic effect.

Custom LED Lamp – A nice lamp, that is custom made to shine with some nice LED’s. I can already see how I can change this up to make my own lamp.

Floor Ambient Lighting – Awesome way of making your room into a club! Imagine changing and controlling all of the LED’s around the corner of the walls, creating a disco effect! This will be pure genius!

Awesome Arduino Project

Found this awesome Arduino project that can actually be more eye appealing and maybe even more useful than ordinary keypad locks. This Arduino project lets you create your own lock that is color-based. Instead of having to put in boring numbers, and having to memorize these number combinations, all you have to do is create your own color pattern. This ought to be very fun and very interesting. Here is a picture of it below:

final-button-code-entry

The awesome part is that it’s simply LED’s, so the code can be modified fairly easily. For example, you can even make all of the LED’s turn green if the pattern is correct like this:

final-button-green-entry

 

3D 5K Face – Talus Astro

 

Say hello to Talus Astro, a robotic failure of a super droid human. Back in the lab on an unidentified island in the middle of nowhere, a huge team of underground scientists secretly funded the personoid project, which artificially created humans in order to one day take over the world. During an experiment, something went wrong causing Talus to go berserk, which resulted in dreadful brain damage, the shrinking of Talus’s body as well as leaving him half robot and half human. Even ’till this day, Talus walks around the streets of this yet to be discovered island without a clue of who he is or how he came into existence. There is one thing he remembers, however, and that is his mission of getting revenge on the people responsible for ruining his life.
Talus Astro

Check it out here: http://www.thingiverse.com/thing:728381

Apple Tv Remote Mount Final

Tired of having your apple tv just thrown around and being all over the place? Tired of having to position it in such a way where the cables don’t interrupt and intrude your organized space? Well, that’s why I created this apple tv mount that also incorporates a remote holder for convenience! This custom design was modeled with simplicity and beauty in mind. The front panel is carved out just enough to fit the apple tv, but yet show it’s logo as well as it’s nice, black, sleek appeal for everyone to see. The cables dangle down the through bottom where there’s a cutout just big enough to make all of the ports easily accessible.

I have to admit, however, that my original design was nowhere near my finished design. At first, I was having many problems, but with the help of some friends and constant feedback from my peers, I was able to successfully work around all of the obstacles in order to create my final masterpiece. Screen Shot 2015-03-11 at 11.38.40 PMThis was the original model. As you can see, it’s pretty much identical to Daniel’s model except for the different colors and the customized lettering. I used this as my original model because it was very close to perfection. It had everything I was looking for, and from a design perspective, it was pretty much unbeatable. The problems I faced with trying to make this design mine was with the width of the case. Since the width of the case was much smaller compared to that of the remote holder, I couldn’t move the remote holder to the side, where I had originally planned to place it. I wanted to show the full front panel of the case, but the remote holder was in the way. The position of the screws were also a problem. If I were to position the screws elsewhere, the stability of my model would drop considerably.

After careful examination and a lot of measurements, I was able to move the remote holder to the side of the case; however, in order to do this, I had to increase the size of the case to match the width of the remote holder so it can maintain it’s symmetry.Screen Shot 2015-03-11 at 11.39.34 PMHere, as you can see, I made a lot of changes. I made a hole in the middle so the apple tv’s appeal can shine, and I also moved the customized lettering into different spots. I changed the colors, and ultimately moved the remote holder to the side. This was pretty nice for my second version, but it was not at all close to what my final product should be looking like.

My final product, was completely different. I changed the overall design, changed the dimensions of the remote holder as well as it’s position, curved some of the edges and even made it more user-friendly.Screen Shot 2015-03-11 at 11.40.04 PMAs you can see, I moved the remote holder back to the front of the case, but I changed it’s appearance completely. I made it shorter as well as a little more snug-fit, so it can withhold the remote entirely without having any problems due to it’s size. Since I lowered it’s dimensions quite a bit, it had to be just enough so the remote will not fall out of place. This took a lot of time since I had to do a lot of measurements through trial and error. I also completely cut off the top portion of the case, so the apple tv can be more open for ventilation purposes, but also because it looks nicer this way. I removed the “Apple tv” lettering, since I didn’t want it to have anything related to apple on it, just to be on the safe side. I also changed the position of where my name was placed as well as it’s dimensions to make the apple tv mount give off a more “fuller” look. Now when people see this, the first thing they will see is my name. Instead of people asking me where I purchased it, or how much it cost me, they will ask me how I was able to make this, or why does it have my name on it. Personally, this is a huge difference, since it illustrates that all of my hard work finally paid off. If it weren’t for all of the feedback and support I received throughout this whole process, I would have never gotten to the point where I am currently at. This is going to be so much fun, especially when I send it to print in the 3D printer. I have never done this before, so it will be a new experience for me. I have seen other models being printed, and it’s astonishing how technology has advanced so far from printing 2D objects all the way to being able to print 3D objects. This project was just very fun to work with, and I can’t wait to see how the finished model looks like after it’s been printed!

This is my final product! As you can see, it came out very nice. The only thing that I dislike is the color, but other than that the case came out stunning!IMG_0976

This is the case mounted on the wall. You can see the front of the apple tv as well as all of the buttons on the remote. Job well done, if I do say so myself.IMG_0981

Below is a video of me putting this new case to use! I show the case in full detail as well as how it looks when it’s mounted or simply laying on a desk.

You can also find my finished model on thingiverse.

 

 

Apple TV Mount with Remote V2

After carefully looking at my apple tv, I noticed something. It is pretty small and slim. After looking at Daniel’s (which, technically was the model I originally used), I noticed that it was a little too bulky for the apple tv. It was all one color and very rigid. Since Daniel’s already had most of the features I wanted, all I had to do was change the length and width, move the remote holder, change the colors and tweak some dimensions to make everything fit into place. I made the screws only go through the back plate of the mount instead of through the whole thing, which I thought didn’t look that nice. I also opened up the front a little bit to show the original logo of the apple tv. In addition to this, I also moved up the remote holder so that the remote can rise above the apple tv giving easier access to it’s buttons if one chooses not to take it out. The way a user would interact with this is pretty simple. Mount the case to the wall using two screws, and then slip the apple tv through the top. Connect all of the wires from the slit opening in the bottom of the case to the apple tv. Put the remote in it’s holder and simply press the play button to turn the apple tv on. You do not have to take out the remote for wireless syncing across devices and tv’s, since you control that through the device itself not the apple tv. This is mainly why I am using my apple tv, which is why I raised the remote case a little higher to make the buttons more accessible. When I talked about my invention, I noticed that other people didn’t really say much. Since my model was something Daniel already had made, it was pretty self-explanatory. I just had to customize it to my liking. My model is pretty much done. The only thing I have left is the measurement of the slit in the remote holder. I want to make sure that the remote actually fits, since I tweaked some of the dimensions on it. Other than that, this model looks pretty much finished for me.

Link to my first model: https://tinkercad.com/things/9FIiwK0LzSm

New model link: https://tinkercad.com/things/51NOXOoe5au