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

Ir para baixo
avatar
Leonardo Santos
Mensagens : 22
Data de inscrição : 03/03/2020
Idade : 18

Execicio 1.16 Empty Execicio 1.16

Qua Out 07, 2020 2:29 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 ledPisca 6 //definindo que o led 6 vai se chamar ledPisca
#define ledInt 7 //definindo que o led 7 vai se chamar ledInt
#define teclaInt 2 //definindo que o led 2 vai se chamar teclaInt

//DECLARAcAO DE VARIAVEIS
volatile bool estado = 0; //programando uma variavel do tipo bool com um modificador volatile chamado estado com o valor 0 para garantir que ele vai utilizar o dado da memoria, não do registrador interno

//FUNÇÕES INTERRUPÇÃO
void sinaliza() {
 estado = !estado; //progamando que agora o valor da varialvel  estado é o negativo com ! exemplo se estiver em 1 vai para 0 se tiver em 0 vai para 1
 digitalWrite(ledInt, estado); //programando o ledInt com o valor atual do estado
}

//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode(ledPisca, OUTPUT); //programando o ledPisca como saida
pinMode(ledInt, OUTPUT); //programando o ledInt como saida
pinMode(teclaInt, INPUT_PULLUP); //Programado teclaInt como entrada
attachInterrupt(0,sinaliza,CHANGE); //programando que o pino int 0 vai ser o pino de interrupção com uma rotina chamada sinaliza, com o evento que eu escolhi CHANGE
}

//PROGRAMA PRINCIPAL
void loop() {
digitalWrite(ledPisca, HIGH); //programando que agora o ledPisca vai estar ligado
delay(500); //programando que agora tera um delay de 500 milissegundos
digitalWrite(ledPisca, LOW); //programando que agora o ledPisca vai estar desligado
delay(500); //programando que agora tera um delay de 500 milissegundos
}


Última edição por Leonardo Santos em Sex Nov 27, 2020 2:52 pm, editado 1 vez(es)
alvaro 123456
alvaro 123456
Mensagens : 476
Data de inscrição : 27/04/2019
Idade : 17

Execicio 1.16 Empty Re: Execicio 1.16

Qui Nov 19, 2020 5:38 pm
Oi Leonardo tudo bem,
para fechar a nota desse exercício com chave de ouro preciso saber se você aprendeu os tipos de interrupções e me refaça o comentário da variável volatile para que eu tenha certeza que aprendeu
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos