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
Daniel Lukas
Mensagens : 62
Data de inscrição : 06/03/2020
Idade : 17
Escola : Rua Aníbal Silva
https://sayajin-gamers-store.myshopify.com/

Exercício Número 2.20 Empty Exercício Número 2.20

Ter Out 13, 2020 10:06 am
/*
* CURSO DE ROBOTICA 2020
*
* Exercicio: 2.20
* Tema: Função IF WHILE
* Atividade: Associar um LED a uma tecla
* Descrição: Quando pressionar uma tecla um led deve acender e ao pressionar novamente o LED apaga
* Hardware: Ligar uma tecla a um pino digital configurado como ENTRADA e um led em outro pino digital configurado como SAÍDA
* Comandos: pinMode, digitalRead, digitalWrite, PULLUP, !(operador NOT), WHILE
* DICA1: Usar a função if() para checar se a tecla foi pressionada
* DICA2: Com a função while() reter o programa enquanto a tecla estiver pressionada
* DICA2: Usar a função while() dentro da função if()
*/

//DEFINICOES INICIAIS
#define led 3 //Definido que o pino 3 vai se chamar "led"
#define tecla 2 // definido que o pino 2 vai se chamar tecla

//DECLARAcAO DE VARIAVEIS
bool estado = 0; //variavel declarada como estado

//FUNÇÕES COMPLEMENTARES


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

//PROGRAMA PRINCIPAL
void loop() {
if(!digitalRead(tecla)){ //if com tecla invertida
estado = !estado; // estado negado
digitalWrite(led, estado); //led será acesso quando a tecla será precionada
while(!digitalRead(tecla)){ //while lerá a tecla e ira fazer a ação
delay(10); //tempo de espera
}
}
}
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 Número 2.20 Empty Re: Exercício Número 2.20

Sáb Nov 21, 2020 1:24 pm
Oi Daniel, Vi que o programa funcionou conforme esperado, porém seus comentários não interpretam de forma correta o que ocorreu. Vou colocar umas questões para voce responder para ganhar a nota.

if(!digitalRead(tecla)){ //
( ) //if com tecla invertida
( ) //muda o valor da variável tecla quando for pressionada
( ) //testa se a tecla estiver em 0 vai rodar as funções do bloco
( ) //se a tecla for pressionada vai a 0 e com o ! (not) inverte o estado dando verdadeiro, daí pula o bloco de instruções
( ) //inverte o estado da variável tecla

digitalWrite(led, estado);
( ) //led será acesso quando a tecla será precionada
( ) //a variável estado assume o valor do led
( ) // a variável led assume o valor da variável estado
( ) // o pino com o nome led assume o estado da variável estado
( ) // se a variável estado estiver em 1 o led apaga e se avariável estado estiver em 0 o led acende

while(!digitalRead(tecla)){
( ) //while lerá a tecla e ira fazer a ação
( ) //while é uma função que troca o valor da tecla durante o tempo na função delay()
( ) //while retém o fluxo do programa enquanto a tecla estiver pressionada para evitar multiplas leituras da tecla
( ) //while altera o valor da variável tecla para evitar que o led fique piscando
( ) //while testa o estado do pino chamado tecla e enquanto o valor estiver em falso retém o fluxo do programa
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos