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
joao victor carmona
Mensagens : 47
Data de inscrição : 18/03/2023
Escola : Colegio Professora lindaura ribeiro lucas

ex 2.04 resolvido Empty ex 2.04 resolvido

Sáb Nov 25, 2023 11:06 am
/*
* CURSO DE ROBOTICA 2020
*
* Exercicio: 2.4
* Tema: Função IF
* Atividade: Acender um LED se a luminosidade for maior que o ajuste do trimpot
* Descrição: Usar uma entrada analógica para medir a intensidade da luz e outra para comparar o valor e usar esse valor para acender um LED
* Hardware: Ligar os leds nos pino digitais configurado como SAÍDA DIGITAL e o LDR e o TRIMPOT em uma entrada analógica
* Comandos: pinMode, analogRead, digitalWrite,delay, map, IF ELSE
* Dica1:A o conversor analógico possui 10 bits ou seja de 0 até 1024
* Dica2:Comparar se o valor do LDR ultrapassar o valor estabelecido pelo trimpot e acender o LED e se baixar apagar o LED
*/

//DEFINICOES INICIAIS
#define led1 5 //led1 definido no pino D5
#define LDR A0 //ldr definido no pino A0
#define TRIMPOT A1
//DECLARAcAO DE VARIAVEIS GLOBAIS
int luminosidade; //variavel int definida
byte ajuste;//variavel byte definida
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //abre a porta serial com valor de 9600
pinMode(led1, OUTPUT); //led1 programado como saida
}

//FUNÇÕES COMPLEMENTARES
void debug() {
Serial.print("luminosidade = ");//define que a luminosidade = e so um texto
Serial.print(luminosidade); //define a luminosidade
Serial.print("TRIMPOT = "); //define que timpot = e so um texto
Serial.println(ajuste);//define o ajuste
}


//PROGRAMA PRINCIPAL
void loop() {
luminosidade = map(analogRead(LDR),0,1024,600,10);//funçao map
luminosidade = analogRead(LDR); //valor da luminosidade e igual a do ldr
ajuste = analogRead (TRIMPOT);//o valor do ajuste e igual a do TRIMPOT
debug();//escrevera tudo que esta em void debug()
if(luminosidade > ajuste){ //c a luminosidade for maior que 750...
digitalWrite(led1, HIGH); //led1 acende
} else { //funçao else
digitalWrite(led1, LOW); //led1 apagado
delay(200);//o tempo que o led ficara ligado);
}

}
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

ex 2.04 resolvido Empty Re: ex 2.04 resolvido

Sáb Abr 20, 2024 10:18 am
Oi João, a logica do exercício está correta, ele não funciona de forma adequada porque as calibrações estão invertidas.
Vou explicar, o trimpot sempre vai dar 0 a 1023 porque está fixado entre 0 e 5V, já o LDR, assim como o NTC, são componentes que dependem das condições ambientais e dos valores dos componentes da placa. Então o map() deveria ser usado no LDR.
Daí precisa usar o debug para coletar os valores maximos e minimos dos sensores para usar no map()
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos