Hallowino: Arduino + Haloween

Projeto experimental abrangendo Arduino, tecnologia, arte, mecânica e sustentabilidade.

     Festas e comemorações  tradicionais ou não, são excelentes disparadores para a implementação de projetos que abarquem tecnologia, arte, mecânica e sustentabilidade.  Segue baixo um exemplo com a temática do Haloween.

     Os materiais recicláveis, formatos e mecanismos empregados na construção dos objetos (bonecos/estruturas) dependeram da criatividade e da imaginação dos alunos.

MATERIAIS E FERRAMENTAS:

Material não estruturado (papelão, recipientes e tubos plásticos, etc)

Arduino UNO 

Servos Motores

LEDs

Resisitores  330 ou 470 ohms

Auto falante pequeno ou Piezzo

Protoboard 470 pinos

Jumpers

Pistola de cola quente e bastão

Arame

Alicate

Tesoura

Fonte de 6 volts (imprescindível para alimentar adequadamente os servos)

Ferro de solda e estanho (opcional) 

IDE do Arduino https://www.arduino.cc/en/software

ESQUEMA LIGAÇÃO

CÓDIGO ARDUINO

Copie o código e cole na IDE do Arduino

/*Projeto: Robozinhos Halloween
Tema musical: Abertura "Famíla Adams"
Autor: Paulo Adriano Ferrari
Código da Melodia adaptado do site MundoProjetado http://mundoprojetado.com.br/tocando-musica-com-o-arduino-buzzer/adapatad
*/

#include <Servo.h>

Servo myservo; // cria um objeto chamado myservo, myservo1 e myservo2  
Servo myservo1;
Servo myservo2;

#define led1 6  // define as portas em que os LEDs serão ligados (porta 6, 7 e 8);
#define led2 7
#define led3 8

//int pos = 0; 
//int pos1 = 0;
//int pos2 = 0;

//XXXXXXXXXXXX FUNÇÃO QUE TOCA A CANÇÃO XXXXXXXXXXXXXXXXXX
char buz =13;
char* musica[] = {"Do","Pausa","Re","Pausa","Mi","Pausa","Fa", "Fim"};
int duracao[] = {150, 50, 150, 50, 150, 50, 200};
char* starwars[] = {"Do","Pausa","Re","Pausa","Mi","Pausa","Sol", "Fim"}; 
int dur[] =   {150, 50, 150, 50, 150, 50, 200};
char* starwar[] = {"Do","Pausa","Re","Pausa","Mi","Pausa","Sol","Pausa","Do","Pausa","Re","Pausa","Mi","Pausa","Sol","Pausa","Do","Pausa","Re","Pausa","Mi","Pausa","Fa","Pausa","Fim"}; //Marcha Imperial
int dura[] = {150, 50, 150, 50, 150, 50,200, 50,150, 50, 150, 50, 150, 50,200, 50,150, 50, 150, 50, 150, 50, 400, 100};

