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

Ir para baixo
Thiaguin
Thiaguin
Mensagens : 176
Data de inscrição : 03/03/2020

Exercício 2.15 Associar 3 teclas a 3 leds com pisca Empty Exercício 2.15 Associar 3 teclas a 3 leds com pisca

Qua Ago 19, 2020 10:49 pm
/*
* CURSO DE ROBOTICA 2020
*
* Exercicio: 2.15
* Tema: Switch Case
* Atividade: Associar 3 teclas a 3 LEDs com pisca
* Descrição: Quando pressionar a tecla o led correspondente deve piscar 5 vezes
* Hardware: Ligar 3 teclas aos pinos digitais configurados como ENTRADA e 3 leds em outros pinos digitais configurado como SAÍDA
* Comandos: pinMode, digitalRead, digitalWrite, PULLUP, !(operador NOT), Switch Case, break
* DICA1: A função !(not) deve ser usada antes de cada tecla porque a tecla está com resistor de pullup e ligada ao 0V, logo fica em DOWN quando pressionada
* DICA2: Na primeira parte do programa, ler as teclas e guardar um valor correspondente a cada uma delas
* DICA3: Na segunda parte usar switch/case para acionar o led correspondente
* DICA4: Usar um for() para fazer o led piscar 5 vezes
*/

//DEFINICOES INICIAIS
#define led1 3 //Definido que o pino 3 vai se chamar "led1"
#define led2 4 //Definido que o pino 4 vai se chamar "led2"
#define led3 5 //Definido que o pino 5 vai se chamar "led3"
#define tecla1 9 //Definido que o pino 9 vai se chamar "tecla1"
#define tecla2 10 //Definido que o pino 10 vai se chamar "tecla2"
#define tecla3 11 //Definido que o pino 11 vai se chamar "tecla3"

//DECLARAcAO DE VARIAVEIS
int tempo=200;//Variável para ser atribuído o valor do tempo
byte valor=0;//Variável para ser atribuído o valor da leitura das teclas
//FUNÇÕES COMPLEMENTARES

//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode(tecla1,INPUT_PULLUP); //programado a tecla como entrada e usando resistor de pull up
pinMode(tecla2,INPUT_PULLUP); //programado a tecla como entrada e usando resistor de pull up
pinMode(tecla3,INPUT_PULLUP); //programado a tecla como entrada e usando resistor de pull up
pinMode(led1, OUTPUT); //programado o led como saida
pinMode(led2, OUTPUT); //programado o led como saida
pinMode(led3, OUTPUT); //programado o led como saida
}

//PROGRAMA PRINCIPAL
void loop() {
//1ªPARTE : LEITURA DAS TECLAS
if(!digitalRead(tecla1))valor=1;//Quando a tecla1 for pressionada o valor da variável valor passará a ser 1
if(!digitalRead(tecla2))valor=2;//Quando a tecla2 for pressionada o valor da variável valor passará a ser 2
if(!digitalRead(tecla3))valor=3;//Quando a tecla3 for pressionada o valor da variável valor passará a ser 3
//2ªPARTE : TRATAR A VARIÁVEL VALOR COM O SWITCH/CASE
switch(valor){//Irá tratar a variável , rodando um bloco diferente a cada caso , ou seja , a cada valor da variável valor
case 1 ://Se a variável valor tiver valor igual a 1 , irá rodar o bloco abaixo
for(byte a=1;a<=5;a++){//O programa irá rodar sempre somando 1 ao valor da variável , até chegar em 5 , ou seja , o led1 irá acender 5 vezes
digitalWrite(led1,HIGH);//O led1 irá acender
delay(tempo);//O intervalo de tempo será o valor da variável tempo
digitalWrite(led1,LOW);//O led1 irá apagar
delay(tempo);//O intervalo de tempo será o valor da variável tempo
if(a==5)valor=0;//Se o valor da variável a for igual a 5 , o valor da variável valor irá passar a ser 0 , ou seja , a tecla não será mais lida pois o valor da variável valor não é mais igual a 1
}
break;//O programa será interrompido e irá sair fora do bloco
case 2 ://Se a variável valor tiver valor igual a 2 , irá rodar o bloco abaixo
for(byte b=1;b<=5;b++){//O programa irá rodar sempre somando 1 ao valor da variável , até chegar em 5 , ou seja , o led2 irá acender 5 vezes
digitalWrite(led2,HIGH);//O led2 irá acender
delay(tempo);//O intervalo de tempo será o valor da variável tempo
digitalWrite(led2,LOW);//O led2 irá apagar
delay(tempo);//O intervalo de tempo será o valor da variável tempo
if(b==5)valor=0;//Se o valor da variável b for igual a 5 , o valor da variável valor irá passar a ser 0 , ou seja , a tecla não será mais lida pois o valor da variável valor não é mais igual a 2
}
break;//O programa será interrompido e irá sair fora do bloco
case 3 ://Se a variável valor tiver valor igual a 3 , irá rodar o bloco abaixo
for(byte c=1;c<=5;c++){//O programa irá rodar sempre somando 1 ao valor da variável , até chegar em 5 , ou seja , o led3 irá acender 5 vezes
digitalWrite(led3,HIGH);//O led3 irá acender
delay(tempo);//O intervalo de tempo será o valor da variável tempo
digitalWrite(led3,LOW);//O led3 irá apagar
delay(tempo);//O intervalo de tempo será o valor da variável tempo
if(c==5)valor=0;//Se o valor da variável c for igual a 5 , o valor da variável valor irá passar a ser 0 , ou seja , a tecla não será mais lida pois o valor da variável valor não é mais igual a 3
}
break;//O programa será interrompido e irá sair fora do bloco
}
}
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.15 Associar 3 teclas a 3 leds com pisca Empty Re: Exercício 2.15 Associar 3 teclas a 3 leds com pisca

Seg Ago 24, 2020 4:44 am
Muito bom , nota 10.0
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos