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 2.4 Empty Exercício 2.4

Ter Jul 07, 2020 7:09 pm
/*
* CURSO DE ROBOTICA 2020
*
* Exercicio: 2.5
* Tema: Função IF
* Atividade: Tecla LED acende apaga
* Descrição: Quando pressionar uma tecla um led deve acender e ao pressionar novamente o LED apaga
* Hardware: Ligar uma tecla a uma das pino digital configurado como ENTRADA e um led em outro pino digital configurado como SAÍDA
* Comandos: pinMode, digitalRead, digitalWrite, PULLUP, !(operador NOT), IF, operador Lógico &&
* DICA1: Usar uma variável para guardar o estado anterior da tecla e evitar multiplas leituras
* DICA2: Usar o operador lógico && para controlar as leituras, de forma seja interpretada a tecla única vez a cada acionamento
* DICA3: Utilizar uma variável para controlar o estado do led e inverter o estado a cada ciclo de leitura da tecla.
*/

//DEFINICOES INICIAIS
#define iwannabetherain 3 //definido que pino 3 será chamado de iwannabetherain;
#define iwannaplay 4 //definido que pino 4 será chamado de iwannaplay;

//DECLARAcAO DE VARIAVEIS
bool stt = 0; //definido uma varoável do tipo bool;
bool tclprss = 0; //definido uma varoável do tipo bool;
//FUNÇÕES COMPLEMENTARES


//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode (iwannabetherain, INPUT_PULLUP); //foi definido que iwannabetherain é uma entrada;
pinMode (iwannaplay, OUTPUT); //foi definido que iwannaplay é uma saída;
}
//PROGRAMA PRINCIPAL
void loop() {
if(digitalRead(iwannabetherain) == LOW && tclprss == 0) { // se as função der verdadeiro, será executado os programa abaixo. Se der falso, vai para o próximo bloco de programação;
tclprss = 1; // tecla for pressionada = 1;
stt = !stt; //estado é igual a negação do estado;
digitalWrite (iwannaplay, stt); //faz uma escrita analógica no led "iwannaplay"
}
if (digitalRead(iwannabetherain) == HIGH && tclprss == 1); { // se as função der falso
tclprss = 0; // tecla for pressionada = 0.
}
}

fiquei confusa na hr dos comentários do if, tentei. Se tiver algo errado me avise que tento refazer de uma formar melhor.
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 2.4 Empty Não seria 2.5?

Ter Jul 14, 2020 12:38 am
Kricya, tem um pequeno erro no programa que comprometeu o funcionamento dele. veja a linha abaixo:

if (digitalRead(iwannabetherain) == HIGH && tclprss == 1); { // se as função der falso

tem um ; num lugar que não deveria, daí ele encerrou o comando executando o "tclprss = 0; // tecla for pressionada = 0". independentemente da condição

No if() comentou que se der verdadeiro executa, e isso é verdade. Porém para dar verdadeiro tem uma condição lógica && que obriga as duas expressões retornarem verdadeiro. A observação é mais para

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