> For the complete documentation index, see [llms.txt](https://franzininho.gitbook.io/franzininho-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://franzininho.gitbook.io/franzininho-docs/exemplos/projeto-de-natal.md).

# 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>" %}
