- André Luis Caetano
- Mensagens : 41
Data de inscrição : 10/03/2020
Escola : São Critóvão
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
}
}
}
* 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
}
}
}
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
Nota 6.0
- André Luis Caetano
- Mensagens : 41
Data de inscrição : 10/03/2020
Escola : São Critóvão
Re: Exercício 2.6
Dom Jul 12, 2020 11:01 am
corrigido
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.
Vou colocar em vermelho os que estão em desacordo com o funcionamento.
Permissões neste sub-fórum
Não podes responder a tópicos
|
|