2.6 resolvido
3 participantes
- Vitor Siqueira
- Mensagens : 89
Data de inscrição : 16/04/2022
Escola : Lindaura
2.6 resolvido
Seg Jul 24, 2023 4: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//define o pino 3 como led1
#define led2 4//define o pino 4 como led2
#define buzzer 13//define o pino 13 como buzzer
//DECLARAcAO DE VARIAVEIS GLOBAIS
bool estadoLed1, estadoLed2, estadoBuzzer = 0;//variavel de estado
unsigned long tled1, tled2, tbuzzer = 0;//variavel de tempo
//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode(led1, OUTPUT);//define o pino como saida
pinMode(led2, OUTPUT);//define o pino como saida
pinMode(buzzer, OUTPUT);//define o pino como saida
}
//FUNÇÕES COMPLEMENTARES
//PROGRAMA PRINCIPAL
void loop() {
if(millis() > (tled1 + 1000)) {//se o millis for superior ao valor do tled1 ou 1000 ele roda o programa
tled1 = millis();//o valor do tled1 é o mesmo do millis
estadoLed1 = !estadoLed1;//inverte o valor da variavel estadoLed1
digitalWrite(led1, estadoLed1);//acende o led1 com base no estado da variavel estadoLed1
}
if(millis() > (tled2 + 300)){ //se o valor do millis for superior ao valor do tled2 ou a 300 ele roda o programa
tled2 = millis();//o valor da variavel tled2 é o mesmo do millis
estadoLed2 = !estadoLed2;//inverte o valor da variavel estadoLed2
digitalWrite(led2, estadoLed2);//acende o led2 com base no estado da variavel estadoLed2
}
if(millis() > (tbuzzer + 500)){//se o valor do millis for superior a variavel tbuzzer (500) ele roda o programa
tbuzzer = millis();//o valor da variavel tbuzzer é igual ao valor do millis
estadoBuzzer = !estadoBuzzer;//inverte o atual estado do buzzer
if( estadoBuzzer == 1){//se o estado do buzzer for igual a 1 ele roda o programa
tone(buzzer, 1500);//emite um som na frequencia de 1500
}else {//se o valor for igual a 0 ele roda o programa
noTone(buzzer);//desliga o buzzer
}
}
}
* 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//define o pino 3 como led1
#define led2 4//define o pino 4 como led2
#define buzzer 13//define o pino 13 como buzzer
//DECLARAcAO DE VARIAVEIS GLOBAIS
bool estadoLed1, estadoLed2, estadoBuzzer = 0;//variavel de estado
unsigned long tled1, tled2, tbuzzer = 0;//variavel de tempo
//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode(led1, OUTPUT);//define o pino como saida
pinMode(led2, OUTPUT);//define o pino como saida
pinMode(buzzer, OUTPUT);//define o pino como saida
}
//FUNÇÕES COMPLEMENTARES
//PROGRAMA PRINCIPAL
void loop() {
if(millis() > (tled1 + 1000)) {//se o millis for superior ao valor do tled1 ou 1000 ele roda o programa
tled1 = millis();//o valor do tled1 é o mesmo do millis
estadoLed1 = !estadoLed1;//inverte o valor da variavel estadoLed1
digitalWrite(led1, estadoLed1);//acende o led1 com base no estado da variavel estadoLed1
}
if(millis() > (tled2 + 300)){ //se o valor do millis for superior ao valor do tled2 ou a 300 ele roda o programa
tled2 = millis();//o valor da variavel tled2 é o mesmo do millis
estadoLed2 = !estadoLed2;//inverte o valor da variavel estadoLed2
digitalWrite(led2, estadoLed2);//acende o led2 com base no estado da variavel estadoLed2
}
if(millis() > (tbuzzer + 500)){//se o valor do millis for superior a variavel tbuzzer (500) ele roda o programa
tbuzzer = millis();//o valor da variavel tbuzzer é igual ao valor do millis
estadoBuzzer = !estadoBuzzer;//inverte o atual estado do buzzer
if( estadoBuzzer == 1){//se o estado do buzzer for igual a 1 ele roda o programa
tone(buzzer, 1500);//emite um som na frequencia de 1500
}else {//se o valor for igual a 0 ele roda o programa
noTone(buzzer);//desliga o buzzer
}
}
}
- Monica Moreno
- Mensagens : 744
Data de inscrição : 03/03/2020
Idade : 15
Escola : Colegio Lindaura Ribeiro Lucas
Re: 2.6 resolvido
Ter Jul 25, 2023 2:59 pm
Boa Tarde Vitor
Nota 10.0
Nota 10.0
Permissões neste sub-fórum
Não podes responder a tópicos