Table of contents
Abstract
This riveting talking (and animatronic) book is an original story I wrote just for this project, of Cinnamin the Elf, his adopted family, and marshmallow adventures.. The last page of the talking book and the animatronic elf are shown in thumbnail.
Project
This riveting talking animatronic book is an original story I wrote just for this project.
There is an “Easter Egg” in the story (Hint check out all the people’s names)
Here is the video link. The video is 6.5 minutes long. If you want to skip to the animatronics part, start at about 5 minutes in.
https://youtu.be/PEoGuDOz-cw <---------------
photos, schematic, code , and text included below
After assembly and testing, the micro server on the Elf “sit up” chair didn’t have enough torque. Bumping up rail voltage would make the project add another buck-boost power supply just for the DFPlayer. I tried a larger servo, but it too needed more voltage. I had to disembody the elf and mount his head on a toilet paper roll body to reduce weight.
Finally, perseverance paid off, the project got into working shape bit by bit. I’m satisfied with it as a working prototype.
My grandkids knew a big surprise was coming when I had them stand in front of the elf. They really liked eating the marshmallow ammunition too.
On January 5th, the project was demonstrated to a home school robot/programming class of 10 middle school and high schoolers using Arduino for their programming/science class. They were inspired seeing a project that is different from the classical line follower.
Ill also have a public showing of this project on Jan 25th at the MystiCon scifi convention.
The complete text of the story is pasted in at the end of this submission.
The audio tracks are myself reading my story. Audacity was used to record the reading, then my voice pitch was raised 25% to sound more Elvish. Christmassy music was mixed in the background.
The control electronics took up a lot more room than I expected. I ran out of Arduino Nano terminal boards, and materials to build custom boards. The DFPlayer serial communications were uncooperative, had to switch to analog, which made me order parts to build a custom Reed Relay interface card.
Here are some photos:
cover and page 1
top view of cover/page 1
top view page 2 & 3
page 2
page 3
page 4 and animatronic sit up elf with marshmallow launcher arm
bottom box: buck power supply 12V to 5V. Arduino Nano and DFplayer on E14 protoboard (never have enough of those)
Arduino 5V power distribution card for TP223B capacitive touch switches, homebrew reed relay card to interface DFPlayer
//2025 Hack The Holidays
// Cinnamin_the_Elf_controls.ino
//
//
#include <Servo.h>
Servo Elf_Sit; //
Servo Elf_Arm; //
//
int pos_Sit = 95; // variable to store the sit servo position
int pos_Arm = 15; // variable to store the sit servo position
int AudioNotPlaying = HIGH;
int Play_ElfTrack1=LOW;
int Play_ElfTrack2=LOW;
int Play_ElfTrack3=LOW;
int Play_ElfTrack4=LOW;
void setup() {
pinMode(2, INPUT); //capacitive SW 1
pinMode(3, INPUT); //capacitive SW 2
pinMode(4, INPUT); //capacitive SW 3
pinMode(5, INPUT); //capacitive SW 4
pinMode(6, OUTPUT); //to reed relay K1
pinMode(7, OUTPUT); //to reed relay K2
pinMode(8, OUTPUT); //to reed relay K3
pinMode(9, OUTPUT); //to reed relay K4
Elf_Sit.attach(10); // attaches the servo on pin 9 to the servo object
Elf_Arm.attach(11); // attaches the servo on pin 9 to the servo object
pinMode(12, INPUT); //DFPLayer Not BUSY
}
void loop() {
Elf_Sit.write(95); //make sure elf is in home position
Elf_Arm.write(15); //make sure elf is in home position
AudioNotPlaying=digitalRead(12);
delay (500);
if (AudioNotPlaying==HIGH)
{
/// read the touch pushbuttons state
Play_ElfTrack1=digitalRead(2);
Play_ElfTrack2=digitalRead(3);
Play_ElfTrack3=digitalRead(4);
Play_ElfTrack4=digitalRead(5);
if (Play_ElfTrack1==HIGH)
{ digitalWrite(6,HIGH);
delay(50);
digitalWrite(6, LOW);
}
if (Play_ElfTrack2==HIGH)
{ digitalWrite(7,HIGH);
delay(50);
digitalWrite(7, LOW);
}
if (Play_ElfTrack3==HIGH)
{ digitalWrite(8,HIGH);
delay(50);
digitalWrite(8, LOW);
}
if (Play_ElfTrack4==HIGH)
{ digitalWrite(9,HIGH);
delay(50);
digitalWrite(9, LOW);
delay(30000);
delay(30000);
delay(15000);
// Elf throws a marshmellow at 1:15 into the audio track
for (pos_Arm = 15; pos_Arm <= 115; pos_Arm += 1)
{ // goes from 90 degrees to 180 degrees in steps of 1 degree
Elf_Arm.write(pos_Arm); // tell servo to go to position in variable 'pos'
//delay(2); // waits 2ms for the servo to reach the position
}
delay(2000);
/// gently reset arm servos to home
for (pos_Arm = 115; pos_Arm >= 15; pos_Arm -= 1)
{ // goes from 135 degrees to 45 degrees
Elf_Arm.write(pos_Arm); // tell servo to go to position in variable 'pos'
delay(25); // waits 15ms for the servo to reach the position
}
delay(10000);
//// Elf sits up at 1:30 into the audiotrack
for (pos_Sit = 95; pos_Sit <= 180; pos_Sit += 1)
{ // goes from 90 degrees to 180 degrees in steps of 1 degree
Elf_Sit.write(pos_Sit); // tell servo to go to position in variable 'pos'
delay(50); // waits 20ms for the servo to reach the position
}
delay(2000);
for (pos_Sit = 180; pos_Sit >= 95; pos_Sit -= 1) { // goes from 180 degrees to 0 degrees
Elf_Sit.write(pos_Sit); // tell servo to go to position in variable 'pos'
delay(30); // waits 15ms for the servo to reach the position
}
} //End of ElfTrack4 PB routine
} //// end of PB scanning
} ///end of looop
2025 Holiday Hack: Cinnamin’s Marshmallow Surprise:
An Elf on the Shelf Talking Storybook
Page 1 :
Every Whom in Whomville knew Cinnamon the Elf.
The Whoms were a large extended family , all in town and had relatives with remarkably strange surnames including the Whomisit family, KukaSiella family, QuiLabas family, and Wie Daar family.
Cinnamin adopted the Whom family when he was a wee apprentice elf, just barely able to fit in his scout elf uniform. At 100 years old, he was not quite full grown. His job is a daily report to Santas staff on the Whom family naughty or nice status.
Cinnamon was really fond of hot chocolate, peppermint candy, all sorts of sweets, but his favorite is warm cinnamon apple cider. After his nightly visit to the North Pole Cinnamin often relaxed with a warm cider.
Page 2:
From the start, Cinnamin kept a sharp eye and ear on Big John Whom, his wife Loo Whom, and all the Whom children: Little Loo, Brasco, Bogger, and Netty. They were a nice family whom went to bed early and slept late, making his nightly journey to the North Pole reporting desk uneventful. He had extra time before dawn for elfish socializing with other Scout Elves in Whomville.
The neighborhood elves would laugh and play with all the Christmas decorations and have a snack before hiding still and quiet somewhere to keep a watchful eye on the Whoms.
Page 3 :
A couple nights before Christmas, there came a wonderful Christmas snow. Brasco, Bogger, Netty, and Little Loo spent the whole next day sled riding, building snowmen, and then built a gimungous snow fort.
Once inside for the day, they enjoyed some hot keilbassi and pierogis with ketchup. Warming up and bellies full, the Whom children brainstormed their snow play plan for tomorrow. Brasco said to Bogger “Lets invite our cousins You Whom and Boo Whom over to play.” Netty piped in “ I want to invite my classmate Debbie Downer.” Little Loo wants to invite her friends Doody and Poot Pyle. They giggled and laughed and a plan hatched to build a rugged snowfort to launch a glorious snowball ambush.
Cinnamin the Elf is listening in to the entire conversation, observing that nothing naughty going on here and its sounds like so much fun. He just keeps thinking about snow, snow forts, snow men, snowballs and his excitement builds.
The Whoms all get tucked into their warm beds and fall fast asleep. Cinnamin gives a quick push on his Elf Ride Share Beacon telling Trixie and Pixy Elf he is ready for pickup. He will ride with them using their elvish magic transport sleigh for the ride to the North Pole for report in.
Report in is pretty routine. Cinnamin, Pixie and Trixie arrive in Whomville with some extra time for themselves. The Whoms have a lot of goodies for them to nibble.
Page 4
The Elfs find a gingerbread house in the cupboard. Its decorated with multicolored gumdrops, minty chocolate trees, and a yard with wispy snow, snowballs, and snowmen. Oh those gumdrops taste so good. The trees are really yummy. The wispy snow is white cotton candy !!!! Oh yum
What are the snowballs and snowmen made of ? Cinnamin picks up a snowball and studies it from all sides, he gives it a sniff, then a poke, then a squeeze…..then takes a bite “mmm, a yummy marshmallow”
Out of the corer of his eye he sees Little Loo Whom had woken up, stealthily sneaking closer to watch the elves play.
Cinnamin signals to the other elves to freeze. He lays back motionless, holding his half eaten marshmallow ……., his reflexes take over and he throws the marshmallow at Little Loo. “oomph, fast ball clocked at 100 mph”
Little Loo doesn’t see who threw the snack at her. She starts snooping and poking around close to Cinnamin, he cant take it, he sits up and screams “ Merry Christmas !!!!!!!!”