Monte sua Árvore de Natal com Arduino
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 utilizando Arduino 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 FILIPEFLOP:
- Arduino Uno
- Placa de fenolite 5x7cm
- 8 leds vermelhos
- 5 leds verdes
- 8 resistores de 330 ohms
- Barra de pinos macho-macho 90 graus
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. 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: FILIPEFLOP #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 ? Ajude-nos a melhorar o blog atribuindo uma nota a este tutorial (estrelas no final do artigo), comente e visite nossa loja FILIPEFLOP!
Site: Blog FILIPEFLOP