Robótica Livre
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Ir para baixo
Kricya Silva
Kricya Silva
Mensagens : 61
Data de inscrição : 03/03/2020
Idade : 21
Escola : Colegio Estadual Professora Lindaura Ribeiro Lucas

Exercício 1.17 Empty Exercício 1.17

Seg Jun 08, 2020 10:51 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 // Aqui pede para enviar o contador pela 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?  R: RISING
* Questão2: Quantos pinos de interrupção podem ser usados no arduino nano3?  R: 2;
* Questão3: Quantos modos de interrupção podem ser configurados no arduino? R: LOW, HIGH (Due, Zero e MKR1000), CHANGE, FALLING e RISING.
*/

#define lip 3  //Definido que pino 3 se chama lip; //esse é o pino INT1, então nele que vem a tecla
#define stin 4  //Definido que pino 4 se chama stin;
#define llave 12  //Definido que pino 12 se chama llave;

//DECLARAcAO DE VARIAVEIS
volatile byte state = LOW; //estado de bytes volátil = BAIXO;
bool luz = 0; //definido uma variável do tipo bool;

//FUNÇÕES INTERRUPÇÃO
void pisca(){
luz++;  //luz com a função ++;
delay(110); //tempo; //Aqui poderia colocar a escrita da variável na porta serial, assim toda vez que interromper o processador incrementa e imprime na serial
}
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //inicia a porta serial;
pinMode(llave, INPUT_PULLUP);//llave programado como entrada;
pinMode(lip, OUTPUT);//lip programado como saida; //Lembra que o lip estava no pino 3, logo vai na tecla e ele que deve ser o pullup
pinMode(stin, OUTPUT);//led2 programado como saida;
attachInterrupt(0, pisca, RISING);//o disparo que aciona a função quando de pressionar a tecla; //Se usou o pino 3 que é o int1, aqui deve configurar o pino 1  enão o 0
}

//PROGRAMA PRINCIPAL
void loop() { //Precisa revisar os pinos que vai usar para led
digitalWrite(lip, HIGH);  //lip acende;
delay(200);  //tempo;
digitalWrite(stin, HIGH);  //stin acende;
delay(200);  //tempo;
digitalWrite(lip, LOW);  // lip apaga;
delay(200);  //tempo;
digitalWrite (stin, LOW);  //stin apaga;
delay(200);  //tempo;
}

Bom dia, boa tarde, boa noite.
OBS: pedi a ajuda do Álvaro nesse exercício, tava complicadinho. akkakakkakakka
// E para variar não testou o programa, não sabe o que está perdendo, é tão legal ver funcionando
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

Qua Jun 10, 2020 10:33 pm
Kricya,
Precisa revisar esse programa, tem vários pontos que precisa de correção, vou anotar em vermelho no próprio programa.
Nota 6.0

alvaro 123456 gosta desta mensagem

Kricya Silva
Kricya Silva
Mensagens : 61
Data de inscrição : 03/03/2020
Idade : 21
Escola : Colegio Estadual Professora Lindaura Ribeiro Lucas

Exercício 1.17 Empty prof

Qui Jun 11, 2020 5:31 pm
Resolvi o problema dos pinos, mas o resto não consegui ainda.
/*
* 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? 2
* Questão3: Quantos modos de interrupção podem ser configurados no arduino? CHANGE, FALLING e RISING.
*/

//DEFINICOES INICIAIS
#define pikachupisca 6  //definido que pino 6 será chamado de pikachupisca;
#define interrup 7  //definido que pino 7 será chamado de interrup;
#define tecla 2  //definido que pino 2 será chamado de tecla;

//DECLARAcAO DE VARIAVEIS
volatile byte stado = LOW; //estado de bytes volátil = BAIXO;
int ligth = 0; //definido uma variável do tipo bool;

//FUNÇÕES INTERRUPÇÃO
void pisca () {
 ligth ++; //luz com função ++;
 delay (200); //tempo;
}

//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //inicia a porta serial;
Serial.print("ligth ++" ); //luminosidade
Serial.println(analogRead(ligth ++));
pinMode(tecla, INPUT_PULLUP);//tecla programado como entrada;
pinMode(pikachupisca, OUTPUT);//pikachupisca programado como saida;
pinMode(interrup, OUTPUT);//interrup programado como saida;
attachInterrupt(0, ligth, RISING);//o disparo que aciona a função quando de pressionar a tecla;
}

