Já estamos em Dezembro e se você ainda não montou a sua árvore de Natal, vamos te ajudar nessa tarefa, mostrando como montar uma árvore de natal com Arduino utilizando placa Uno, placa de fenolite e alguns leds:
A nossa árvore se encaixa diretamente no Arduino, utilizando as portas digitais 9, 10, 11, 12 e ainda o pino GND na parte superior da placa. Este projeto foi baseado no original de Danilo Larizza.
Lista de material e preparação da placa de fenolite
Para o nosso projeto vamos utilizar o seguinte material, que você encontra na loja MakerHero:
- Arduino Uno
- Placa de fenolite 5x7cm
- 8 leds vermelhos
- 5 leds verdes
- 8 resistores de 330 ohms
- Barra de pinos macho-macho 90 graus
- Fio Wire Wrap 250m 30AWG 8 Cores
Antes de mais nada, temos que preparar o suporte para os componentes, no caso, a placa de fenolite, onde vamos apoiar os leds e soldar os demais itens.
Primeiro, faça um desenho na placa de fenolite para marcar as partes que serão cortadas:
Em seguida, recorte a placa de fenolite utilizando a ferramenta de sua preferência. No nosso caso utilizamos uma tesoura, mas você pode utilizar uma serra ou um estilete, por exemplo:
Depois de cortada, aplique tinta verde na parte frontal da placa de fenolite, sem excessos, para que a tinta não escorra para a parte traseira:
Espere a tinta secar para começar a soldagem dos componentes.
Circuito Árvore de Natal com Arduino
A soldagem é a parte mais complicada, já que temos que colocar na parte de trás da placa os resistores e também os fios de conexão aos pinos do Arduino (usamos fio wire wrap para essas ligações). Faça a disposição desses componentes do jeito que achar mais conveniente. A nossa ficou assim:
Siga o esquema de ligação abaixo, onde a porta 12 controla a “estrela”, na parte superior da árvore. O pino 11 controla os 4 leds vermelhos logo abaixo, o pino 10 os 5 leds verdes e o pino 9 controla os 3 leds vermelhos na parte inferior.
Nos pinos 9, 10 e 11 vamos utilizar a função PWM para ajustar a luminosidade dos leds.
Programa Árvore de Natal com Arduino
O programa é bem simples e não usa nenhuma biblioteca específica, apenas as funções de acionamento das portas digitais, e no caso das portas 9, 10 e 11 usamos PWM por meio do comando analogWrite(), passando como parâmetro o pino que será acionado, e o valor analógico desse pino no formato analogWrite(pino, valor):
//Programa: Arvore de Natal com Arduino //Autor: MakerHero #define led_vermelho_inf 9 #define led_verde 10 #define led_vermelho_sup 11 #define led_estrela 12 void setup() { Serial.begin(9600); pinMode(led_vermelho_inf, OUTPUT); pinMode(led_verde, OUTPUT); pinMode(led_vermelho_sup, OUTPUT); pinMode(led_estrela, OUTPUT); } void loop() { //Aciona os 3 conjuntos via pwm Serial.println("n1 - Executando rotina pwm sequencial"); digitalWrite(led_estrela, HIGH); liga_desliga_leds_pwm(led_vermelho_inf); liga_desliga_leds_pwm(led_vermelho_sup); liga_desliga_leds_pwm(led_verde); //Aciona os 3 conjuntos total alternadamente Serial.println("2 - Acendimento total alternado"); analogWrite(led_vermelho_inf, 254); delay(1000); analogWrite(led_vermelho_sup, 254); delay(1000); analogWrite(led_verde, 254); delay(1000); digitalWrite(led_estrela, 254); delay(2000); //Desliga os 3 conjuntos total alternadamente analogWrite(led_vermelho_inf, 0); delay(1000); analogWrite(led_vermelho_sup, 0); delay(1000); analogWrite(led_verde, 0); delay(1000); digitalWrite(led_estrela, 0); delay(1000); //Rotina aleatoria Serial.println("3 - Executando rotina aleatoria"); for (int x = 0; x <= 35; x++) { int valor = random(1, 5); int tempo = 300; switch (valor) { case 1: analogWrite(led_vermelho_inf, 254); delay(tempo); analogWrite(led_vermelho_inf, 0); break; case 2: analogWrite(led_vermelho_sup, 254); delay(tempo); analogWrite(led_vermelho_sup, 0); break; case 3: analogWrite(led_verde, 254); delay(tempo); analogWrite(led_verde, 0); break; case 4: digitalWrite(led_estrela, 1); delay(tempo); digitalWrite(led_estrela, 0); break; } } //Pisca os 4 conjuntos Serial.println("4 - Pisca conjunto"); Serial.println(); int tempo = 20; for (int y = 0; y <= 20; y++) { delay(tempo); analogWrite(led_vermelho_inf, 254); delay(tempo); analogWrite(led_vermelho_sup, 254); delay(tempo); analogWrite(led_verde, 254); delay(tempo); digitalWrite(led_estrela, 254); delay(tempo); analogWrite(led_vermelho_inf, 0); analogWrite(led_vermelho_sup, 0); analogWrite(led_verde, 0); digitalWrite(led_estrela, 0); } } void liga_desliga_leds_pwm(int led) { for (int i = 0; i <= 254; i += 5) { analogWrite(led, i); delay(20); } delay(500); //Rotina desligar led vermelho esquerdo pwm for (int i = 254; i >= 0 ; i -= 5) { analogWrite(led, i); delay(20); } analogWrite(led, 0); }
O loop do programa foi dividido em 4 “blocos”, e em cada um deles temos um efeito da árvore, como acender/apagar lentamente, piscar, acender aleatório, etc. Altere esses blocos para criar seus próprios efeitos!
Gostou do artigo? Deixe seu comentário logo abaixo.
Bacana, foi criativo na montagem da árvore.
Muito bom Adilson, gostei bastante da ideia.. Usei ele para fazer a minha árvore de natal para decorar minha casa, aproveitei e personalizei algumas coisas. Fiz este artigo em meu site para demonstrar meu trabalho. https://tecdicas.com/arvore-de-natal-com-arduino/
Ana Paula,
Que bom que curtiu! Ficou show!
Abraços!
Diogo – Equipe MakerHero
Refiz o projeto, porém o verificador encontrou erro de declaração. Como resolver?
Olá, Felipe,
Qual declaração ele acusou de erro? Se possível, poste seu erro.
Abraços!
Diogo – Equipe MakerHero
Obrigado pela atenção, porem acabei descobrindo o erro. Era um detalhe na digitação. Abraços.
Olá! Gostaria de saber se pode substituir a sold por cola quente!
Ótimo projeto, abraço!!
Olá Isabelly!
Não é possível, a cola quente não mantém o contato elétrico.
Abraços!
André Rocha – Equipe MakerHero
Boa noite Filipe você vende o quite para montar está arvore de natal precisando de um projeto simples para a faculdade.
Att Carlos Roberto
Boa noite Filipe você vende o quite para montar está arvore de natal
Bom Dia.
Caro amigo, não sei se vai olhar esse comentário, o código está apresentando erro na hora de verificar
exit status 1
‘quot’ was not declared in this scope
Boa tarde como eu faço para deixar ela autonoma para qie nao precise do arduino para funcionar
Eu fiz a arvore, ficou bem legal
Consegui fazer uma parecida seguindo esse tutorial, só usei outro código que já estava gravado no meu Arduino. Postei no Facebook 😀
Ah ! Legal Vicente ! 🙂
Abraço!
Adilson – Equipe MakerHero
Parabens Felipe, achei fantastico a iniciativa e a simplicidade do projeto e materiais… Ja estou a fazer a minha cara!
Um dica seria abrir espaço no blog ou em algum lugar para voce receber as fotos e videos do pessoal que faz os projetos que voce diponibiliza….
Valew cara! Mt bom….
Bom dia Andre,
Legal! Vamos estudar essa dica, mas por enquanto você pode tentar publicar a foto da sua árvore no nosso canal no Facebook. 🙂
Abraço!
Adilson – Equipe MakerHero