- Kricya Silva
- Mensagens : 61
Data de inscrição : 03/03/2020
Idade : 21
Escola : Colegio Estadual Professora Lindaura Ribeiro Lucas
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.
* 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.
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
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
Permissões neste sub-fórum
Não podes responder a tópicos
|
|