Projeto de Natal

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:

  • 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.

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.

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.

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:

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.

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.

Agora pegue outro palito de sorvete e cole o acessório do servo motor, colei com fita dupla fase fina, conforme a imagem.

Após isso a montagem ficará assim:

Agora é só seguir as imagens e montar da forma que achar melhor.

[EM ANDAMENTO]

Circuito

[EM ANDAMENTO]

Código

#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();
  }
}

Last updated