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
Daniel Lukas
Mensagens : 62
Data de inscrição : 06/03/2020
Idade : 17
Escola : Rua Aníbal Silva
https://sayajin-gamers-store.myshopify.com/

Exercício 1.17 Empty Exercício 1.17

Ter Jun 16, 2020 5:10 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?
* Questão2: Quantos pinos de interrupção podem ser usados no arduino nano3?
* Questão3: Quantos modos de interrupção podem ser configurados no arduino?
*/

//DEFINICOES INICIAIS
#define ledpisca 6 //o pino 6 vai se chamar ledpisca
#define ledint 7 //o pino 7 vai se chamar ledint
#define teclaint 2 //o pino 2 vai se chamar teclaint
//DECLARAcAO DE VARIAVEIS
volatile bool estado = 0; //variavel estado

//FUNÇÕES INTERRUPÇÃO
void sinaliza(){
estado = ! estado; //estado fica negado
digitalWrite(ledint,estado); //acende o led com a variavel estado

}
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600);
pinMode(ledpisca,OUTPUT); //configurado o ledpisca como saida
pinMode(ledint,OUTPUT); //configurado o leddint como saida
pinMode(teclaint,INPUT_PULLUP); //configurado a teclaint como entrada
attachInterrupt (0,sinaliza,LOW); //interrupção
Serial.print("estado =");//estado é executado
Serial.println(estado);//comando e escrito na outra linha
}

//PROGRAMA PRINCIPAL
void loop() {
digitalWrite(ledpisca,HIGH); //ledpisca acende
delay(500); //tempo de espera
estado ++;
}
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.17 Empty Re: Exercício 1.17

Ter Jun 23, 2020 10:42 pm
Daniel o programa precisa ser revisado conforme enunciado.
- Pede um pisca, logo precisa fazer um pisca no loop()
- Pede que quando interromper o processador incrementar a variável, então o incremento da variável deve estar na função que trata interrupção;
- Pede para enviar para a porta serial o valor da variável. Aqui tem duas opções, ou coloca os comandos no loop() e vai enviar a cada volta, ou coloca na rotina de interrupção e envia somente quando interrompido. Uma certeza eu tenho, no setup() é que não vai esses comandos.

Nota 5.0

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