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
LucyAnna800
Mensagens : 98
Data de inscrição : 11/06/2022
Idade : 12
Escola : Colegio Lindaura Ribeiro Lucas

exercicio 2.05 Empty exercicio 2.05

Dom Jun 04, 2023 4:15 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 teclaAcende 2 //pino 2 batizado de teclaAcende
#define ledApaga 3 //pino 3 batizado de ledApaga

//DECLARAcAO DE VARIAVEIS
bool estadoDoLed = 0; //batizada a varialvel bool de estadoDoLed que é igual a 0
bool tecLaPreSsionada = 0; //batizada a variavel bool de tecLaPreSsionada que é igual a 0

//FUNÇÕES COMPLEMENTARES


//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode(teclaAcende, INPUT_PULLUP); //teclaAcende configurada como entrada pullup
pinMode(ledApaga, OUTPUT); //ledApaga configurada como saída

//PROGRAMA PRINCIPAL
void loop(){
if(digitalWrite(teclaAcende) == LOW && tecLaPreSsionada == 0){ //se o que estiver na função if for verdaeiro se executará os comandos abaixo:
tecLaPreSsionada = 1 //teclaPreSsionada igual a 1
estadodoLed = !estadoDoLed; //inverte o estado da variavel estadoDoLed
digitalWrite(ledApaga, estadoDoLed); //ledApaga configurado como estadoDoLed
}
if(digitalRead(teclaAcende) == HIGH && teclaPreSsionada == 1){ //se o que estiver na função if for verdaeiro se executará os comandos abaixo:

}
}
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5115
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

exercicio 2.05 Empty Re: exercicio 2.05