void setup(){
  

   pinMode (led1, 6); // Habilita os LEDs nas respectivas porats do Arduino
   pinMode (led2, 7);
   pinMode (led3, 8);
   pinMode (led1, OUTPUT);  // Habilita as portas como saída
   pinMode (led2, OUTPUT); 
   pinMode (led3, OUTPUT);
   myservo.attach(9); //Define as portas em que os servos serão ligados
   myservo1.attach(10);
   myservo2.attach(11);

   //XXXX PREPARAÇÃO XXXXXXXXXXXXXXX
   myservo.write(90); // Prepara o sistema antes da inicialização
   myservo1.write(70);
   myservo2.write(60);
   delay(500);

   myservo.write(0);
   myservo1.write(0);
   myservo2.write(0);
   delay (500);

// XXXXXXXXXXXXXX PRIMEIRO PARTE XXXXXXXXXXXXXXXXXXXXXXX  
   tocar(musica,duracao); //Função que toca a primeira parte da canção
 
    myservo.write(90);  // Código que abre e fecha os servos e acende e apaga os LEDs
    myservo1.write(70);
    myservo2.write(60);
    delay(200);
    digitalWrite (led1, 1);
    digitalWrite (led2, 1);
    digitalWrite (led3, 1);
    delay(100);
    
    myservo.write(0);
    myservo1.write(0);
    myservo2.write(0);
    digitalWrite (led1, 0);
    digitalWrite (led2, 0);
    digitalWrite (led3, 1);
    delay(250);
  
    myservo.write(90);
    myservo1.write(70);
    myservo2.write(60);
    delay(100);
    digitalWrite (led1, 1);
    digitalWrite (led2, 1);
    digitalWrite (led3, 1);
    delay(150);
    myservo.write(0);
    myservo1.write(0);
    myservo2.write(0);
    digitalWrite (led1, 0);
    digitalWrite (led2, 0);
    digitalWrite (led3, 0);
    delay(100);
    
    tocar(starwars,dur); //Função que toca a segunda parte da canção
   
    myservo.write(90);  // Código que abre e fecha os servos e acende e apaga os LEDs
    myservo1.write(70);
    myservo2.write(60);
    delay(100);
    digitalWrite (led1, 1);
    digitalWrite (led2, 1);
    digitalWrite (led3, 1);
    delay(100);
    
    myservo.write(0);
    myservo1.write(0);
    myservo2.write(0);
    digitalWrite (led1, 0);
    digitalWrite (led2, 0);
    digitalWrite (led3, 1);
    delay(250);
  
    myservo.write(90);
    myservo1.write(70);
    myservo2.write(60);
    delay(100);
    digitalWrite (led1, 1);
    digitalWrite (led2, 1);
    digitalWrite (led3, 1);
    delay(150);
    myservo.write(0);
    myservo1.write(0);
    myservo2.write(0);
    digitalWrite (led1, 0);
    digitalWrite (led2, 0);
    digitalWrite (led3, 0);
    delay(150);
     
   tocar(starwar,dura); //Função que toca a terceira parte da canção
     
    myservo.write(90);   // Código que abre e fecha os servos e acende e apaga os LEDs
    myservo1.write(70);
    myservo2.write(60);
    delay(200);
    digitalWrite (led1, 1);
    digitalWrite (led2, 1);
    digitalWrite (led3, 1);
    delay(100);
    
    myservo.write(0);
    myservo1.write(0);
    myservo2.write(0);
    digitalWrite (led1, 0);
    digitalWrite (led2, 0);
    digitalWrite (led3, 1);
    delay(250);
      
    myservo.write(90);
    myservo1.write(70);
    myservo2.write(60);
    delay(100);
    digitalWrite (led1, 1);
    digitalWrite (led2, 1);
    digitalWrite (led3, 1);
    delay(150);
    myservo.write(0);
    myservo1.write(0);
    myservo2.write(0);
    digitalWrite (led1, 0);
    digitalWrite (led2, 0);
    digitalWrite (led3, 0);
    delay(200);


// SEGUNDO: REPETE TODO O CÓDIGO NOVAMENTE  XXXXXXXXXXXXXXXXXXXXXXX
  
   tocar(musica,duracao);
 
    myservo.write(90);
    myservo1.write(70);
    myservo2.write(60);
    delay(200);
    digitalWrite (led1, 1);
    digitalWrite (led2, 1);
    digitalWrite (led3, 1);
    delay(100);
    
    myservo.write(0);
    myservo1.write(0);
    myservo2.write(0);
    digitalWrite (led1, 0);
    digitalWrite (led2, 0);
    digitalWrite (led3, 1);
    delay(250);
  
    myservo.write(90);
    myservo1.write(70);
    myservo2.write(60);
    delay(100);
    digitalWrite (led1, 1);
    digitalWrite (led2, 1);
    digitalWrite (led3, 1);
    delay(150);
    myservo.write(0);
    myservo1.write(0);
    myservo2.write(0);
    digitalWrite (led1, 0);
    digitalWrite (led2, 0);
    digitalWrite (led3, 0);
    delay(100);
    
    tocar(starwars,dur);
   
    myservo.write(90);
    myservo1.write(70);
    myservo2.write(60);
    delay(100);
    digitalWrite (led1, 1);
    digitalWrite (led2, 1);
    digitalWrite (led3, 1);
    delay(100);
    
    myservo.write(0);
    myservo1.write(0);
    myservo2.write(0);
    digitalWrite (led1, 0);
    digitalWrite (led2, 0);
    digitalWrite (led3, 1);
    delay(250);
  
    myservo.write(90);
    myservo1.write(70);
    myservo2.write(60);
    delay(100);
    digitalWrite (led1, 1);
    digitalWrite (led2, 1);
    digitalWrite (led3, 1);
    delay(150);
    myservo.write(0);
    myservo1.write(0);
    myservo2.write(0);
    digitalWrite (led1, 0);
    digitalWrite (led2, 0);
    digitalWrite (led3, 0);
    delay(150);
     
   tocar(starwar,dura);
     
    myservo.write(90);
    myservo1.write(70);
    myservo2.write(60);
    delay(200);
    digitalWrite (led1, 1);
    digitalWrite (led2, 1);
    digitalWrite (led3, 1);
    delay(100);
    
    myservo.write(0);
    myservo1.write(0);
    myservo2.write(0);
    digitalWrite (led1, 0);
    digitalWrite (led2, 0);
    digitalWrite (led3, 1);
    delay(250);
      
    myservo.write(90);
    myservo1.write(70);
    myservo2.write(60);
    delay(100);
    digitalWrite (led1, 1);
    digitalWrite (led2, 1);
    digitalWrite (led3, 1);
    delay(150);
    myservo.write(0);
    myservo1.write(0);
    myservo2.write(0);
    digitalWrite (led1, 0);
    digitalWrite (led2, 0);
    digitalWrite (led3, 0);
    delay(200);


// TERCEIRO: REPETE TODO O CÓDIGO NOVAMENTE  XXXXXXXXXXXXXXXXXXXXXXX
  
   tocar(musica,duracao);
 
    myservo.write(90);
    myservo1.write(70);
    myservo2.write(60);
    delay(200);
    digitalWrite (led1, 1);
    digitalWrite (led2, 1);
    digitalWrite (led3, 1);
    delay(100);
    
    myservo.write(0);
    myservo1.write(0);
    myservo2.write(0);
    digitalWrite (led1, 0);
    digitalWrite (led2, 0);
    digitalWrite (led3, 1);
    delay(250);
  
    myservo.write(90);
    myservo1.write(70);
    myservo2.write(60);
    delay(100);
    digitalWrite (led1, 1);
    digitalWrite (led2, 1);
    digitalWrite (led3, 1);
    delay(150);
    myservo.write(0);
    myservo1.write(0);
    myservo2.write(0);
    digitalWrite (led1, 0);
    digitalWrite (led2, 0);
    digitalWrite (led3, 0);
    delay(100);
    
    tocar(starwars,dur);
   
    myservo.write(90);
    myservo1.write(70);
    myservo2.write(60);
    delay(100);
    digitalWrite (led1, 1);
    digitalWrite (led2, 1);
    digitalWrite (led3, 1);
    delay(100);
    
    myservo.write(0);
    myservo1.write(0);
    myservo2.write(0);
    digitalWrite (led1, 0);
    digitalWrite (led2, 0);
    digitalWrite (led3, 1);
    delay(250);
  
    myservo.write(90);
    myservo1.write(70);
    myservo2.write(60);
    delay(100);
    digitalWrite (led1, 1);
    digitalWrite (led2, 1);
    digitalWrite (led3, 1);
    delay(150);
    myservo.write(0);
    myservo1.write(0);
    myservo2.write(0);
    digitalWrite (led1, 0);
    digitalWrite (led2, 0);
    digitalWrite (led3, 0);
    delay(150);
     
   tocar(starwar,dura);
     
    myservo.write(90);
    myservo1.write(70);
    myservo2.write(60);
    delay(200);
    digitalWrite (led1, 1);
    digitalWrite (led2, 1);
    digitalWrite (led3, 1);
    delay(100);
    
    myservo.write(0);
    myservo1.write(0);
    myservo2.write(0);
    digitalWrite (led1, 0);
    digitalWrite (led2, 0);
    digitalWrite (led3, 1);
    delay(250);
      
    myservo.write(90);
    myservo1.write(70);
    myservo2.write(60);
    delay(100);
    digitalWrite (led1, 1);
    digitalWrite (led2, 1);
    digitalWrite (led3, 1);
    delay(150);
    
    // TERMINA O CODIGO COM OS ROBOZINHOS COM A BOCA ABERTA
    myservo.write(0);
    myservo1.write(0);
    myservo2.write(0);
    digitalWrite (led1, 0);
    digitalWrite (led2, 0);
    digitalWrite (led3, 0);

    myservo.write(90);
    myservo1.write(70);
    myservo2.write(60);
    delay(100);
    digitalWrite (led1, 1);
    digitalWrite (led2, 1);
    digitalWrite (led3, 1);
}

