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

Ir para baixo
Gigio
Gigio
Mensagens : 68
Data de inscrição : 09/03/2022
Idade : 16
Escola : Colegio Estadual Professor Lindaura Ribeiro Lucas

Exercício 2.9 Empty Exercício 2.9

Seg Jun 13, 2022 3:14 pm
/*
CURSO DE ROBOTICA 2020

Exercicio: 2.9
Tema: Função FOR()
Atividade: Usar uma tecla para acionar um pisca limitado em 10 sequencias
Descrição: Qando pressionar a tecla o led deve piscar 10 vezes. Pode também implementar um código que permita interromper o pisca.
Hardware: Usar uma tecla ligado em uma entrada digital, e um led em um pino configurado como saída
Comandos: pinMode, analogRead, analogWrite,IF(), FOR()
Dica1:A programação será usando uma estrutura for() dentro de uma estrutura if()
*/

//DEFINICOES INICIAIS
#define Butao2 3 //Define o incrível "Butao2" como pino 3,
#define Butao 4 //Define o incrível "Butao" como pino 4,
#define LED 5 //Define o LED como pino 5.


//DECLARAcAO DE VARIAVEIS GLOBAIS
bool ButaoApertado; //Variável bool para registrar quando o "Butao" é apertado,
bool Prevencao; //Variável bool para previnir que a leitura seja feita quando o "Butao" ainda estiver pressionado,
byte Contador; //Variável byte para o Contador.

//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //Inicia o monitor serial,
pinMode(LED, OUTPUT); //Define o LED como saída,
pinMode(Butao, INPUT_PULLUP); //Define o "Butao" como INPUT_PULLUP,
pinMode(Butao2, INPUT_PULLUP); //Define o "Butao2" como INPUT_PULLUP.
}

//FUNÇÕES COMPLEMENTARES
void Butoes() { //Variável para ler os botões e acionar a interrupção do "Butao2";
ButaoApertado = !digitalRead(Butao); //Leitura do "Butao" invertida,
/* Serial.println(ButaoApertado); //Manda o valor do "Butao" para o monitor serial,
Serial.print("Botão: "); //Manda a descrição do "Butao" para o monitor serial. */
attachInterrupt(digitalPinToInterrupt(3), Interrupcao, FALLING); //Quando o "Butao2" for pressionado / quando ele cair para 0V (LOW), ele vai acionar a função Interrupção,
}



void Interrupcao() { //Função para a interrupção,
Contador = 10; //Contador será igual a 10,
digitalWrite(LED,LOW); //Desliga o LED,
Serial.println(Contador); //Manda o Contador ao monitor serial.
}

//PROGRAMA PRINCIPAL

void loop() {
Butoes(); //Invoca a função Butoes(),
if (ButaoApertado == 1 && Prevencao == 0) { //Se o "Butao" estiver pressionado e o valor da prevenção ser 0 então:
Prevencao = 1; //A prevenção será 1,
for (Contador = 0; Contador < 10; Contador ++) { //O contador será 0, o código vai rodar até o contador alcançar 9, e o Contador vai aumentar a cada ciclo,
Serial.println(Contador); //Manda o contador ao monitor serial,
digitalWrite(LED, HIGH); //Liga o LED,
delay(300); //Pausa de 300MS,
digitalWrite(LED, LOW); //Desliga o LED,
delay(300); //Pausa de 300MS.
}
}
else if (ButaoApertado == 0 && Prevencao == 1) { //Se o "Butao" estiver despressionado e o valor da prevenção ser 1 então,
Prevencao = 0; //O valor da prevenção será 0.
}
}
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5039
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 2.9 Empty Re: Exercício 2.9

Ter Ago 02, 2022 1:22 am
Oi Giovanni, estava corrigindo esse exrcício e daria para resolver de uma forma mais simples, sem usar as funções de interrupção para interromper o for(),
Para interromper o for() usa o break, ele vai parar de contar e sair da função, só isso.
Então fazo o for() para conter até 10 e fazer o led piscar, dentro dele coloca if(teclaPressionada) break;
Nota 4.0 até corrigir.
Gigio
Gigio
Mensagens : 68
Data de inscrição : 09/03/2022
Idade : 16
Escola : Colegio Estadual Professor Lindaura Ribeiro Lucas

Exercício 2.9 Empty Correção Exercício 2.9

Qua Ago 17, 2022 2:21 pm
/*
CURSO DE ROBOTICA 2020

Exercicio: 2.9
Tema: Função FOR()
Atividade: Usar uma tecla para acionar um pisca limitado em 10 sequencias
Descrição: Qando pressionar a tecla o led deve piscar 10 vezes. Pode também implementar um código que permita interromper o pisca.
Hardware: Usar uma tecla ligado em uma entrada digital, e um led em um pino configurado como saída
Comandos: pinMode, analogRead, analogWrite,IF(), FOR()
Dica1:A programação será usando uma estrutura for() dentro de uma estrutura if()
*/

//DEFINICOES INICIAIS
#define Butao 3 //Define o incrível "Butao" como pino 3,
#define Butao2 4 //Define o incrível "Butao 2" como pino 4,
#define LED 5 //Define o LED como pino 5.


//DECLARAcAO DE VARIAVEIS GLOBAIS
bool ButaoApertado; //Variável bool para registrar quando o "Butao" é apertado,
bool ButaoApertado2; //Variável bool para registrar quando o "Butao 2" é apertado,
byte Contador; //Variável byte para o Contador.

//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //Inicia o monitor serial,
pinMode(LED, OUTPUT); //Define o LED como saída,
pinMode(Butao, INPUT_PULLUP); //Define o "Butao" como INPUT_PULLUP,
pinMode(Butao2, INPUT_PULLUP); //Define o "Butao 2" como INPUT_PULLUP,
}

//FUNÇÕES COMPLEMENTARES
void Butoes() { //Variável para ler os botões e acionar a interrupção do "Butao2";
ButaoApertado = !digitalRead(Butao); //Leitura do "Butao" invertida,
ButaoApertado2 = !digitalRead(Butao2); //Leitura do "Butao 2" invertida,
}

//PROGRAMA PRINCIPAL

void loop() {
Butoes(); //Invoca a função Butoes(),
if (ButaoApertado == 1) { //Se o valor de ButaoApertado ser igual a 1:
for (Contador = 0; Contador < 10; Contador ++) { //O contador será 0, o código vai rodar até o contador alcançar 9, e o Contador vai aumentar a cada ciclo,
Butoes(); //Invoca a função Butoes(),
if (ButaoApertado2 == 1) { //Se o valor de "ButaoApertado2" é igual a 1, então:
break; //Para o loop do for usando o comando break,
}
Serial.println(Contador); //Manda o contador ao monitor serial,
digitalWrite(LED, HIGH); //Liga o LED,
delay(300); //Pausa de 300MS,
digitalWrite(LED, LOW); //Desliga o LED,
delay(300); //Pausa de 300MS.
}
}
}
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5039
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 2.9 Empty Re: Exercício 2.9

Qui Ago 18, 2022 8:26 pm
Muito bom Giovanni, nota 10.0
Conteúdo patrocinado

Exercício 2.9 Empty Re: Exercício 2.9

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