Ter Jun 06, 2023 12:39 am
Oi Lucy, nesse tem vários erros de sintaxe, aprenda a olhar as mensagens do compilador que muitas vezes ajudam a resolver esses problemas.
Mas la vai umas dicas:
- A função setup() deveria abrir e fechar as chaves, certo? E isso o compilador informou,
- if(digitalWrite(teclaAcende) == LOW aqui não seria Read? Voce deve ler o pino e comparar, certo?
- Veja se todos os comandos terminam em ; , veja o erro que dá :35:1: error: expected ';' before 'estadodoLed'
- Tem mais erro, mas tente resolver pelo log do compilador.
Os que não conseguiur resolver publica que te ajudo.
avatar
LucyAnna800
Mensagens : 98
Data de inscrição : 11/06/2022
Idade : 12
Escola : Colegio Lindaura Ribeiro Lucas

exercicio 2.05 Empty exercicio 2.05

Ter Jun 13, 2023 10:18 am
/*
* 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 teclaAcende 2 //pino 2 batizado de teclaAcende
#define ledApaga 3 //pino 3 batizado de ledApaga

//DECLARAcAO DE VARIAVEIS
bool estadoDoLed = 0; //batizada a varialvel bool de estadoDoLed que é igual a 0
bool tecLaPreSsionada = 0; //batizada a variavel bool de tecLaPreSsionada que é igual a 0

//FUNÇÕES COMPLEMENTARES


//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode(teclaAcende, INPUT_PULLUP); //teclaAcende configurada como entrada pullup
pinMode(ledApaga, OUTPUT); //ledApaga configurada como saída

}
//PROGRAMA PRINCIPAL
void loop(){
if(digitalRead(teclaAcende) == LOW && tecLaPreSsionada == 0){ //se o que estiver na função if for verdaeiro se executará os comandos abaixo:
tecLaPreSsionada = 1; //teclaPreSsionada igual a 1
estadoDoLed = !estadoDoLed; //inverte o estado da variavel estadoDoLed
digitalWrite(ledApaga, estadoDoLed); //ledApaga configurado como estadoDoLed
}
if(digitalRead(teclaAcende) == HIGH && tecLaPreSsionada == 1){ //se o que estiver na função if for verdaeiro se executará os comandos abaixo:

}
}
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5115
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

exercicio 2.05 Empty Re: exercicio 2.05

Seg Jun 19, 2023 10:42 pm
Oi Lucy, está quase funcionando. faltou voltar a variável teclaPressionada para o valor inicial quando a tecla estiver pressionada, senão não volta a leitura da primeira parte do programa. Nota 6.0
avatar
LucyAnna800
Mensagens : 98
Data de inscrição : 11/06/2022
Idade : 12
Escola : Colegio Lindaura Ribeiro Lucas

exercicio 2.05 Empty exercicio 2.05

Qui Jun 22, 2023 10:54 am
/*
* 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 teclaAcende 2 //pino 2 batizado de teclaAcende
#define ledApaga 3 //pino 3 batizado de ledApaga

//DECLARAcAO DE VARIAVEIS
bool estadoDoLed = 0; //batizada a varialvel bool de estadoDoLed que é igual a 0
bool tecLaPreSsionada = 0; //batizada a variavel bool de tecLaPreSsionada que é igual a 0

//FUNÇÕES COMPLEMENTARES


//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode(teclaAcende, INPUT_PULLUP); //teclaAcende configurada como entrada pullup
pinMode(ledApaga, OUTPUT); //ledApaga configurada como saída

}
//PROGRAMA PRINCIPAL
void loop(){
if(digitalRead(teclaAcende) == LOW && tecLaPreSsionada == 0){ //se o que estiver na função if for verdaeiro se executará os comandos abaixo:
tecLaPreSsionada = 1; //teclaPreSsionada igual a 1
estadoDoLed = !estadoDoLed; //inverte o estado da variavel estadoDoLed
digitalWrite(ledApaga, estadoDoLed); //ledApaga configurado como estadoDoLed
}
if(digitalRead(teclaAcende) == HIGH && tecLaPreSsionada == 1){ //se o que estiver na função if for verdaeiro se executará os comandos abaixo:

}
}
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5115
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

exercicio 2.05 Empty Re: exercicio 2.05

Sex Jun 23, 2023 11:01 pm
Oi Lucy, ainda não está apagando o led. Vou dar uma dica mais detalhada.
Quando aperta a tecla usa uma variável de controle chamada teclaPressionada, e passa ela para o valor 1
Quando pressionar novamente que ela estiver no valor 1 deve retornar ela para o valor 0, assim, volta a ler a primeira parte do programa que vai inverter o estado do led, fazendo com que apague.
avatar
LucyAnna800
Mensagens : 98
Data de inscrição : 11/06/2022
Idade : 12
Escola : Colegio Lindaura Ribeiro Lucas

exercicio 2.05 Empty exercicio 2.05 certinho

Sáb Jun 24, 2023 8:57 am
/*
* 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 teclaAcende 2 //pino 2 batizado de teclaAcende
#define ledApaga 3 //pino 3 batizado de ledApaga

//DECLARAcAO DE VARIAVEIS
bool estadoDoLed = 0; //batizada a varialvel bool de estadoDoLed que é igual a 0
bool tecLaPreSsionada = 0; //batizada a variavel bool de tecLaPreSsionada que é igual a 0

//FUNÇÕES COMPLEMENTARES


//INICIALIZAÇÃO DO HARDWARE
void setup() {
pinMode(teclaAcende, INPUT_PULLUP); //teclaAcende configurada como entrada pullup
pinMode(ledApaga, OUTPUT); //ledApaga configurada como saída

}
//PROGRAMA PRINCIPAL
void loop(){
if(digitalRead(teclaAcende) == LOW && tecLaPreSsionada == 0){ //se o que estiver na função if for verdaeiro se executará os comandos abaixo:
tecLaPreSsionada = 1; //teclaPreSsionada igual a 1
estadoDoLed = !estadoDoLed; //inverte o estado da variavel estadoDoLed
digitalWrite(ledApaga, estadoDoLed); //ledApaga configurado como estadoDoLed
}
if(digitalRead(teclaAcende) == HIGH && tecLaPreSsionada == 1){ //se o que estiver na função if for verdaeiro se executará os comandos abaixo:
tecLaPreSsionada = 0 //tecLaPreSsionada igual a 0
}
}
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5115
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

exercicio 2.05 Empty Re: exercicio 2.05

Ter Jun 27, 2023 10:30 pm
Oi Lucy, faltou um ; no final de um comando. Mas como coloquei e funcionou vou considerar.
Daí sob re os comentários, esper nesse capítulo que nõ faça a interpretação literal do comando, mas sim como ele atua no programa.
Por exemplo:
tecLaPreSsionada = 1; //teclaPreSsionada igual a 1
Esse comentário é o obvio, mas na verdade essa variável recebe o valor 1 quando a tecla é pressionada para evitar multiplas leituras da tecla, e só volta a 0 quando a tecla for depressionada, somente aí habilita a tecla para ser lida novamente, então cada vez que a tecla for pressionada ela será lida uma única vez.

Tá devo ter exagerado um pouco nesse comentário. Mas espero que entenda a forma que deve analisar o programa no capítulo 2
Nota 10.0
Conteúdo patrocinado

exercicio 2.05 Empty Re: exercicio 2.05

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