Robótica Livre
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Ir para baixo
Kricya Silva
Kricya Silva
Mensagens : 61
Data de inscrição : 03/03/2020
Idade : 21
Escola : Colegio Estadual Professora Lindaura Ribeiro Lucas

Exercício 1.12 Empty Exercício 1.12

Seg maio 25, 2020 9:36 pm
/*
* CURSO DE ROBOTICA 2020
*
* Exercicio: 1.12
* Tema: Pinos Analógicos
* Atividade: Fazer o led alternar o brilho conforme a variação de luminosidade
* Descrição: Usar um pino analógico para controlar o brilho do led e uma entrada analógica para medir a luminosidade
* Hardware: Ligar um led em um pino digital configurado como SAÍDA ANALÓGICA e o LDR em uma entrada analógica
* Comandos: pinMode, analogRead, analogWrite,
* Dica1:A saída analógica aceita valores entre 0 e 255, e o conversor analógico possui 10 bits ou seja até 1024
* Dica2:Usar a função debug() para checar os valores maximos e minimos do LDR
* Dica3:Checar os valores de entrada maximo e minimo, lembrando que nesse circuito não é possível atingir o zero nem o valor máximo.
* Dica4:Converter a escala do LDR usando regra de 3,
* Dica5:Escrever o valor lido do LDR no led, tente também fazer o brilho inversamente proporcional a Luminosidade
*/

//DEFINICOES INICIAIS
#define ldr A0 // definido que pino A0 será chamado de ldr
#define RBD 3 //definido que pino 3 será chamado de RBD

//DECLARAcAO DE VARIAVEIS GLOBAIS
int brilho; //variavel para controlar o brilho

//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //inicia a porta serial
pinMode(RBD, OUTPUT); //definido RBD como saída
}

//FUNÇÕES COMPLEMENTARES
void debug(){
Serial.print("brilho = "); //brilho será igual ao valor
Serial.println(brilho); //aqui é o valor que definirei abaixo no programa principal
}

//PROGRAMA PRINCIPAL

void loop() {
brilho = (915- analogRead(ldr))/4; //valor do brilho utilizando a regra de 3
analogWrite (RBD, brilho); //escreveu no RBD o valor do brilho
debug (); //executo tudo o que está escrito nas "funções complementares"
delay(300); //tempo de espera entre os comandos

}


Bom dia, boa tarde, boa noite prof.

Fiquei com uma dúvida neste exercício. Para inverter os controles, digo quando estiver escura o led acender e quando estiver claro o led apagar, eu poderia usar aquele comando da "!" ?
Fiquei pensando nessa possibilidade.
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5021
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 1.12 Empty Re: Exercício 1.12

Qui maio 28, 2020 11:49 pm
Oi Kricya, o programa está correto, nota 10.0,
e mandou uma excelente pergunta. Tive que testar alguns resultados para te responder.
Quanto a usar o ! esse podemos descartar de imediato porque não é um operador bitwise, logo funciona somente com 1 bit e não com o byte todo. Mas existe um operador de negação bitwise que é o ~ , veja na apostila o ítem 1.2.8. Daí fiz o programa abaixo, que vai mandar para a porta serial o valor do i e o valor do i negado. Se rodar vai ver que sai o valor do i com sinal negativo.

void setup(){
Serial.begin(9600);
}

void loop(){
for (int i=0; i<=1023; i++){
Serial.print(i);
Serial.print(" ");
Serial.println(~i);
}
}


Então a forma mais fácil de resolver é usando os operadores aritméticos conforme a instrução passada.
Pois se temos um número, entre 0 e 1024, que na verdade vai ter a variação dependendo do componente e do ambiente, que deve ser aferido pelo debug(),
faz o valor máximoAferido - o valorLido que terá como resultado o valor numa escala de cima para baixo, ou seja, inversamente proporcional.

Esse exercício tem um ponto que ficou incomodo porque na documentação do arduino diz que a função map() usa regra de 3, mas na verdade o calculo não é bem regra de 3. Daí seguindo a documentação sugeri a regra de 3 mas na verdade o calculo usado é uma divisão simples por 4, estando mais para um cálculo proporcional.

Esse exercício estava mais para demonstrar que não é fácil ajustar a escala de forma simples. A melhor forma de resolver esse exercício sem complicações matemáticas é usando a função map() que vamos estudar no próximo exercício.

Kricya Silva
Kricya Silva
Mensagens : 61
Data de inscrição : 03/03/2020
Idade : 21
Escola : Colegio Estadual Professora Lindaura Ribeiro Lucas

Exercício 1.12 Empty re

Qua Jun 03, 2020 1:11 pm
Entendido professor, obrigado por sanar mais essa dúvida.
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5021
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 1.12 Empty Re: Exercício 1.12

Qua Jun 03, 2020 11:44 pm
Tomara que tenha entendido mesmo, kkk
Conteúdo patrocinado

Exercício 1.12 Empty Re: Exercício 1.12

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