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
Cadu2005
Mensagens : 26
Data de inscrição : 03/03/2020

Ex 1.16 controle de led por interrupção Empty Ex 1.16 controle de led por interrupção

Qui Ago 13, 2020 1:05 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 //Define o pino 6 como ledPisca
#define ledInt 7 //Define o pino 7 como ledInt
#define teclaInt 2 //Define o pino 2 como teclaInt

//DECLARAcAO DE VARIAVEIS
volatile bool estado = 0; //Usa variavel para dar valor ao estado


//FUNÇÕES INTERRUPÇÃO
void sinaliza(){
estado = !estado; //Define o estado em negação ao valor "!"
digitalWrite(ledInt, estado); //Usa leitura digital para dar valor de ledInt = estado
}

//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode(ledPisca, OUTPUT); //Define o pino 6 como saida
pinMode(ledInt, OUTPUT); //Define o pino 7 como Saida
pinMode(teclaInt, INPUT_PULLUP); //Define a tecla int como tecla "cima"
attachInterrupt(0, sinaliza, LOW); //Usa função de interrupção para quando for pressionada tecla "desligar"
}

//PROGRAMA PRINCIPAL
void loop() {
digitalWrite(ledPisca, HIGH); //Define valor de 5 v assim ligando
delay(500); //Delay de 50 ms
digitalWrite(ledPisca, LOW); //Define valor de 0 v assim desligando
delay(500); //Delay de 50 ms
digitalWrite(ledInt, HIGH); //Define o valor de 5 v assim ligando
delay(500); //Delay de 50 ms
digitalWrite(ledInt, LOW); //Define o valor de 0 v assim desligando
}
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5039
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Ex 1.16 controle de led por interrupção Empty Re: Ex 1.16 controle de led por interrupção

Seg Ago 31, 2020 9:53 pm
Cadu, nesse programa precisa fazer as alterações abaixo:
- O ledInt não fica no programa principal, somente na função que trata interrupcão
- No setup() quando configurar o modo de interrupção usou o LOW, testa e depois testa os outros modos também

A intenção é perceber as formas de disparo e acionar o ledInt somente quando o processador for interrompido
Nota 6.0
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos