O proposito desse projeto é estabelecer as relações natalinas, concretizar a imaginação da criança e aproximar a bom velhinho nas nossas casas.
Com materiais que você deve ter em casa e com a placa Franzininho DIY, sensor de presença e servo motor criamos uma atividade bem lúdica para a garotada.
Materiais
Insumo de papelaria
2 caixas de sabão em pó
Pedaços de papelão
Palitos de sorvete
Cola
Cola quente
Tinta/lápis de cor
Tesoura
Estilete
Insumo eletrônico
Franzininho DIY
Sensor de presença
Power bank/ alimentação
3 leds RGB
Computador
Primeira etapa - Estrutura inferior
Você precisa de uma das caixas de sabão e tirar a medida de 3 cm das bordas e recortar, utilize um estilete e ficará conforme a imagem abaixo:
Arquivo pessoal: Diana Santos
detalhe eu não tirei foto, mas você deve fazer um corte também na parte superior da caixa para que o papai noel passe e apareça no meio desse vão.
Arquivo pessoal: Diana Santos
Agora você deve encapar da forma que achar melhor. Eu utilizei folha sulflite e fiz os tijolinhos com tinta guache, mas você poderia encapar com outro material e fazer os tijolinhos e colar a parte por exemplo. Personalize da forma que achar melhor, use a criatividade e utilize os materiais que você tenha em casa.
Arquivo pessoal: Diana Santos
Segunda etapa - Estrutura Superior
Você deve fazer um buraco na parte de trás na foto eu fiz nesse tamanho mas depois eu abri mais um pouco.
Arquivo pessoal: Diana Santos
Agora você deve encapar eu utilizei folha sulfite e fiz medidas de tijolinhos as medidas são de : 5x3 cm e ficará igual a imagem abaixo:
Arquivo pessoal: Diana Santos
Agora chegou a hora de unir as caixas de sabão, mas antes tem um detalhe, você deve fazer um corte também nesta caixa de sabão para que o papai noel passe.
Arquivo pessoal: Diana Santos
Papai Noel
Minha impressora acabou a tinha e então eu desenhei a mão esse papai noel, você pode ver alguns modelos na internet, mas desde que seja melhor que as caixas de sabão.Após isso decore ele e não precisa ter pernas, pois ele vai descer só um pouco da chaminé. Cole com um palito de sorvete atrás e ficará igual o da imagem. Colocamos na ponta do picole um pedaço de terminal e colamos com cola quente.
Arquivo pessoal: Diana Santos
Agora pegue outro palito de sorvete e cole o acessório do servo motor, colei com fita dupla fase fina, conforme a imagem.
Arquivo pessoal: Diana Santos
Após isso a montagem ficará assim:
Arquivo pessoal: Diana Santos
Agora é só seguir as imagens e montar da forma que achar melhor.
#include <Adafruit_SoftServo.h> // SoftwareServo (funciona em pinos não PWM)
#define SERVOPIN 0
#define SENSOR 2
#define LED 1
#define INTERVALO_PISCA 150 // tempo para inversão do led
#define INTERVALO_ATUALIZA 10 //tempo para atualizar o servo: minimo 5
#define MINIMO 1 //meno valor 0
#define MAXIMO 178 //maior valor 179
Adafruit_SoftServo servo; //instacia do servo
int servoPos; // variável para controle de posição do Servo
long int ultimaInversao = 0; //variável auxiliar para temporização do LED
long int ultimaatualizacao = 0; //variável auxiliar para atualização do Servo
void iniciaServo(){
OCR0A = 0xAF; // any number is OK
TIMSK |= _BV(OCIE0A); // Turn on the compare interrupt (below!)
servo.attach(SERVOPIN); // anexa pino do Servo
servo.write(MAXIMO); // posição inicial do servo
delay(15); // Aguarda servo chegar na posição inicial
}
void setup() {
iniciaServo(); //função com a inicializações do servo motor
pinMode(LED, OUTPUT); //pino do LED como saída
pinMode(SENSOR,INPUT_PULLUP); //pino do Sensor como entrada
}
void loop() {
if ((millis() - ultimaatualizacao) > INTERVALO_ATUALIZA) //verifica se já passou o tempo para atualizar o servo
{
if(!digitalRead(SENSOR)) //se não estiver acionado o sensor de presenção
{
if(servoPos <= MAXIMO) servoPos++; //papi noel sobe
}
else{ //se tiver presença
if (servoPos > MINIMO) servoPos--; //papi noel desce
}
servo.write(servoPos); // atualiza posição do servo
ultimaatualizacao = millis(); //salva tempo para proxima atualização
}
if ((millis() - ultimaInversao) > INTERVALO_PISCA) //verifica se já dpassou o tempo para inverter o LED
{
if(digitalRead(SENSOR))//se tiver alguém na frente da lareira
{
digitalWrite(LED, !digitalRead(LED)); //Pisca LED
}
else{
digitalWrite(LED,LOW); //apaga LED
}
ultimaInversao = millis(); //salva tempo para proxima atualização
}
}
//interrupção para atualização do servo
// NÃO ALTERAR CONFIGURAÇÃO
volatile uint8_t counter = 0;
SIGNAL(TIMER0_COMPA_vect) {
counter += 2;
if (counter >= 20) {
counter = 0;
servo.refresh();
}
}