Robótica Livre
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Ir para baixo
avatar
André Luis Caetano
Mensagens : 41
Data de inscrição : 10/03/2020
Escola : São Critóvão

Exercício 2.6 Empty Exercício 2.6

Ter Jul 07, 2020 10:30 am
/*
* CURSO DE ROBOTICA 2020
*
* Exercicio: 2.6
* Tema: Função millis()
* Atividade: Intermitencias usando leds e buzzer
* Descrição: Utilizar dois leds piscando em tempos diferentes e um buzzer emitindo audio com intermitência em cadencia diferente dos leds
* Hardware: Ligar os leds e o buzzer em pinos digital configurado como SAÍDA
* Comandos: pinMode, IF, millis(), digitalWrite
* Dica1:A função millis() é um contador de tempo de execução, quando acionada retorna o tempo de execução em milissegundos
* Dica2:Substituir o delay() por millis() porque o delay() pára o fluxo do programa impedidndo o arduino de rodar outros programas
* Dica3:Usar variáveis para controlar os temporizadores, usar do tipo unsigned long para essa aplicação
* Dica4:Com a função if() comparar se os tempos foram atingidos e caso sim tomar as ações
* Dica5:Usar o operador de inversão e uma variável para controlar o estado dos leds
* Dica6:Para declarar mais de uma variável do mesmo tipo e inicializar com único valor pode fazer a declaração em única linha separando-as por virgula
*/

//DEFINICOES INICIAIS
#define led1 2  //led1 foi definido como pino 2
#define led2 3  //led2 foi definido como pino 3
#define buzzer 4  //buzzer foi definido como pino 4

//DECLARAcAO DE VARIAVEIS GLOBAIS
bool estadoLed1, estadoLed2, estadoBuzzer = 0;  //declaraçao das variaveis de estado
unsigned long tLed1, tLed2, tBuzzer = 0;  //declaraçao das variaveis de controle das funçoes

//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode(led1, OUTPUT);  //led1 foi programado como saida
pinMode(led2, OUTPUT);  //led2 foi programado como saida
pinMode(buzzer, OUTPUT);  //buzzer foi programado como saida
}

//FUNÇÕES COMPLEMENTARES


//PROGRAMA PRINCIPAL
//led1 = 1segundo, led2 = 300ms, buzzer = 500ms
void loop() {
  //funçao usada para piscar o led1 a cada 1 s  
if(millis() > (tLed1 + 1000)){  //se millis for maior que 1 s ele acende o led1
 tLed1 = millis();  //led1 vai acender de acordo com o tempo da variavel millis (maior que 1 s) aqui não acende o led,
 estadoLed1 = !estadoLed1;  //a cada 1 segundo ele inverte o estado do led1
 digitalWrite(led1, estadoLed1);  //led acende de acordo com seu estado a cada 1 s
}
 //funçao usada para piscar o led2 a cada 300 ms
if(millis() > (tLed2 + 300)){  //se millis for maior que 300 ms ele acende o led2  
 tLed2 = millis();  //led2 vai acender de acordo com o tempo da variavel millis (maior que 300 ms) imillis() não é uma variável
 estadoLed2 = !estadoLed2;  //a cada 300 ms ele inverte o estado do led2 na verdade aqui não tem a ver com o tempo, inverte sim, mas sempre que rodar esse bloco
 digitalWrite(led2, estadoLed2);  //led acende de acordo com seu estado a cada 300 ms
}
 //funçao usada para tocar o buzzer a cada 500 ms
if(millis() > (tBuzzer + 500)){  //se millis for maior que 500 ms ele toca  o buzzer
 tBuzzer = millis();  //buzzer vai tocar de acordo com o tempo da variavel millis (maior que 500 ms) rever esse comentário também
 estadoBuzzer = !estadoBuzzer;  //a cada 500 ms ele inverte o estado do buzzer
 if(estadoBuzzer == 1){  //se o estado do buzzer for igual a 1 ele toca o buzzer
 tone(buzzer, 1500);  //buzzer toca em uma frequencia de 1500
} else {
 noTone(buzzer);  //se nao ele nao toca
}
}
}


Última edição por André Luis Caetano em Dom Jul 12, 2020 11:01 am, editado 1 vez(es)
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5039
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 2.6 Empty Re: Exercício 2.6

Sex Jul 10, 2020 12:42 am
Andre, o programa está quase, faltou abrir r fechar os blocos das funções, vou colocar em vermelho no programa as correções que deve fazer.
Nota 6.0
avatar
André Luis Caetano
Mensagens : 41
Data de inscrição : 10/03/2020
Escola : São Critóvão

Exercício 2.6 Empty Re: Exercício 2.6

Dom Jul 12, 2020 11:01 am
corrigido
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5039
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 2.6 Empty Re: Exercício 2.6

Seg Jul 13, 2020 10:03 pm
Opa agora funcionou, vou dar nota 9.0 porque os comentários não estão bem alinhados com o funcionamento do programa.
Vou colocar em vermelho os que estão em desacordo com o funcionamento.
Conteúdo patrocinado

Exercício 2.6 Empty Re: Exercício 2.6

Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos