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
André Luis Caetano
Mensagens : 41
Data de inscrição : 10/03/2020
Escola : São Critóvão

Exercício 2.4 Empty Exercício 2.4

Qui Jul 02, 2020 6:21 pm
/*
* 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 led 3 //pino onde o led esta conectado
#define LDR A0 //pino onde o LDR esta conectado
#define trimpot A1 //pino onde o trimpot esta conectado

//DECLARAcAO DE VARIAVEIS GLOBAIS
int luminosidade; //foi declarada um variavel do tipo int coom o nome luminosidade
int ajuste; //foi declarada um variavel do tipo int coom o nome ajuste

//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //comando para abrir a porta serial
pinMode(led, OUTPUT); //led programado como saida
pinMode(LDR, INPUT); //LDR configurado como entrada
}

//FUNÇÕES COMPLEMENTARES
void debug () {
Serial.print("luminosidade = "); //comando usado para registrar a luminosidade na porta serial
Serial.println(luminosidade); //comando usado para registrar na porta serial o valor do ldr pulando uma linha
Serial.print("trimpot = "); //comando usado para registrar a posiçao do trimpot na porta serial
Serial.println(ajuste); //comando usado para registrar na porta serial o valor do trimpot pulando uma linha
}

//PROGRAMA PRINCIPAL
void loop() {
luminosidade = analogRead(LDR); //o comando luminosidade vai fazer uma leitura analogica do ldr
ajuste = analogRead(trimpot); //o comando vai fazer uma leitura analogica do trimpot
ajuste = map(analogRead(trimpot), 0, 1022, 11, 834); //formula usada para o trimpot ter os mesmos valores que o ldr (entra 0, entra 1022, sai 11, sai 834)
debug(); //ativaçao do comando da porta serial
if(luminosidade > 725) { //o comando if acende o led se o ldr marcar 425 ou mais de luminosidade
digitalWrite (led, HIGH); //led foi aceso pelo comando if
}else { //caso contrario o comendo else deixa o led apagado
digitalWrite(led, LOW); //o led foi apagado pelo comando else
}
} // By André Luis Caetano


Última edição por André Luis Caetano em Dom Jul 12, 2020 10:55 am, editado 4 vez(es)
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5039
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 2.4 Empty Re: Exercício 2.4

Sáb Jul 04, 2020 10:50 am
Oi André, seu programa está quase. Vamos precisar de uns ajustes nele para ficar perfeito.

Para o programa ficar perfeito as escalas do ldr e do ajuste devem ficar identicas, e voce pode converter qualquer uma das duas, veja abaixo as duas possibilidades:
Supondo que a luminosidade varie entre 80 e 800 e o ajuste varie entre 0 e 1020
1 - luminosidade = map(analogRead(ldr), 80, 800, 0 , 1020); //aqui le o valor do ldr , entra de 80 a 800 e sai de 0 a 1020
2 - ajuste = map(analogRead(trimpot), 0 , 1020, 80, 800); //aqui converte a escala do trimpot, entra de 0 a 1020 e sai de 80 a 800

vou fazer as orientações em vermelho no próprio programa, veja lá

Nota 7.0
avatar
André Luis Caetano
Mensagens : 41
Data de inscrição : 10/03/2020
Escola : São Critóvão

Exercício 2.4 Empty Re: Exercício 2.4

Sáb Jul 04, 2020 12:03 pm
corrigido
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5039
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 2.4 Empty Re: Exercício 2.4

Sáb Jul 04, 2020 2:00 pm
Tinha mais correções anotadas, uma delas era da dupla carga na variável ajuste e outra na comparação da função if(), acho que ignorou e apagou.
O programa precisa mudar o ponto de acendimento do led quando muda a posição do trimpot
avatar
André Luis Caetano
Mensagens : 41
Data de inscrição : 10/03/2020
Escola : São Critóvão

Exercício 2.4 Empty Re: Exercício 2.4

Dom Jul 12, 2020 10:56 am
corrigido
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5039
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 2.4 Empty Re: Exercício 2.4

Seg Jul 13, 2020 9:57 pm
André, o programa está correto mas precisa ajustar a escala. Dei a dica numa das respostas anteriores.
Quando colocar o trimpot no primeiro risquinho, só pode acender o led quando o ldr passar do primeiro risquinho.
Quando colocar o trimpot no segundo risquinho, o led só pode acender depois do segundo risquinho. e assim sucessivamente.
Isso vai indicar que ajustou a escala, voce está me entregando um luximetro bugado, que tem problemas no ajuste do ponto de disparo.
Testa bem e veja se aceitaria desse jeito, tenta ajustar para acender em 100lux, deveria funcionar, certo?
Conteúdo patrocinado

Exercício 2.4 Empty Re: Exercício 2.4

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