April 21, 2020
Description
This is a Semi scale version from a tv show. You can find an example with this link
https://www.youtube.com/watch?v=_yPvRyfdJlw&t=14s
You can find a full working movie of the house in this link
https://youtu.be/nVOiNHtDSmc
Last year they make a new show from this old tv show for small kids. Also in the school there are some examples off playing with this house and amuse the small kids.
So i decide to draw this house in 3D and make some theater show for the kids.
You can print this and you need just a very small other parts to complete.
Print the house and the table and mount in in each other. Normally it is very easy to assemble and glue together. The house has some alignment pins so you can align and glue the parts together with the house.
For the hinges you just need to clean the holes and put some 1.75 filament thru the holes. After that melt the ends so the pin stay in place of the hinges. do the same for the servo arms.
the Servo arms are just print round so no toots on this part. You need to push it on the servo and screw in place. Sometimes it slips true but it can work more ore less
so the parts that you extra need are
#3servo's for the house and one continuous rotating servo.
I use this for continuous servo
https://opencircuit.be/Product/FEETECH-FS90R-Micro-Continuous-Rotation-Servo
and i use 3 gws naro HP/STD for the rest.
#1M4 bolt and nut for the centre of the table
These are the pieces i think off at this moment
For the arduino,i use a arduino uno clone.
You need to add the VarSpeedServo.h program to the libary from your arduino software. How you need to do that you can find on google. for the rest i can give the program, so normally you just need to copy the text between #######
For the end, this is a work in progress so all fit's with some adjustment but there is some room to perfection the house.
Let me know if you have some problems or you just want to comment.
I like to see a full print versions of other houses to.
greetings
program######################"
#include <VarSpeedServo.h>
//
// constants won't change. Used here to set a pin number:
const int ledPin = LED_BUILTIN;// the number of the LED pin
// Variables will change:
int ledState = LOW; // variable for the ledstate
int counter = 0; //counter for second time interval
int pushbutton = 8; // pushbutton for start cycle input declaration
int pushbuttonState = 0; //variable for check the state of the input
int ledtik = 4; //led for lighting tik pin number 4
int ledtak = 7; //led for lighting tik pin number 7
unsigned long previousMillis = 0; // will store last time LED was updated
boolean cycleopenrun = false; // variable for open the doors and start the session
boolean cyclecloserun = false; //variable for close the doors and start the session
VarSpeedServo clockservo;
VarSpeedServo door1servo;
VarSpeedServo door2servo;
VarSpeedServo tableturnservo;
// constants won't change:
const long interval = 1000; // interval at which to blink (milliseconds) so 1 second interval
void setup() { // One time runthrue this setup
// set the digital pin as output:
pinMode(ledPin, OUTPUT); //pin 13 is the led blink output
pinMode(pushbutton, INPUT); //set input 8 to an input for pushbutton
pinMode (ledtik, OUTPUT); //set output 4 to an output for ledtik
pinMode (ledtak, OUTPUT); //set output 7 to an output for ledtak
Serial.begin(9600); //start serial connection
clockservo.attach (3, 0, 255);
door1servo.attach (5, 0, 255);
door2servo.attach (6, 0, 255);
tableturnservo.attach (9);
door1servo.slowmove (130, 15);
door2servo.slowmove (0, 15);
}
void loop() { //Start the loop from here
unsigned long currentMillis = millis(); //make long word the same as millis
pushbuttonState = digitalRead(pushbutton); //Make the variable reading the state of the input
Serial.println(counter);
delay(1);
{
if ((pushbuttonState == false)&&(counter == 0)) // check if pushbutton is pressed and start cycle
{ cycleopenrun = true; // set bolean to true
} else {}
if ((pushbuttonState == false)&&(counter == 26)) // check if pushbutton is pressed and start cycle
{ cyclecloserun = true; // set bolean to true
} else {}
if (((cycleopenrun == true)&&(counter <26))or((cyclecloserun == true)))
{
if (currentMillis - previousMillis >= interval) { //check if 1000 mili seconds are past
// save the last time you blinked the LED
previousMillis = currentMillis; // make the check variable
if (ledState == LOW) { // check if led is on or not and toggle the state
ledState = HIGH;
counter = counter + 1; // Add 1 value to the counter
} else {
ledState = LOW;
counter = counter + 1;
}
} else {}
} else {
}
}
if ((counter >=2) && (counter <=50) && (ledState == HIGH) && (counter !=26))
{digitalWrite(ledtik, true);
digitalWrite(ledtak, false);
}
if ((counter >=2) && (counter <=50) && (ledState == LOW) && (counter !=26))
{digitalWrite(ledtik, false);
digitalWrite(ledtak, true);
}
if ((counter <1) or (counter >50))
{digitalWrite(ledtik, false);
digitalWrite(ledtak, false);
}
if (counter == 26)
{ digitalWrite(ledtak, true);
digitalWrite(ledtik, true);
}
if (counter >= 50)
{ cycleopenrun = false;
cyclecloserun = false;
counter = 0;
}
if ((counter >=1) && (counter <=50) && (ledState == HIGH) && (counter !=26))
{clockservo.slowmove (45, 60);
}
if ((counter >=1) && (counter <=50) && (ledState == LOW) && (counter !=26))
{clockservo.slowmove (135, 60);
}
if ((counter == 0)or(counter == 26))
{clockservo.slowmove (90, 60);
}
if (counter == 8)
{ door1servo.slowmove (0, 7);
}
if (counter == 7)
{ door2servo.slowmove (130, 7);
}
if (counter == 48)
{ door1servo.slowmove (130, 10);
}
if (counter == 46)
{ door2servo.slowmove (0, 10);
}
if ((counter == 13)or(counter==34))
{tableturnservo.slowmove (85,255);
}
if ((counter == 48)or(counter==26))
{tableturnservo.slowmove (90,255);}
// set the LED with the ledState of the variable:
digitalWrite(ledPin, ledState);
}
end program####################"
License:
Creative Commons - Attribution