Resolvido 1.17
2 participantes
- Monica Moreno
- Mensagens : 685
Data de inscrição : 03/03/2020
Idade : 15
Escola : Colegio Lindaura Ribeiro Lucas
Resolvido 1.17
Seg Ago 23, 2021 10:06 am
/*
* 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? RISING
* Questão2: Quantos pinos de interrupção podem ser usados no arduino nano3?* D2- D3
* Questão3: Quantos modos de interrupção podem ser configurados no arduino? 4 modos de Interrupção são eles -> LOW CHANGE RISING FALLING
*/
//DEFINICOES INICIAIS
#define tecla 2 //Definido que pino 2 vai se chamar "tecla"
#define led 3 //Definido que pino 3 vai se chamar "led"
//DECLARAcAO DE VARIAVEIS
volatile bool estado = 0;//Declarado uma variável do tipo bool com um qualificador de variável
//FUNÇÕES INTERRUPÇÃO
void sinaliza() {
Serial.print("estado =");//Imprime na porta serial o texto
estado +2 ; // O valor do estado vai ser 2
Serial.print(estado);//Imprime o valor da variável estado
}
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //Porta serial Ligada
pinMode(led, OUTPUT);//Definido como saída
pinMode(tecla, INPUT_PULLUP);//Definido como entrada eom resistor de INPUT_PULLUP
attachInterrupt(0,sinaliza, FALLING); //Quando a tecla vir a zero roda a rotina(ISR) que é o sinaliza
}
//PROGRAMA PRINCIPAL
void loop() {
digitalWrite (led,HIGH); //Acende o Led
delay(300); //Interompe (300)
digitalWrite(led,LOW);//Apaga o Led
delay(300); //Interompe (300)
}
Bom Dia
Resolvido 1.17
* 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? RISING
* Questão2: Quantos pinos de interrupção podem ser usados no arduino nano3?* D2- D3
* Questão3: Quantos modos de interrupção podem ser configurados no arduino? 4 modos de Interrupção são eles -> LOW CHANGE RISING FALLING
*/
//DEFINICOES INICIAIS
#define tecla 2 //Definido que pino 2 vai se chamar "tecla"
#define led 3 //Definido que pino 3 vai se chamar "led"
//DECLARAcAO DE VARIAVEIS
volatile bool estado = 0;//Declarado uma variável do tipo bool com um qualificador de variável
//FUNÇÕES INTERRUPÇÃO
void sinaliza() {
Serial.print("estado =");//Imprime na porta serial o texto
estado +2 ; // O valor do estado vai ser 2
Serial.print(estado);//Imprime o valor da variável estado
}
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //Porta serial Ligada
pinMode(led, OUTPUT);//Definido como saída
pinMode(tecla, INPUT_PULLUP);//Definido como entrada eom resistor de INPUT_PULLUP
attachInterrupt(0,sinaliza, FALLING); //Quando a tecla vir a zero roda a rotina(ISR) que é o sinaliza
}
//PROGRAMA PRINCIPAL
void loop() {
digitalWrite (led,HIGH); //Acende o Led
delay(300); //Interompe (300)
digitalWrite(led,LOW);//Apaga o Led
delay(300); //Interompe (300)
}
Bom Dia
Resolvido 1.17
Re: Resolvido 1.17
Qui Set 02, 2021 10:08 pm
Monica testei o programa e não funcionou. Olha o que saiu na porta serial quando o processador foi interrompido varias vezes.
estado =0estado =0estado =0estado =0estado =0estado =0estado =0estado =0estado =0estado =0estado =0estado =0estado =0estado =0estado =0estado =0estado =0
Não está incrementando porque na função sinaliza() a variável de incremento está escrita errada, favor corrigir.
estado =0estado =0estado =0estado =0estado =0estado =0estado =0estado =0estado =0estado =0estado =0estado =0estado =0estado =0estado =0estado =0estado =0
Não está incrementando porque na função sinaliza() a variável de incremento está escrita errada, favor corrigir.
- Monica Moreno
- Mensagens : 685
Data de inscrição : 03/03/2020
Idade : 15
Escola : Colegio Lindaura Ribeiro Lucas
Re: Resolvido 1.17
Qua Out 27, 2021 10:00 am
/*
* 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? RISING
* Questão2: Quantos pinos de interrupção podem ser usados no arduino nano3?* D2- D3
* Questão3: Quantos modos de interrupção podem ser configurados no arduino? 4 modos de Interrupção são eles -> LOW CHANGE RISING FALLING
*/
//DEFINICOES INICIAIS
#define tecla 2 //Definido que pino 2 vai se chamar "tecla"
#define led1 3 //Definido que pino 3 vai se chamar "led1"
//DECLARAcAO DE VARIAVEIS
bool estado = 0;//Variavel bool estado = 0
//FUNÇÕES INTERRUPÇÃO
void sinaliza() {
Serial.print("estado=");//No caso a funcao for ativada ele ira colocar o valor da linha abaixo
estado=estado+1;//Aqui o valor do estado sera somado a 1
Serial.println(estado);//Ali o valor atribuido ao estado
}
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //Porta serial Ligada
pinMode(led1, OUTPUT);//Definido como saída
pinMode(tecla, INPUT_PULLUP);//Definido como entrada com resistor de INPUT_PULLUP
attachInterrupt(0,sinaliza, FALLING); //No caso da tecla for pressionada o evento de interrupção vai ser ligado
}
//PROGRAMA PRINCIPAL
void loop() {
digitalWrite (led,HIGH); //Acende o Led
delay(300); //Interompe (300)
digitalWrite(led,LOW);//Apaga o Led
delay(300); //Interompe (300)
}
Refeito
* 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? RISING
* Questão2: Quantos pinos de interrupção podem ser usados no arduino nano3?* D2- D3
* Questão3: Quantos modos de interrupção podem ser configurados no arduino? 4 modos de Interrupção são eles -> LOW CHANGE RISING FALLING
*/
//DEFINICOES INICIAIS
#define tecla 2 //Definido que pino 2 vai se chamar "tecla"
#define led1 3 //Definido que pino 3 vai se chamar "led1"
//DECLARAcAO DE VARIAVEIS
bool estado = 0;//Variavel bool estado = 0
//FUNÇÕES INTERRUPÇÃO
void sinaliza() {
Serial.print("estado=");//No caso a funcao for ativada ele ira colocar o valor da linha abaixo
estado=estado+1;//Aqui o valor do estado sera somado a 1
Serial.println(estado);//Ali o valor atribuido ao estado
}
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //Porta serial Ligada
pinMode(led1, OUTPUT);//Definido como saída
pinMode(tecla, INPUT_PULLUP);//Definido como entrada com resistor de INPUT_PULLUP
attachInterrupt(0,sinaliza, FALLING); //No caso da tecla for pressionada o evento de interrupção vai ser ligado
}
//PROGRAMA PRINCIPAL
void loop() {
digitalWrite (led,HIGH); //Acende o Led
delay(300); //Interompe (300)
digitalWrite(led,LOW);//Apaga o Led
delay(300); //Interompe (300)
}
Refeito
Re: Resolvido 1.17
Ter Nov 16, 2021 9:58 pm
Então, voce sabia que se no define colocar um nome para o pino esse mesmo nome deve ser usado em todo o programa?
Sabia que se ficar trocando os nomes não funciona?
Sabia também que quando, por acaso, o nome for trocado quando vai testar o compilador aponta o erro?
Sabia que se ficar trocando os nomes não funciona?
Sabia também que quando, por acaso, o nome for trocado quando vai testar o compilador aponta o erro?
- Monica Moreno
- Mensagens : 685
Data de inscrição : 03/03/2020
Idade : 15
Escola : Colegio Lindaura Ribeiro Lucas
Exercicio 1.17 Resolvido (Refeito)
Qua Mar 30, 2022 9:34 am
/*
* 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 tecla 2 //Definido que tecla vai se chamar pino 2
#define led1 3 //Definido que led1 vai se chamar pino 3
//DECLARAcAO DE VARIAVEIS
bool estado = 0;//Variavel bool estado igual a 0
//FUNÇÕES INTERRUPÇÃO
void sinaliza() {
Serial.print("estado=");//A função quando ativada vai colocar o valor na linha abaixo
estado=estado+1;//Nesta parte do programa o valor vai ser igual a 1
Serial.println(estado);//Valor atribuido do estado
}
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600);//Porta Serial ligada
pinMode(led1,OUTPUT);//Programado led1 como "Saida"
pinMode(tecla,INPUT_PULLUP);//Definido como entrada com resistor de INPUT_PULLUP
attachInterrupt(0,sinaliza, LOW); //No caso da tecla for pressionada o evento de interrupção vai ser ligado
}
//PROGRAMA PRINCIPAL
void loop() {
digitalWrite(led1,HIGH);//Liga o led1
delay(250);//Tempo
digitalWrite(led1,LOW);//Desliga o led1
delay(250);//Tempo
}
Refeito Testado e Funcionou
* 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 tecla 2 //Definido que tecla vai se chamar pino 2
#define led1 3 //Definido que led1 vai se chamar pino 3
//DECLARAcAO DE VARIAVEIS
bool estado = 0;//Variavel bool estado igual a 0
//FUNÇÕES INTERRUPÇÃO
void sinaliza() {
Serial.print("estado=");//A função quando ativada vai colocar o valor na linha abaixo
estado=estado+1;//Nesta parte do programa o valor vai ser igual a 1
Serial.println(estado);//Valor atribuido do estado
}
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600);//Porta Serial ligada
pinMode(led1,OUTPUT);//Programado led1 como "Saida"
pinMode(tecla,INPUT_PULLUP);//Definido como entrada com resistor de INPUT_PULLUP
attachInterrupt(0,sinaliza, LOW); //No caso da tecla for pressionada o evento de interrupção vai ser ligado
}
//PROGRAMA PRINCIPAL
void loop() {
digitalWrite(led1,HIGH);//Liga o led1
delay(250);//Tempo
digitalWrite(led1,LOW);//Desliga o led1
delay(250);//Tempo
}
Refeito Testado e Funcionou
- Monica Moreno
- Mensagens : 685
Data de inscrição : 03/03/2020
Idade : 15
Escola : Colegio Lindaura Ribeiro Lucas
Re: Resolvido 1.17
Qua Mar 30, 2022 9:39 am
* Questão1: Qual modo de interrupção que aciona o led quando a chave de interrupção muda de estado 0 para 1?
LOW
No meu Programa so funcionou LOW
* Questão2: Quantos pinos de interrupção podem ser usados no arduino nano3?* D2- D3
D2- D3
* Questão3: Quantos modos de interrupção podem ser configurados no arduino? 4 modos de Interrupção são eles ->
1°LOW
2°CHANGE
3°RISING
4°FALLING
LOW
No meu Programa so funcionou LOW
* Questão2: Quantos pinos de interrupção podem ser usados no arduino nano3?* D2- D3
D2- D3
* Questão3: Quantos modos de interrupção podem ser configurados no arduino? 4 modos de Interrupção são eles ->
1°LOW
2°CHANGE
3°RISING
4°FALLING
Re: Resolvido 1.17
Qui Abr 28, 2022 1:42 am
Oi Monica, vou dar nota 10.0 pelo programa e fazer uma correção nas suas respostas:
- Na quetão 1 a resposta seria falling, pois é na transição do estado e não na permanencia dele, que seria o caso do LOW.
Na pratica o resultado é bem parecido, ambos vão acionar a interrupção, a diferença é um que detecta durante a transição e depois libera a interrupção. Já o LOW mantém interrompido enquanto o pino estiver em nivel baixo.
-Na questão 2 os pinos são o int0 e int1, que são os mesmos que D2 e D3, mas quando está configurado a interrupcão os pinos não tem mais as funções de pinos digitais, daí o correto seria mudar a nomenclatura também. Outra situação que na pratica não muda nada, mais por questão de convenção.
- Na quetão 1 a resposta seria falling, pois é na transição do estado e não na permanencia dele, que seria o caso do LOW.
Na pratica o resultado é bem parecido, ambos vão acionar a interrupção, a diferença é um que detecta durante a transição e depois libera a interrupção. Já o LOW mantém interrompido enquanto o pino estiver em nivel baixo.
-Na questão 2 os pinos são o int0 e int1, que são os mesmos que D2 e D3, mas quando está configurado a interrupcão os pinos não tem mais as funções de pinos digitais, daí o correto seria mudar a nomenclatura também. Outra situação que na pratica não muda nada, mais por questão de convenção.
Permissões neste sub-fórum
Não podes responder a tópicos
|
|