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 ++;
}
* 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 ++;
}
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
- 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
Permissões neste sub-fórum
Não podes responder a tópicos
|
|