//PROGRAMA PRINCIPAL
void loop() {
digitalWrite (pikachupisca, HIGH);  //pikachupisca acende;
delay(300);  //tempo;
digitalWrite (interrup, HIGH);  //interrup acende;
delay(400);  //tempo;
digitalWrite (pikachupisca, LOW);  //pikachupisca apaga;
delay(300);  //tempo;
digitalWrite (interrup, LOW);  //interrup apaga;
delay(400);  //tempo;
}
Kricya Silva
Kricya Silva
Mensagens : 61
Data de inscrição : 03/03/2020
Idade : 21
Escola : Colegio Estadual Professora Lindaura Ribeiro Lucas

Exercício 1.17 Empty Re: Exercício 1.17

Qui Jun 11, 2020 11:29 pm
Tinha esquecido de responder as questões nesse novo q postei. Kakaakakakak
Quando eu ter certeza q tiver td correto eu apago esse comentario, por enquanto tô postando separado pra ter uma base.
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

Sex Jun 12, 2020 12:57 am
Kricya, sobre o entendimento do código:
- Na função setup() os comandos que coloca lá dentro rodam única vez na inicialização, então o serial print da variável light não é ali que coloca
- Pensa comigo, quando interrompe o microcontrolador, deve incrementar a variável e enviar o valor para serial. Então coloca o Serial.print logo depois de incrementar a variável. Onde fiz a observação em vermelho.
- esse comando Serial.println(analogRead(ligth ++)); não pode existir, lembra que o analogRead é uma leitura num pino analógico, não da pra fazer numa variável, ainda com incremento, não rola.
- Precisa revisar o comando para configurar a interrupção, veja na apostila que um dos parâmetros é o nome da função que vai rodar, está usando uma variável,

As respostas estão corretas, mas o programa precisa funcionar. mesmo que com pequenas inconsistências.

Nota 6.0
Kricya Silva
Kricya Silva
Mensagens : 61
Data de inscrição : 03/03/2020
Idade : 21
Escola : Colegio Estadual Professora Lindaura Ribeiro Lucas

Exercício 1.17 Empty .

Sex Jun 12, 2020 12:12 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? RISING
* Questão2: Quantos pinos de interrupção podem ser usados no arduino nano3? 2
* Questão3: Quantos modos de interrupção podem ser configurados no arduino? CHANGE, FALLING e RISING.
*/

//DEFINICOES INICIAIS
#define pikachupisca 6 //definido que pino 6 será chamado de pikachupisca;
#define interrup 7 //definido que pino 7 será chamado de interrup;
#define tecla 2 //definido que pino 2 será chamado de tecla;

//DECLARAcAO DE VARIAVEIS
volatile byte stado = LOW; //estado de bytes volátil = BAIXO;
int ligth = 0; //definido uma variável do tipo int;
bool estado = 0; //definido uma variável do tipo bool;

//FUNÇÕES INTERRUPÇÃO
void sinaliza (){
estado = !estado;//representa um posiçao inversa
debug();
digitalWrite(interrup, estado);//interrup 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("ligth = ");
Serial.println(ligth++);
}

//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //inicia e configura a serial
pinMode(tecla, INPUT_PULLUP);//tecla programado como entrada;
pinMode(pikachupisca, OUTPUT);//pikachupisca programado como saida;
pinMode(interrup, OUTPUT);//interrup programado como saida;
attachInterrupt(0, ligth, RISING);//o disparo que aciona a função quando de pressionar a tecla;
}

//PROGRAMA PRINCIPAL
void loop() {
digitalWrite (pikachupisca, HIGH); //pikachupisca acende;
delay(300); //tempo;
digitalWrite (pikachupisca, LOW); //pikachupisca apaga;
delay(300); //tempo;

}

Mais uma tentativa, não sei se está correto ou não. Testei mas tô ficando confusa demais nesse exercício.
Desculpa por não estar conseguindo acertar. Sad
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

Sex Jun 12, 2020 10:56 pm
Quase em Kricya, Voce entendeu que vai monitorar o incremento da variável pela porta serial, né?
Agora olha para a função que vai tratar a interrupção. Como ela se chama?
Agora olha para o comando no setup() que configura o pino de interrupção. Qual o nome da função que vai acionar quando em interrupção?

Nota 7.0
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

Sex Jun 12, 2020 11:03 pm
Com essa nota voce alcaçou os requisitos para conclusão do capítulo 1. Parabéns!!! cheers sunny queen study Cool
Conteúdo patrocinado

Exercício 1.17 Empty Re: Exercício 1.17

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