Exercício 2.6 arrumado
Qua Jul 01, 2020 4:41 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 2 //pino 2 vai ser chamado led1
#define led2 3 //pino 3 vai ser chamado led2
#define buzzer 4 //pino 4 vai ser chamado buzzer
//DECLARAcAO DE VARIAVEIS GLOBAIS
bool estadoLed1, estadoLed2, estadoBuzzer = 0; //declaração de variavel
unsigned long tLed1, tLed2, tBuzzer = 0; //declaração de variavel
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //porta serial que abriu
pinMode(led1,OUTPUT); //led1 foi configurado como saida
pinMode(led2,OUTPUT); //led2 foi configurado como saida
pinMode(buzzer, OUTPUT); //buzzer foi configurado como saida
}
//FUNÇÕES COMPLEMENTARES
void debug(){
Serial.print("millis() = ");
Serial.print(millis());
Serial.print("tLed1 = ");
Serial.println(tLed1);
Serial.print("tLed1 = ");
Serial.println(tLed1);
}
//PROGRAMA PRINCIPAL
void loop() {
debug();
if(millis () > (tLed1 + 1000)){ //função if
tLed1 = millis(); //led com millis
estadoLed1 = !estadoLed1; //led com led negado
digitalWrite(led1, estadoLed1); //led com variavel
}
if (millis() > (tLed2 + 300)){ //função if
tLed2 = millis (); //led com millis
estadoLed2 = !estadoLed2; //led com led negado
digitalWrite(led2,estadoLed2); //led acende com variavel
}
if(millis() > (tBuzzer + 500)) //função if
tBuzzer = millis(); //buzzer com millis
estadoBuzzer = !estadoBuzzer; //estado buzzer
if(estadoBuzzer == 1){ //função if
tone(buzzer, 1500);
}else{ //função else
noTone(buzzer); //buzzer com notone
}
}
* 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 //pino 2 vai ser chamado led1
#define led2 3 //pino 3 vai ser chamado led2
#define buzzer 4 //pino 4 vai ser chamado buzzer
//DECLARAcAO DE VARIAVEIS GLOBAIS
bool estadoLed1, estadoLed2, estadoBuzzer = 0; //declaração de variavel
unsigned long tLed1, tLed2, tBuzzer = 0; //declaração de variavel
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //porta serial que abriu
pinMode(led1,OUTPUT); //led1 foi configurado como saida
pinMode(led2,OUTPUT); //led2 foi configurado como saida
pinMode(buzzer, OUTPUT); //buzzer foi configurado como saida
}
//FUNÇÕES COMPLEMENTARES
void debug(){
Serial.print("millis() = ");
Serial.print(millis());
Serial.print("tLed1 = ");
Serial.println(tLed1);
Serial.print("tLed1 = ");
Serial.println(tLed1);
}
//PROGRAMA PRINCIPAL
void loop() {
debug();
if(millis () > (tLed1 + 1000)){ //função if
tLed1 = millis(); //led com millis
estadoLed1 = !estadoLed1; //led com led negado
digitalWrite(led1, estadoLed1); //led com variavel
}
if (millis() > (tLed2 + 300)){ //função if
tLed2 = millis (); //led com millis
estadoLed2 = !estadoLed2; //led com led negado
digitalWrite(led2,estadoLed2); //led acende com variavel
}
if(millis() > (tBuzzer + 500)) //função if
tBuzzer = millis(); //buzzer com millis
estadoBuzzer = !estadoBuzzer; //estado buzzer
if(estadoBuzzer == 1){ //função if
tone(buzzer, 1500);
}else{ //função else
noTone(buzzer); //buzzer com notone
}
}
Re: Exercício 2.6 arrumado
Sáb Jul 04, 2020 11:38 am
Oi Daniel,
No simulide deu esse erro:
exercicio_aula:50:1: error: expected ';' before 'if' //Se maja de ingles vai ver que está escrito "esperado ; antes do if"
e apontou com uma bolinha azul a linha 49, certo olhando no programa está assim:
debug() <===== olhando no programa vai ver que aqui faltou um ponte e virgula
if(millis () > (tLed1 = 1000)){ //função if <=====aqui também tem um erro tLed1 deve ser somado a 1000 e não atribuido 1000 nessa variável
Depois na linha 54 tem outro erro de sintaxe:
if millis() > (tLed2 + 300)){ //função if // a função if deve ter a condição testada entre parenteses
Na linha 62 quando colocou o if deveria abrir o bloco com chaves e não com parenteses
Na linha 63 tem mais erro de sintaxe
tone(led2, 1500,) //função tone // que deve ser escrita tone(pino, frequencia); e se conseguir fazer o led enviar algum som ganha um beijo, ... do professor de educação fisica. rs
Entre as linhas 64 e 65 está tentando fechar duas vezes a função if() e para fechar o bloco usa somente uma chave
No final faltou fechar o bloco da função loop()
Chequei somente os erros de sintaxe, não avaliei se tem erros de semântica, na verdade só a do led buzzer.
Nota 5.0 porque muitos comentários estão mostrando que não entendeu o que o comando faz, O que escrever tem que fazer sentido com o programa ou com o comando.
No simulide deu esse erro:
exercicio_aula:50:1: error: expected ';' before 'if' //Se maja de ingles vai ver que está escrito "esperado ; antes do if"
e apontou com uma bolinha azul a linha 49, certo olhando no programa está assim:
debug() <===== olhando no programa vai ver que aqui faltou um ponte e virgula
if(millis () > (tLed1 = 1000)){ //função if <=====aqui também tem um erro tLed1 deve ser somado a 1000 e não atribuido 1000 nessa variável
Depois na linha 54 tem outro erro de sintaxe:
if millis() > (tLed2 + 300)){ //função if // a função if deve ter a condição testada entre parenteses
Na linha 62 quando colocou o if deveria abrir o bloco com chaves e não com parenteses
Na linha 63 tem mais erro de sintaxe
tone(led2, 1500,) //função tone // que deve ser escrita tone(pino, frequencia); e se conseguir fazer o led enviar algum som ganha um beijo, ... do professor de educação fisica. rs
Entre as linhas 64 e 65 está tentando fechar duas vezes a função if() e para fechar o bloco usa somente uma chave
No final faltou fechar o bloco da função loop()
Chequei somente os erros de sintaxe, não avaliei se tem erros de semântica, na verdade só a do led buzzer.
Nota 5.0 porque muitos comentários estão mostrando que não entendeu o que o comando faz, O que escrever tem que fazer sentido com o programa ou com o comando.
Permissões neste sub-fórum
Não podes responder a tópicos
|
|