AULA 11 - Microcontroladores - Eng

De IFSC
Revisão de 07h50min de 27 de setembro de 2018 por imported>Fargoud (→‎Partes Mecânicas)
Ir para navegação Ir para pesquisar

<< Página do curso



Trabalho Davi

Protótipo

Hardware/Eletrônica

Partes Mecânicas

Projeto 2 Alimentador de peixes Davi

Firmware

#include <Stepper.h> 
int led1 = 2, led2 = 3;  //associa o primeiro led à porta digital 1 e o segundo, à porta 2
const int buttonPin = 4;     // o numero do pino do botão
int buttonState = 0;         // variavel para ler o estado do botao
int flag =0;
const int stepsPerRevolution = 500; 
Stepper myStepper(stepsPerRevolution, 8,10,9,11); 

void setup() 
{
  myStepper.setSpeed(60); //Determina a velocidade inicial do motor
  pinMode(led1, OUTPUT); //configura porta digital 1 como saída
  pinMode(led2,OUTPUT);  //configura porta digital 2 como saída
  pinMode(buttonPin, INPUT); //configura porta digital 3 como entrada
 }

void loop() 
{
 // faz a leitura do valor do botao:
 buttonState = digitalRead(buttonPin);
 // verifica se o botao esta pressionado.
 // em caso positivo, buttonState é HIGH:
 if (buttonState == LOW && flag==1)
   {    
       //LEDs apagados:    
       digitalWrite(led1, LOW); //APAGADO o primeiro led
       digitalWrite(led2, LOW); //APAGADO o segundo led
       flag==0;
    }
       if (buttonState == HIGH && flag==0)
         {    
            //LEDs acendem: PARA CADA LED QUE ACENDE EQUIVALE A 1H    
            digitalWrite(led1, HIGH); //ACENDE o primeiro led
                 delay(2000);
            digitalWrite(led2, HIGH); //ACENDE o segundo led
                 delay(3000);
            flag==1;
           
   // pisca os LEDs: INDICANDO QUE ESTÁ NA HORA DO ANIMAL COMER
           digitalWrite(led1, LOW); //APAGA o primeiro led
           digitalWrite(led2, LOW); //APAGA o segundo led
                 delay(500);
           digitalWrite(led1, HIGH); //acende o primeiro led
           digitalWrite(led2, HIGH); //acende o segundo led
                 delay(500);
           digitalWrite(led1, LOW); //APAGA o primeiro led
           digitalWrite(led2, LOW); //APAGA o segundo led
                 delay(500);
           digitalWrite(led1, HIGH); //acende o primeiro led
           digitalWrite(led2, HIGH); //acende o segundo led
                 delay(500);
           digitalWrite(led1, LOW); //APAGA o primeiro led
           digitalWrite(led2, LOW); //APAGA o segundo led
                 delay(500);
           digitalWrite(led1, HIGH); //acende o primeiro led
           digitalWrite(led2, HIGH); //acende o segundo led
                 delay(500);
           digitalWrite(led1, LOW); //APAGA o primeiro led
           digitalWrite(led2, LOW); //APAGA o segundo led
                 delay(500);
           digitalWrite(led1, HIGH); //acende o primeiro led
           digitalWrite(led2, HIGH); //acende o segundo led
           //Gira o motor no sentido horario a 360 graus
                     for (int i = 0; i<=3; i++)
                           {
                               myStepper.step(-2048); 
                                 delay(2000);
                            }
           digitalWrite(led1, LOW); //APAGA o primeiro led
           digitalWrite(led2, LOW); //APAGA o segundo led
                            
         }
}

Trabalho Júlia

Protótipo

Hardware/Eletrônica

MIC2Proj2Julia.png

Partes Mecânicas

Vídeos do dispositivo:

Parte 1

Parte 2