void loop(){
  // Não utilizado
}
// XXXXXXXXXXXXX FUNÇÃO QUE EXECUTA A CANÇÃO
  /*Adaptado do site MundoProjetado  
   Basta colocar as notas da musica em ordem na variável 'musica' abaixo
  No fim das notas escreva "Fim"
  Não use acentos e escreva a primeira letra maiuscula e a segunda minuscula
  Logo depois defina, tambem, em ordem, o tempo de cada nota
  NOTAS DISPONÍVEIS:
  Do, Re, Mi, Fa, Sol, La, Si, Do#, Re#, Fa#, Sol#, La#
*/


void tocar(char* mus[], int tempo[]){
  int tom = 0;
  for(int i = 0; mus[i]!="Fim";i++){
    if(mus[i] == "Do") tom = 262;
    if(mus[i] == "Re") tom = 294;
    if(mus[i] == "Mi") tom = 330;
    if(mus[i] == "Fa") tom = 349;
    if(mus[i] == "Sol") tom = 392;
    if(mus[i] == "La") tom = 440;
    if(mus[i] == "Si") tom = 494;
    if(mus[i] == "Do#") tom = 528;
    if(mus[i] == "Re#") tom = 622;
    if(mus[i] == "Fa#") tom = 370;
    if(mus[i] == "Sol#") tom = 415;
    if(mus[i] == "La#") tom = 466;
    if(mus[i] == "Pausa") tom = 0;
    tone(buz, tom, tempo[i]);
    delay(tempo[i]);
  }
}

Follow me

  • Facebook Clean

© 2015 by Paulo Adriano Ferrari.
Proudly created with
Wix.com