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

Ir para baixo
Thiaguin
Thiaguin
Mensagens : 176
Data de inscrição : 03/03/2020

Exercício 2.06 Intermitência usando millis() Empty Exercício 2.06 Intermitência usando millis()

Qua Ago 05, 2020 6:31 pm
/*
* 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 3 //Definido que o pino 3 irá se chamar led1
#define led2 4 //Definido que o pino 4 irá se chamar led2
#define buzzer 13 //Definido que o pino 13 irá se chamar buzzer

//DECLARAcAO DE VARIAVEIS GLOBAIS
bool estadoLed1,estadoLed2,estadoBuzzer=0;//Variável para serem atribuídos os valores dos estados dos leds e do buzzer
unsigned long tempoLed1,tempoLed2,tempoBuzzer=0;//Variável para serem atribuídos os valores dos tempos dos leds e do buzzer

//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode(led1,OUTPUT);//Configurado o pino 3 como saída
pinMode(led2,OUTPUT);//Configurado o pino 4 como saída
pinMode(buzzer,OUTPUT);//Configurado o pino 13 como saída
Serial.begin(9600);//A porta serial será inicializada
}

//FUNÇÕES COMPLEMENTARES
void debug(){
Serial.print("estadoLed1=");//Quando a função for ativada ele colocará o valor da linha debaixo
Serial.println(estadoLed1);//O valor da variável será enviado para o monitor serial
Serial.print("estadoLed2=");//Quando a função for ativada ele colocará o valor da linha debaixo
Serial.println(estadoLed2);//O valor da variável será enviado para o monitor serial
Serial.print("estadoBuzzer=");//Quando a função for ativada ele colocará o valor da linha debaixo
Serial.println(estadoBuzzer);//O valor da variável será enviado para o monitor serial
}

//PROGRAMA PRINCIPAL
//Led1=750ms,Led2=250ms,Buzzer=500ms
void loop() {
if(millis()>(tempoLed1+750)){//Se o valor do millis for maior que a soma da variável do tempo do led1 com 750 milesegundos , a função será verdadeira
tempoLed1=(millis);//A variável do tempo do led1 irá ser somada com valor do millis
estadoLed1=!estadoLed1;//O valor da variável do estado do led1 será o inverso dele
digitalWrite(led1,estadoLed1);//O valor da variável do estado do led1 será escrito no led1
}
if(millis()>(tempoLed2+250)){//Se o valor do millis for maior que a soma da variável do tempo do led2 com 250 milesegundos , a função será verdadeira
tempoLed2=(millis);//A variável do tempo do led2 irá ser somada com valor do millis
estadoLed2=!estadoLed2;//O valor da variável do estado do led2 será o inverso dele
digitalWrite(led2,estadoLed2);//O valor da variável do estado do led2 será escrito no led2
}
if(millis()>(tempoBuzzer+500)){//Se o valor do millis for maior que a soma da variável do tempo do buzzer com 500 milesegundos , a função será verdadeira
tempoBuzzer=(millis);//A variável do tempo do buzzer irá ser somada com valor do millis
estadoBuzzer=!estadoBuzzer;//O valor da variável do estado do buzzer será o inverso dele
if(estadoBuzzer==1){//Se o valor do estado do buzzer for igual a 1 , a função será verdadeira
tone(buzzer,440);//O buzzer será ativado com uma frequência de 440Hz(nota musical "lá")
}
else{//Se o valor do estdo do buzzer não for igual a 1 , irá rodar o bloco de notas abaixo
noTone(buzzer);//O buzzer será desativado
}
}
debug();//A função complementar será ativada
}
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.06 Intermitência usando millis() Empty Re: Exercício 2.06 Intermitência usando millis()

Qua Ago 12, 2020 12:07 am
Thiago, faltou um detalhe bem pequeno para fazer funcionar. o millis() escreve dessa forma.
Nota 6.0
Thiaguin
Thiaguin
Mensagens : 176
Data de inscrição : 03/03/2020

Exercício 2.06 Intermitência usando millis() Empty Re: Exercício 2.06 Intermitência usando millis()

Qua Ago 12, 2020 6:49 pm
/*
* 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 3 //Definido que o pino 3 irá se chamar led1
#define led2 4 //Definido que o pino 4 irá se chamar led2
#define buzzer 13 //Definido que o pino 13 irá se chamar buzzer

//DECLARAcAO DE VARIAVEIS GLOBAIS
bool estadoLed1,estadoLed2,estadoBuzzer=0;//Variável para serem atribuídos os valores dos estados dos leds e do buzzer
unsigned long tempoLed1,tempoLed2,tempoBuzzer=0;//Variável para serem atribuídos os valores dos tempos dos leds e do buzzer

//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode(led1,OUTPUT);//Configurado o pino 3 como saída
pinMode(led2,OUTPUT);//Configurado o pino 4 como saída
pinMode(buzzer,OUTPUT);//Configurado o pino 13 como saída
Serial.begin(9600);//A porta serial será inicializada
}

//FUNÇÕES COMPLEMENTARES
void debug(){
Serial.print("estadoLed1=");//Quando a função for ativada ele colocará o valor da linha debaixo
Serial.println(estadoLed1);//O valor da variável será enviado para o monitor serial
Serial.print("estadoLed2=");//Quando a função for ativada ele colocará o valor da linha debaixo
Serial.println(estadoLed2);//O valor da variável será enviado para o monitor serial
Serial.print("estadoBuzzer=");//Quando a função for ativada ele colocará o valor da linha debaixo
Serial.println(estadoBuzzer);//O valor da variável será enviado para o monitor serial
}

//PROGRAMA PRINCIPAL
//Led1=750ms,Led2=250ms,Buzzer=500ms
void loop() {
if(millis()>(tempoLed1+750)){//Se o valor do millis for maior que a soma da variável do tempo do led1 com 750 milesegundos , a função será verdadeira
tempoLed1=(millis());//A variável do tempo do led1 irá ser somada com valor do millis
estadoLed1=!estadoLed1;//O valor da variável do estado do led1 será o inverso dele
digitalWrite(led1,estadoLed1);//O valor da variável do estado do led1 será escrito no led1
}
if(millis()>(tempoLed2+250)){//Se o valor do millis for maior que a soma da variável do tempo do led2 com 250 milesegundos , a função será verdadeira
tempoLed2=(millis());//A variável do tempo do led2 irá ser somada com valor do millis
estadoLed2=!estadoLed2;//O valor da variável do estado do led2 será o inverso dele
digitalWrite(led2,estadoLed2);//O valor da variável do estado do led2 será escrito no led2
}
if(millis()>(tempoBuzzer+500)){//Se o valor do millis for maior que a soma da variável do tempo do buzzer com 500 milesegundos , a função será verdadeira
tempoBuzzer=(millis());//A variável do tempo do buzzer irá ser somada com valor do millis
estadoBuzzer=!estadoBuzzer;//O valor da variável do estado do buzzer será o inverso dele
if(estadoBuzzer==1){//Se o valor do estado do buzzer for igual a 1 , a função será verdadeira
tone(buzzer,440);//O buzzer será ativado com uma frequência de 440Hz(nota musical "lá")
}
else{//Se o valor do estdo do buzzer não for igual a 1 , irá rodar o bloco de notas abaixo
noTone(buzzer);//O buzzer será desativado
}
}
debug();//A função complementar será ativada
}
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.06 Intermitência usando millis() Empty Re: Exercício 2.06 Intermitência usando millis()

Qui Ago 13, 2020 10:40 pm
Viu como funciona, nota 10.0.
Conteúdo patrocinado

Exercício 2.06 Intermitência usando millis() Empty Re: Exercício 2.06 Intermitência usando millis()

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