- André Luis Caetano
- Mensagens : 41
Data de inscrição : 10/03/2020
Escola : São Critóvão
Exercício 1.17
Sex Jun 05, 2020 10:35 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? Change
* Questão2: Quantos pinos de interrupção podem ser usados no arduino nano3? O pino 2 e 3
* Questão3: Quantos modos de interrupção podem ser configurados no arduino? 4
*/
//DEFINICOES INICIAIS
#define ledPisca 6//foi definido que o pino 6 vai se chamar ledPisca
#define ledInt 7//foi definido que o pino 7 vai se chamar led Interrupção
#define teclaInt 2//foi definido que o pino 2 vai se chamar tecla Interrupção
//DECLARAcAO DE VARIAVEIS
volatile bool estado = 0;//foi declarada um variavel do tipo bool com o nome estado
byte count;
//FUNÇÕES INTERRUPÇÃO
void sinaliza (){
estado = !estado;//estado = !estado representa um posiçao inversa
debug();
digitalWrite(ledInt, estado);//ledInt foi configurado para ficar apagado, ate que se ative uma funçao de interrupçao, pressionando o botao (depende da funçao)
}
void debug () {
Serial.print("count = "); //comando para enviar o valor a porta serial
Serial.println(count++); // comando para incrementar o valor a cada interrupção
}
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //inicia e configura a serial
pinMode(ledPisca, OUTPUT); //ledPisca foi configurado como saida
pinMode(ledInt, OUTPUT); //ledInt foi configurado como saida
pinMode(teclaInt,INPUT_PULLUP); //teclaInt foi configurada como entrada
attachInterrupt(0, sinaliza, FALLING); //FALLING, LOW, CHANGE, RISING
}
//PROGRAMA PRINCIPAL
void loop() {
digitalWrite(ledPisca, HIGH); //ledPisca aceso
delay(500); //pequena pausa do estado aceso
digitalWrite(ledPisca, LOW); //ledPisca apagado
delay(500); //pequena pausa do estado apagado
}
* 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? Change
* Questão2: Quantos pinos de interrupção podem ser usados no arduino nano3? O pino 2 e 3
* Questão3: Quantos modos de interrupção podem ser configurados no arduino? 4
*/
//DEFINICOES INICIAIS
#define ledPisca 6//foi definido que o pino 6 vai se chamar ledPisca
#define ledInt 7//foi definido que o pino 7 vai se chamar led Interrupção
#define teclaInt 2//foi definido que o pino 2 vai se chamar tecla Interrupção
//DECLARAcAO DE VARIAVEIS
volatile bool estado = 0;//foi declarada um variavel do tipo bool com o nome estado
byte count;
//FUNÇÕES INTERRUPÇÃO
void sinaliza (){
estado = !estado;//estado = !estado representa um posiçao inversa
debug();
digitalWrite(ledInt, estado);//ledInt foi configurado para ficar apagado, ate que se ative uma funçao de interrupçao, pressionando o botao (depende da funçao)
}
void debug () {
Serial.print("count = "); //comando para enviar o valor a porta serial
Serial.println(count++); // comando para incrementar o valor a cada interrupção
}
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //inicia e configura a serial
pinMode(ledPisca, OUTPUT); //ledPisca foi configurado como saida
pinMode(ledInt, OUTPUT); //ledInt foi configurado como saida
pinMode(teclaInt,INPUT_PULLUP); //teclaInt foi configurada como entrada
attachInterrupt(0, sinaliza, FALLING); //FALLING, LOW, CHANGE, RISING
}
//PROGRAMA PRINCIPAL
void loop() {
digitalWrite(ledPisca, HIGH); //ledPisca aceso
delay(500); //pequena pausa do estado aceso
digitalWrite(ledPisca, LOW); //ledPisca apagado
delay(500); //pequena pausa do estado apagado
}
Re: Exercício 1.17
Ter Jun 09, 2020 9:33 pm
Oi André, Tem uns detalhes nesse programa que precisa revisar:
- As questões respondidas estão corretas, mas faltou a questão1, isso deduz 2 pontos da nota
- No video pedi para fazer a variável count ser enviada para o terminal, esse código não foi incluido, menos 2 pontos
Nota 6.0
- As questões respondidas estão corretas, mas faltou a questão1, isso deduz 2 pontos da nota
- No video pedi para fazer a variável count ser enviada para o terminal, esse código não foi incluido, menos 2 pontos
Nota 6.0
- André Luis Caetano
- Mensagens : 41
Data de inscrição : 10/03/2020
Escola : São Critóvão
Exercício 1.17
Qui Jun 11, 2020 10:21 pm
Corrigido.
Última edição por André Luis Caetano em Qui Jun 11, 2020 10:43 pm, editado 3 vez(es)
Última edição por André Luis Caetano em Qui Jun 11, 2020 10:43 pm, editado 3 vez(es)
Re: Exercício 1.17
Sex Jun 12, 2020 12:24 am
André, o programa ficou correto, mas a questão 1 está errada. Nota 8.0
Permissões neste sub-fórum
Não podes responder a tópicos
|
|