Hey guys,
Hope everything is good....at last completed Mr.Funeka..Although I couldn't record the full features(I was in a hurry because of my lousy neighbor, also had to clean the place by morning(housekeeping and shifting), but the happy news is its working.
In the beginning when I was selected as a Challenger, it was mentioned I'm upcycling a plastic Skull 
Well the Idea was to reuse few components from a pile e-waste around me and turn them into something Fun and useful.
Here is the list of things Upcycled
A few CD Drives (got 4, have been lying around for years) - Used a stepper and a motor from one of them. (Rest three? How about a little CNC?
)
Old Monitor - LCD is used as Base, and becomes a cool under glow night lamp, Used a part of the chassis as a wall hiding the circuitry.
USB Sound Card - Used as sound card itself, for audio IN and OUT of Edison.
Some Old Radio shack Speakers and Amps - Perfect for audio output(was with me for years, had no idea that it would turn into this)
Old Headphones with Mic - Used the Mic for giving in voice inputs.( Ear piece weren't working)
Electronic Components from CD Drive - Used for Decorative purpose over the skull and the enclosure.(Used the entire board itself)
Initially I planned using a fly-back from a CRT but had to drop it. Well but now I've planned to used it for making a plasma globe, that's gonna start tweeting soon and the CRT chassis will be used for gardening.(will post them in my personal blog once done)
So getting back to Mr.Funeka
The eyes got some attention from my friends
(but the problem is if there are many people or its a hot day, it doesnt work as expected but with a single moving target it scares them. need to do some sort of calibration to fix this), but the coolest part was audio Reactive EL which actualy gave the feel of electric arc.I need to personally thank mcb1 and Workshopshed for suggesting out the EL wire.
I actually made some wings out of old invitations. used the stepper to open them after the intro music.
Well I used EasyDriver for running the stepper.
The setup
The Schematic:
I soldered all the connections to the ProtoShield, I used a 3.5mm stereo jack to make AUX and Edison use the same Speaker.
A simple 3position DPDT was helpful for switching between AUX and Speech Recognition mode. My PCB app got crashed so drew this block diagram in paint.
| {gallery} Block Diagram |
|---|
![]() |
![]() |
![]() |
Soldered everything into the Protoshield
The code:
All the code is been uploaded to our Github repository,I'm sharing the arduino code here
#include <Servo.h>
#include <Wire.h>
#define D6T_addr 0x0A
#define D6T_cmd 0x4C
Servo myservo;
int a;
int b;
int tmax, imax;
int numbytes = 19;
int numel = 8;
int rbuf[19];
int tdata[8];
float t_PTAT;
int deg;
int i;
void setup()
{
pinMode(12, INPUT);
pinMode(13, INPUT);
for (i = 2; i < 6; i++)
{
pinMode(i, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
Wire.begin();
myservo.attach(11);
myservo.write(90);
system("python /Skull/intro.py");
eyeblink();
wings();
}
void loop() {
a = digitalRead(12);
b = digitalRead(13);
voice(a);
music(b);
eyes(a, b);
}
void offall()
{
for (int i = 2; i < 6; i++)
{ digitalWrite(i, LOW);
delay(1);
}
}
void music(int o)
{
if (o == 1)
{
int L = analogRead(A0);
int R = analogRead(A1);
if (150 < L && L < 250)
{
digitalWrite(2, HIGH);
}
if (351 < L && L < 1023)
{
digitalWrite(2, HIGH);
delay(10);
digitalWrite(3, HIGH);
delay(10);
}
if (150 < R && R < 250)
{
digitalWrite(4, HIGH);
}
if (351 < R && R < 1023)
{
digitalWrite(4, HIGH);
delay(10);
digitalWrite(5, HIGH);
delay(10);
}
}
offall();
delay(10);
}
void voice(int p)
{
if (p == 1)
{
system("python /Skull/speech.py");
delay(100);
}
}
void eyes(int m, int n)
{
if (m == 0 && n == 0)
{
tmax = 0;
imax = 0;
Wire.beginTransmission(D6T_addr);
Wire.write(D6T_cmd);
Wire.endTransmission();
delay(70);
Wire.requestFrom(D6T_addr, numbytes); // D6T-8 returns 19 bytes
if (0 <= Wire.available()) { // If there is data still left in buffer
i = 0;
for (i = 0; i < numbytes; i++) {
rbuf[i] = Wire.read();
}
t_PTAT = (rbuf[0] + (rbuf[1] << 8) ) * 0.1;
for (i = 0; i < numel; i++) {
tdata[i] = (rbuf[(i * 2 + 2)] + (rbuf[(i * 2 + 3)] << 8 )) * 0.1;
}
}
for (i = 0; i < numel; i++)
{
if (tmax <= tdata[i])
{ tmax = tdata[i];
imax = i;
Serial.println(imax);
}
}
deg = map(imax, 0, 7, 60 , 120);
myservo.write(deg);
delay(10);
}
}
void eyeblink()
{
digitalWrite(8, HIGH);
delay(300);
digitalWrite(8, LOW);
delay(100);
digitalWrite(8, HIGH);
delay(400);
digitalWrite(8, LOW);
delay(200);
digitalWrite(8, HIGH);
delay(100);
digitalWrite(8, LOW);
delay(500);
digitalWrite(8, HIGH);
}
void wings()
{
digitalWrite(10, OUTPUT);
for (i = 0; i < 21; i++)
{ digitalWrite(9, HIGH);
delay(20);
digitalWrite(9, LOW);
delay(20);
}
}
And here we go
Sorry for the shaky photos and my poor blogging skills.










Top Comments