- André Luis Caetano
- Mensagens : 41
Data de inscrição : 10/03/2020
Escola : São Critóvão
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
* 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
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
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
- André Luis Caetano
- Mensagens : 41
Data de inscrição : 10/03/2020
Escola : São Critóvão
Re: Exercício 2.4
Sáb Jul 04, 2020 12:03 pm
corrigido
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
O programa precisa mudar o ponto de acendimento do led quando muda a posição do trimpot
- André Luis Caetano
- Mensagens : 41
Data de inscrição : 10/03/2020
Escola : São Critóvão
Re: Exercício 2.4
Dom Jul 12, 2020 10:56 am
corrigido
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?
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?
Permissões neste sub-fórum
Não podes responder a tópicos
|
|