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

Ir para baixo
Kricya Silva
Kricya Silva
Mensagens : 61
Data de inscrição : 03/03/2020
Idade : 21
Escola : Colegio Estadual Professora Lindaura Ribeiro Lucas

Exercício 1.16 Empty Exercício 1.16

Qui Jun 04, 2020 6:16 pm
/*
* CURSO DE ROBOTICA 2020
*
* Exercicio: 1.16
* Atividade: Testar as 4 formas de interrupção e seus comportamentos
* Descrição: Montar um pisca e quando pressionar uma tecla, interromper o arduino e acender outro led
* Hardware: Ligar uma tecla em D2 configurado como ENTRADA PULLUP e programa-la como interrupção, em outro pino digital um led configurado como SAÍDA e noutro pino o segundo LED
* Comandos: pinMode, digitalRead, digitalWrite, PULLUP, attachInterrupt
* Dica1: Use no modo de interrupção as opções LOW, CHANGE, RISING, FALLING e disserte sobre o comportamento de cada uma delas.
* Dica2: Para garantir a nota responda as questões abaixo:
* Questão1: Quando o pino de interrupção está configurado como FALLING, o buzzer é acionado quando a tecla2 for pressionada ou depressionada?
* Questáo2: Quando o pino de interrupção está configurado como CHANGE, em que condição o buzzer é acionado?
* Questão3: Caso em determinado trecho do programa não seja mais necessário tratar as interrupções qual o comando deve ser usado no programa?
*/

//DEFINICOES INICIAIS
#define pisca 6 //definido que pino 6 se chama pisca;
#define interrompe 7 //definido que pino 7 se chama pisca;
#define llave 2 //definido que pino 2 se chama llave;

//DECLARAcAO DE VARIAVEIS
bool estado = 0; //declarado uma variável do tipo bool;

//FUNÇÕES INTERRUPÇÃO
void sinaliza () {
estado = !estado; //Aqui está escrito que o estado é igual a negação do próprio estado;
digitalWrite (interrompe, estado); //aqui o pino interrompe é acionado, quando a tecla é pressionada.
}

//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode (pisca, OUTPUT); //pisca foi declarado como saída;
pinMode (interrompe, OUTPUT); //interrompe foi declarado como saída;
pinMode (llave, INPUT_PULLUP); //llave foi declarado como entrada;
attachInterrupt (0, sinaliza, LOW); //aqui é comando da interrupção;
}

//PROGRAMA PRINCIPAL
void loop() {
digitalWrite (pisca, HIGH); //pisca acende;
delay (600); //tempo aceso;
digitalWrite (pisca, LOW); //pisca apaga;
delay (900); //tempo apagado;
}

/* Questão1: Quando o pino de interrupção está configurado como FALLING, o buzzer é acionado quando a tecla2 for pressionada ou depressionada?
 pressionada
* Questáo2: Quando o pino de interrupção está configurado como CHANGE, em que condição o buzzer é acionado?
 quando a telca é pressonada e depressionada
* Questão3: Caso em determinado trecho do programa não seja mais necessário tratar as interrupções qual o comando deve ser usado no programa?
 noInterruputs().
*COMENTANDO AS FUNÇÕES DOS MEUS TESTES: Na funçõe FALLING, quando apertei a tecla acendeu o led da interrupção e quando soltei o lede continuo aceso. Mesmo apertando novamente não acontece nada. (sem a declaração da variável);
Quando se trata da função CHANGE quando a tecla é pressionada o led interruptor acendo e quando a tecla é despressionada o led da interrupção paga;
Já na função RISING, quando a tecla é pressionada não acontece nada, quando solto o led "interruptor" acende e quando pressiono novamente o led apaga;
No evento CHANGE, quando eu pressiono a tecla o lede da interrupção acende e quando solto a tecla o led apaga.
E por último o evento LOW. Esse evento me surpreendeu, o que acontece é que quando eu pressiono a tecla o lede interruptor começando do brilho baixo e vai ficando até chegar no máximo e depois volta pro claro, já o led que estava na função normal apaga e fico por um tempo assim e depois vai acendendo pouco a pouco. (isso tudo se eu ficar pressionando, seu eu só der um click a situação é outra).
*/
Refiz o exercício do zero acompanhando o vídeo. Espero está tudo correto dessa vez Smile


Última edição por Kricya Silva em Qui Jun 11, 2020 2:53 pm, editado 2 vez(es)
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5021
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 1.16 Empty Re: Exercício 1.16

Qua Jun 10, 2020 9:39 pm
Krycia, nesse programa fiquei com dúvida se está testando e fez funcionar o arduino.
Na função sinaliza() está tentando acender a tecla, e acho que não vai rolar. Logo o programa não funcionou.
Nas resposta a questão 3 era outro comando esperado. E para não tratar as interrupções e usou um comando que desconfigura o pino, ou desabilita a interrupção.
Nota 5.0
Kricya Silva
Kricya Silva
Mensagens : 61
Data de inscrição : 03/03/2020
Idade : 21
Escola : Colegio Estadual Professora Lindaura Ribeiro Lucas

Exercício 1.16 Empty .

Qui Jun 11, 2020 12:41 pm
Refiz tudo e testei, completando com as experiências que eu tive no simulide.
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5021
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 1.16 Empty Re: Exercício 1.16

Qui Jun 11, 2020 11:17 pm
Kricya, estranho seus comentários sobre o comportamento do programa. Deveria funcionar pois fiz e da certo. Seu programa está correto e deveria funcionar perfeitamente.
Testei e no modo FALLING funcionou perfeitamente, quando aperta acende e quando aperta a tecla novamente apaga.
Nota 10.0
Conteúdo patrocinado

Exercício 1.16 Empty Re: Exercício 1.16

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