Firmware

 #include <LiquidCrystal.h> //Inclui biblioteca do LCD
 #include <Stepper.h> 
   
 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); 
 const int stepsPerRevolution = 500;
 //Inicializa a biblioteca utilizando as portas de 8,9,10 e 13 para 
 //ligacao ao motor 
 Stepper myStepper(stepsPerRevolution, 8,10,9,13);  
  
 int segundo,minuto,hora,dia,mes,ano; 
 unsigned long UtlTime; 
  
 void setup(){ 
  //Determina a velocidade inicial do motor 
   myStepper.setSpeed(60);
    
   //Para o LCD 
   UtlTime=0;   
   minuto=0;   
   hora=0;   
   dia=0;   
   mes=0;   
   ano=0;   
   Serial.begin(9600); 
   lcd.begin(16, 2);      
   
   lcd.setCursor(0,0);   
   lcd.print(" Data e hora ");   
   lcd.setCursor(0,1);   
   lcd.print(" com Arduino");   
   delay (2000); 
 
   //Configura o minuto   
   lcd.clear();   
   lcd.setCursor(0,0);   
   lcd.print("Minuto: ");   
   Serial.print("\nEntre Minuto:");  
   while(minuto==0){     
     if (Serial.available() > 0){       
     minuto= Serial.parseInt();
     Serial.print(minuto);     
     }   
   }   
   lcd.print(minuto);   
   delay(1000);

    //Configura a hora   
   lcd.clear();   
   lcd.setCursor(0,0);   
   lcd.print("Hora: ");   
   Serial.print("\nEntre Hora:"); 
   while(hora==0){     
     if (Serial.available() > 0){       
     hora= Serial.parseInt();
     Serial.print(hora);     
     }   
   }   
   lcd.print(hora);   
   delay(1000); 

   //Configura o Dia   
   lcd.clear();   
   lcd.setCursor(0,0);   
   lcd.print("Dia: ");   
   Serial.print("\nEntre Dia:");   
   while(dia==0)   
   {     
     if (Serial.available() > 0){       
       dia= Serial.parseInt();
        Serial.print(dia);     
     }   
   }   
   lcd.print(dia);   
   delay(1000);    
   
   //Configura o mês   
   lcd.clear();   
   lcd.setCursor(0,0);   
   lcd.print("Mes: ");   
   Serial.print("\nEntre Mes:");  
   while(mes==0)   
   {     
     if (Serial.available() > 0){       
       mes= Serial.parseInt();
        Serial.print(mes);     
     }   
   }   
   lcd.print(mes);   
   delay(1000);    
   
   //Configura o Ano   
   lcd.clear();   
   lcd.setCursor(0,0);   
   lcd.print("Ano: ");   
   Serial.print("\nEntre ano:");   
   while(ano==0){     
     if (Serial.available() > 0){       
       ano= Serial.parseInt();
       Serial.print(ano);    
     }   
   }   
   lcd.print(ano);   
   delay(1000);    
   lcd.clear(); 
 }
 
 void EscreveDataHora(){  
   if(millis()-UtlTime<0){     
     UtlTime=millis();   
   }   
   else{     
     segundo=int((millis()-UtlTime)/1000);   
   }   
   if(segundo>59){     
     segundo=00;
     lcd.clear();     
     minuto++;     
     UtlTime=millis();     
     if(minuto>59){       
       hora++;
       lcd.clear();       
       minuto=00;       
       if(hora>23){         
         dia++;         
         hora=00;         
         if(mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12){           
           if(dia>31){             
             dia=1;             
             mes++;             
             if(mes>12){               
              ano++;               
              mes=1;             
             } 
           }       
         }         
       else if(mes==2){           
          if(ano%400==0){             
           if(dia>29){               
             dia=1;               
             mes++;             
           }           
          }         
           else if((ano%4==0)&&(ano%100!=0)){             
             if(dia>29){              
               dia=1;               
               mes++;             
             }           
           }           
           else{             
             if(dia>28){               
               dia=1;               
               mes++;             
             }           
           }         
         }         
       else{           
         if(dia>30){             
           dia=1;             
           mes++;           
         }         
       }      
     }     
   }   
 }    
   lcd.setCursor(0,0);   
   lcd.print("Data ");   
   lcd.print(dia);   
   lcd.print("/");   
   lcd.print(mes);   
   lcd.print("/");   
   lcd.print(ano);  
   lcd.setCursor(0,1);   
   lcd.print("Hora ");   
   lcd.print(hora);   
   lcd.print(":");   
   lcd.print(minuto);   
   lcd.print(":");   
   lcd.print(segundo);
 }

 void SelecionaHoraAlimentaPET(){
   //Seleciona a hora da refeição
   int h=15;
   //Seleciona os minutos da refeição
   int m=15;
     
   //Mostra no DISPLAY
   if(hora==h&&minuto==m&&segundo>=30){
     lcd.clear(); 
     lcd.setCursor(0,0);
     lcd.print(" Hora da racao ");
     lcd.setCursor(0,1);
     lcd.print(" Bom apetite! ");
     //Liga o motor
     LigaMotor();
   }
   else{
      lcd.clear();
      EscreveDataHora();
   }
 }
 void LigaMotor(){
 //O motor faz 2 giros completos
  for (int i = 0; i<=2; i++)
  {
    myStepper.step(2048); 
    delay(2000);
  }
  delay(2000);
}

  void loop(){ 
   EscreveDataHora();
   SelecionaHoraAlimentaPET();
 }

