exercício 1.17
2 participantes
- Daiana
- Mensagens : 24
Data de inscrição : 23/03/2022
Escola : Lindaura Ribeiro Lucas
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
}
* 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
}
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
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
Permissões neste sub-fórum
Não podes responder a tópicos