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

Ir para baixo
Daiana
Daiana
Mensagens : 24
Data de inscrição : 23/03/2022
Escola : Lindaura Ribeiro Lucas

exercício 1.17 Empty exercício 1.17

Qui Jun 30, 2022 1:45 pm
/*
* CURSO DE ROBOTICA 2020
*
* Exercicio: 1.17
* Tema: Interrupção
* Atividade: Incrementar um contador e enviar para porta serial usando interrupção
* Descrição: Fazer um pisca com o led vermelho e ligar uma tecla na interrupção. Quando interromper o processador incrementar uma variável e enviar pela porta serial
* 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, inicializar a serial
* 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: A interrupção serve para avisar o processador algum evento externo, pode ser usado para disparar uma rotina de tratamento
* Dica3: Para garantir a nota responda as questões abaixo:
* Questão1: Qual modo de interrupção que aciona o led quando a chave de interrupção muda de estado 0 para 1?

* Resposta: RISING

* Questão2: Quantos pinos de interrupção podem ser usados no arduino nano3?

* Resposta: D2 e D3

* Questão3: Quantos modos de interrupção podem ser configurados no arduino?

* Resposta: 4 modos, LOW, CHANGE, RISING e FALLING

*/

//DEFINICOES INICIAIS
#define led1 3//define que o pino 3 vai se chamar led1
#define tecla 2//define que o pino 2 vai se chamar tecla

//DECLARAcAO DE VARIAVEIS
volatile bool estado = 0;//definida variável volatile bool como estado igual a 0

//FUNÇÕES INTERRUPÇÃO
void sinaliza(){
Serial.print("estado = ");//imprimi no monitor serial a frase "estado = "
estado = estado +1;//vai incrementar a variável estado
Serial.println(estado);//imprimi no monitor serial o valor da variável estado
}

//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600);//velocidade do motor serial
pinMode(led1, OUTPUT);//define o led1 como saída
pinMode(tecla, INPUT_PULLUP);//define a tecla como entrada
attachInterrupt(0,sinaliza,FALLING);//quando a tecla mudar para 0 vai rodar a rotina sinaliza
}

//PROGRAMA PRINCIPAL
void loop() {
digitalWrite(led1, HIGH);//liga o led1
delay(200);//pausa de 200ms
digitalWrite(led1, LOW);//desliga o led1
delay(200);//pausa de 200ms
}
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5798
Data de inscrição : 11/02/2019
Idade : 53
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

exercício 1.17 Empty Re: exercício 1.17

Ter Ago 02, 2022 11:48 pm
Oi Daiana, estava testando o seu exercício e vi que a programação está correta e os comentários também.
Mas quando apertava a tecla a variável não incrementava no terminal, isso acontecia porque declarou a variável estado como bool. Esse tipo de variável só guarda os numeros 0 e 1.
Nota 8.0
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos