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

Ir para baixo
avatar
Renata Pinheiro B
Mensagens : 54
Data de inscrição : 31/07/2021
Idade : 16
Escola : Lindaura Ribeiro Lucas

Exercício 2.15 resolvido Empty Exercício 2.15 resolvido

Sáb Mar 18, 2023 11:13 am
/*
* 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 = 150;//variável int definida como tempo = 0
byte valor = 0;//variável byte definida como valor = 0

//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() {
//////primeira parte leitura das teclas//////
valor = 0;//o valor da variável é igual a 0
if(!digitalRead(tecla1))valor = 1;//quando a tecla1 for pressionada o valor da variável (valor) passa a ser 1
if(!digitalRead(tecla2))valor = 2;//quando a tecla2 for pressionada o valor da variável (valor) passa a ser 2
if(!digitalRead(tecla3))valor = 3;//quando a tecla3 for pressionada o valor da variável (valor) passa a ser 3
//////segunda parte tratar a variável Valor com switch/case//////
Serial.println(valor);//vai imprimir no monitor serial o valor da variável pino
switch(valor){//vai tratar a variável, atuando de formas diferentes para cada condição
case 1://se o valor da variável for correspondente a 1 roda o código abaixo
for(byte a = 1; a<=5;a++){//o programa inicia e a cada ciclo incrementa 1 ao valor da variável até chegar em 5
digitalWrite(led1, HIGH);//liga o led1
delay(tempo);//pausa foi definida pela variável tempo
digitalWrite(led1, LOW);//desliga o led1
delay(tempo);//pausa foi definida pela variável tempo
}
break;//interrompe o programa
case 2://se o valor da variável for correspondente a 2 roda o código abaixo
for(byte b = 1; b<=5;b++){//o programa inicia e a cada ciclo incrementa 1 ao valor da variável até chegar em 5
digitalWrite(led2, HIGH);//liga o led2
delay(tempo);//pausa foi definida pela variável tempo
digitalWrite(led2, LOW);//desliga o led2
delay(tempo);//pausa foi definida pela variável tempo
}
break;//interrompe o programa
case 3://se o valor da variável for correspondente a 3 roda o código abaixo
for(byte c = 1; c<=5;c++){//o programa inicia e a cada ciclo incrementa 1 ao valor da variável até chegar em 5
digitalWrite(led3, HIGH);//liga o led3
delay(tempo);//pausa foi definida pela variável tempo
digitalWrite(led3, LOW);//desliga o led3
delay(tempo);//pausa foi definida pela variável tempo
}
break;//interrompe o programa
}
}
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5715
Data de inscrição : 11/02/2019
Idade : 53
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 2.15 resolvido Empty Re: Exercício 2.15 resolvido

Seg Abr 03, 2023 10:13 pm
Oi Renata, fiz o teste no simulador e o programa não funcionou. Daí fui tentar entender o porque e vi que o programa estava correto.
Vi que usou um Serial.print para enviar o conteudo da variável valor, que também não aparecia porque não inicializou a porta serial.
Quando inicializava a porta serial o programa funcionava, ou se comentar o comando Serial.print o programa também funcionava.
Não testei na placa do arduino, mas pode ser que funcione, caracterizando um BUG do simulador.
Mas como faltou inicializar a porta serial e usou o serial.print vou dar nota 9.0
avatar
Renata Pinheiro B
Mensagens : 54
Data de inscrição : 31/07/2021
Idade : 16
Escola : Lindaura Ribeiro Lucas

Exercício 2.15 resolvido Empty Re: Exercício 2.15 resolvido

Qui Abr 13, 2023 1:26 pm
Olá professor!
Vou revisar o exercício.
avatar
Renata Pinheiro B
Mensagens : 54
Data de inscrição : 31/07/2021
Idade : 16
Escola : Lindaura Ribeiro Lucas

Exercício 2.15 resolvido Empty Re: Exercício 2.15 resolvido

Qui Abr 13, 2023 1:35 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 = 150;//variável int definida como tempo = 0
byte valor = 0;//variável byte definida como valor = 0

//FUNÇÕES COMPLEMENTARES


//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600);//velocidade do monitor serial
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() {
//////primeira parte leitura das teclas//////
valor = 0;//o valor da variável é igual a 0
if(!digitalRead(tecla1))valor = 1;//quando a tecla1 for pressionada o valor da variável (valor) passa a ser 1
if(!digitalRead(tecla2))valor = 2;//quando a tecla2 for pressionada o valor da variável (valor) passa a ser 2
if(!digitalRead(tecla3))valor = 3;//quando a tecla3 for pressionada o valor da variável (valor) passa a ser 3
//////segunda parte tratar a variável Valor com switch/case//////
Serial.println(valor);//vai imprimir no monitor serial o valor da variável pino
switch(valor){//vai tratar a variável, atuando de formas diferentes para cada condição
case 1://se o valor da variável for correspondente a 1 roda o código abaixo
for(byte a = 1; a<=5;a++){//o programa inicia e a cada ciclo incrementa 1 ao valor da variável até chegar em 5
digitalWrite(led1, HIGH);//liga o led1
delay(tempo);//pausa foi definida pela variável tempo
digitalWrite(led1, LOW);//desliga o led1
delay(tempo);//pausa foi definida pela variável tempo
}
break;//interrompe o programa
case 2://se o valor da variável for correspondente a 2 roda o código abaixo
for(byte b = 1; b<=5;b++){//o programa inicia e a cada ciclo incrementa 1 ao valor da variável até chegar em 5
digitalWrite(led2, HIGH);//liga o led2
delay(tempo);//pausa foi definida pela variável tempo
digitalWrite(led2, LOW);//desliga o led2
delay(tempo);//pausa foi definida pela variável tempo
}
break;//interrompe o programa
case 3://se o valor da variável for correspondente a 3 roda o código abaixo
for(byte c = 1; c<=5;c++){//o programa inicia e a cada ciclo incrementa 1 ao valor da variável até chegar em 5
digitalWrite(led3, HIGH);//liga o led3
delay(tempo);//pausa foi definida pela variável tempo
digitalWrite(led3, LOW);//desliga o led3
delay(tempo);//pausa foi definida pela variável tempo
}
break;//interrompe o programa
}
}
avatar
Renata Pinheiro B
Mensagens : 54
Data de inscrição : 31/07/2021
Idade : 16
Escola : Lindaura Ribeiro Lucas

Exercício 2.15 resolvido Empty Re: Exercício 2.15 resolvido

Qui Abr 13, 2023 1:36 pm
Eu testei o exercício e funcionou, creio que agora está tudo ok. Smile
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5715
Data de inscrição : 11/02/2019
Idade : 53
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 2.15 resolvido Empty Re: Exercício 2.15 resolvido

Qui Abr 13, 2023 8:33 pm
Oi Renata, funcionou mesmo, muito bom, nota 10.0
Conteúdo patrocinado

Exercício 2.15 resolvido Empty Re: Exercício 2.15 resolvido

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