# Projeto de Natal

![](/files/-MQHftJANJsBsWVsTO5p)

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](/files/-MP4_nM3Ey2KPI1AmNKi)

* 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](/files/-MP4cOzy413mI2fNk10G)

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](/files/-MP4_w7tEkaiUtjGzZBK)

## 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.&#x20;

![Arquivo pessoal: Diana Santos](/files/-MP4aaXydu8_P0Io-Hbi)

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](/files/-MP4bBcx5zLcqJkwX4dp)

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](/files/-MP4bRGuMWi7Hnd_uxuq)

## 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](/files/-MP4dB1sB1davPqClzOz)

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](/files/-MP4drZ_nMCCQ39qI8Hp)

Após isso a montagem ficará assim:

![Arquivo pessoal: Diana Santos](/files/-MP4eqWrJ1nyq7uz9vCf)

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

{% embed url="<https://www.youtube.com/watch?v=f3oQmxDHBHo>" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://franzininho.gitbook.io/franzininho-docs/exemplos/projeto-de-natal.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