Trabalho Nelson

Protótipo

Hardware/Eletrônica

Partes Mecânicas

[ Projeto 2 Alimentador de gatos Nelson]

Firmware


Trabalho Thiago

Protótipo

MIC2Proj2Thiago1.png
MIC2Proj2Thiago2.png

Hardware/Eletrônica

Vídeo Projeto 2 Alimentador de peixes Thiago

Partes Mecânicas

Firmware

 #include <LiquidCrystal.h> //Inclui biblioteca do LCD
 #include <Stepper.h> 
     
 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); 
 const int stepsPerRevolution = 500;
 //Inicializa a biblioteca utilizando as portas de 8,9,10 e 13 para 
 //ligacao ao motor 
 Stepper myStepper(stepsPerRevolution, 8,10,9,13);  
 
 int segundo,minuto,hora,dia,mes,ano; 
 unsigned long UtlTime; 
 
 void setup(){ 
  //Determina a velocidade inicial do motor 
   myStepper.setSpeed(60);
   
   //Para o LCD 
   UtlTime=0;   
   minuto=0;   
   hora=0;   
   dia=0;   
   mes=0;   
   ano=0;   
   Serial.begin(9600); 
   lcd.begin(16, 2);      
   
   lcd.setCursor(0,0);   
   lcd.print(" Data e hora ");   
   lcd.setCursor(0,1);   
   lcd.print(" com Arduino");   
   delay (2000); 
  
   //Configura o minuto   
   lcd.clear();   
   lcd.setCursor(0,0);   
   lcd.print("Minuto: ");   
   Serial.print("\nEntre Minuto:");  
   while(minuto==0){     
     if (Serial.available() > 0){       
     minuto= Serial.parseInt();
     Serial.print(minuto);     
     }   
   }   
   lcd.print(minuto);   
   delay(1000);

    //Configura a hora   
   lcd.clear();   
   lcd.setCursor(0,0);   
   lcd.print("Hora: ");   
   Serial.print("\nEntre Hora:"); 
   while(hora==0){     
     if (Serial.available() > 0){       
     hora= Serial.parseInt();
     Serial.print(hora);     
     }   
   }   
   lcd.print(hora);   
   delay(1000); 
 
   //Configura o Dia   
   lcd.clear();   
   lcd.setCursor(0,0);   
   lcd.print("Dia: ");   
   Serial.print("\nEntre Dia:");   
   while(dia==0)   
   {     
     if (Serial.available() > 0){       
       dia= Serial.parseInt();
        Serial.print(dia);     
     }   
   }   
   lcd.print(dia);   
   delay(1000);    
   
   //Configura o mês   
   lcd.clear();   
   lcd.setCursor(0,0);   
   lcd.print("Mes: ");   
   Serial.print("\nEntre Mes:");  
   while(mes==0)   
   {     
     if (Serial.available() > 0){       
       mes= Serial.parseInt();
        Serial.print(mes);     
     }   
   }   
   lcd.print(mes);   
   delay(1000);    
   
   //Configura o Ano   
   lcd.clear();   
   lcd.setCursor(0,0);   
   lcd.print("Ano: ");   
   Serial.print("\nEntre ano:");   
   while(ano==0){     
     if (Serial.available() > 0){       
       ano= Serial.parseInt();
       Serial.print(ano);    
     }   
   }   
   lcd.print(ano);   
   delay(1000);    
   lcd.clear(); 
 }
 
 void EscreveDataHora(){  
   if(millis()-UtlTime<0){     
     UtlTime=millis();   
   }   
   else{     
     segundo=int((millis()-UtlTime)/1000);   
   }   
   if(segundo>59){     
     segundo=00;
     lcd.clear();     
     minuto++;     
     UtlTime=millis();     
     if(minuto>59){       
       hora++;
       lcd.clear();       
       minuto=00;       
       if(hora>23){         
         dia++;         
         hora=00;         
         if(mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12){           
           if(dia>31){             
             dia=1;             
             mes++;             
             if(mes>12){               
              ano++;               
              mes=1;             
             } 
           }       
         }         
       else if(mes==2){           
          if(ano%400==0){             
           if(dia>29){               
             dia=1;               
             mes++;             
           }           
          }         
           else if((ano%4==0)&&(ano%100!=0)){             
             if(dia>29){              
               dia=1;               
               mes++;             
             }           
           }           
           else{             
             if(dia>28){               
               dia=1;               
               mes++;             
             }           
           }         
         }         
       else{           
         if(dia>30){             
           dia=1;             
           mes++;           
         }         
       }      
     }     
   }   
 }    
   lcd.setCursor(0,0);   
   lcd.print("Data ");   
   lcd.print(dia);   
   lcd.print("/");   
   lcd.print(mes);   
   lcd.print("/");   
   lcd.print(ano);  
   lcd.setCursor(0,1);   
   lcd.print("Hora ");   
   lcd.print(hora);   
   lcd.print(":");   
   lcd.print(minuto);   
   lcd.print(":");   
   lcd.print(segundo);
 }
  
 void SelecionaHoraAlimentaPET(){
   //Seleciona a hora da refeição
   int h=15;
   //Seleciona os minutos da refeição
   int m=15;
   
   //Mostra no DISPLAY
   if(hora==h&&minuto==m&&segundo>=30){
     lcd.clear(); 
     lcd.setCursor(0,0);
     lcd.print(" Hora da racao ");
     lcd.setCursor(0,1);
     lcd.print(" Bom apetite! ");
     //Liga o motor
     LigaMotor();
   }
   else{
      lcd.clear();
      EscreveDataHora();
   }
 }
 void LigaMotor(){
 //O motor faz 2 giros completos
  for (int i = 0; i<=2; i++)
  {
    myStepper.step(2048); 
    delay(2000);
  }
  delay(2000);
}
 
  void loop(){ 
   EscreveDataHora();
   SelecionaHoraAlimentaPET();
 }

Trabalho Vitor

Protótipo

Hardware/Eletrônica

Partes Mecânicas

Firmware


<< Página do curso

< Projeto 2 - Alimentador automático de pets AULA 11 - Projeto 2 - Protótipos dos Alunos - Apresentação Projeto 3 - Sistema de segurança residencial >