- Ana Clara Leschnhak
- Mensagens : 117
Data de inscrição : 03/03/2023
Idade : 12
Escola : Colégio Estadual Colônia Murici
exercício 2.06 resolvido
Qui Out 05, 2023 11:25 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 //define led e pino
#define led2 3 //define led e pino
#define buzzer 4 //define buzzer e pino
//DECLARAcAO DE VARIAVEIS GLOBAIS
bool estadoLed1, estadoLed2, estadoBuzzer = 0; //define a variavel
unsigned long tLed1, tLed2, tBuzzer = 0; //define a variavel
//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode(led1, OUTPUT); //configura o led como saida
pinMode(led2, OUTPUT); //configura o led como saida
pinMode(buzzer, OUTPUT); //configura o buzzer como saida
}
//FUNÇÕES COMPLEMENTARES
//PROGRAMA PRINCIPAL
void loop() {
//led1 = 1segundo , led2 = 300ms , buzzer 500ms
if(millis() > (tLed1 + 1000)){ //if millis é maior
tLed1 = millis(); //tLed1 vira millis
estadoLed1 = !estadoLed1; //inverte estadoLed1
digitalWrite(led1, estadoLed1); //estadoLed1 acende o led
}
if(millis() > (tLed2 + 300)){//if millis é maior
tLed2 = millis(); //tLed2 vira millis
estadoLed2 = !estadoLed2; //inverte estadoLed2
digitalWrite(led2, estadoLed2); //estadoLed2 acende o led
}
if(millis() > (tBuzzer + 500)){ //if millis e maior
tBuzzer = millis(); //tBuzzer vira millis
estadoBuzzer = !estadoBuzzer; //inverte estadoBuzzer
if(estadoBuzzer == 1){ //o estadoBuzzer é = a a1
tone(buzzer, 1500); //define o tempo do buzzer
} else { //
noTone(buzzer); //para o buzzer
}
}
}
Re: exercício 2.06 resolvido
Sáb Nov 11, 2023 10:49 am
Oi Ana, o programa está correto mas tem uma questão no entendimento do buzzer que vou corrigir.
estadoBuzzer = !estadoBuzzer; //inverte estadoBuzzer // Essa variável de controle, ela é alterada a cada ciclo porque é usado para cionar o buzzer
if(estadoBuzzer == 1){ //o estadoBuzzer é = a a1 // aqui compara se o estado é 1 para acionar, a linha anterior fica alternando esse valor, num ciclo é 0 e noutro é 1
tone(buzzer, 1500); //define o tempo do buzzer //com esse comando está definindo a frequencia do buzzer, o tempo não está definido, vai parar somente quando rodar o notone
Nota 10.0
estadoBuzzer = !estadoBuzzer; //inverte estadoBuzzer // Essa variável de controle, ela é alterada a cada ciclo porque é usado para cionar o buzzer
if(estadoBuzzer == 1){ //o estadoBuzzer é = a a1 // aqui compara se o estado é 1 para acionar, a linha anterior fica alternando esse valor, num ciclo é 0 e noutro é 1
tone(buzzer, 1500); //define o tempo do buzzer //com esse comando está definindo a frequencia do buzzer, o tempo não está definido, vai parar somente quando rodar o notone
Nota 10.0
Permissões neste sub-fórum
Não podes responder a tópicos
|
|