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

Ir para baixo
Gigio
Gigio
Mensagens : 68
Data de inscrição : 09/03/2022
Idade : 16
Escola : Colegio Estadual Professor Lindaura Ribeiro Lucas

Exercício 1.13 Empty Exercício 1.13

Seg maio 02, 2022 2:21 pm
/*
* CURSO DE ROBOTICA 2020
*
* Exercicio: 1.13
* Tema: Pinos Analógicos
* Atividade: Fazer o led alternar o brilho conforme variações de temperatura.
* Descrição: Usar um pino analógico para controlar o brilho do led e uma entrada analógica para captar a temperatura pelo NTC
* Hardware: Ligar um led em um pino digital configurado como SAÍDA ANALÓGICA e o NTC em uma entrada analógica
* Comandos: pinMode(), analogRead(), analogWrite(),map()
* 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:O LDR não gera valores proximos a zero nem a próximos de 1023 então usar a função map() para ajustar a escala
* Dica3:Escrever o valor lido do NTC no led, tente também fazer o brilho inversamente proporcional a temperatura
*/

//DEFINICOES INICIAIS
#define led1 3 //Define o LED 1 como pino 3,
#define led2 5 //Define o LED 2 como pino 5
#define NTC A1 //Define o sensor de temperatura como A1.

//DECLARAcAO DE VARIAVEIS GLOBAIS
int Luzes; //Variável INT que controla a luz,
int Sezul; //Variável INT que controla a luz inversamente.

//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //Inicia o monitor serial,
pinMode(led1,OUTPUT); //Define o LED 1 como OUTPUT,
pinMode(led2,OUTPUT); //Define o LED 2 como OUTPUT.
}

//FUNÇÕES COMPLEMENTARES
void debugar(){ //Função para ler os valores das variáveis.
Serial.println(Luzes); //Manda a variável Luzes para o monitor serial,
Serial.print("Temperatura: "); //Descreve a variável luzes antes de mandar,
Serial.println(Sezul); //Manda a variável Sezul/Luzes invertidas para o monitor serial,
Serial.print("Arutarepmet: "); //Descreve a variável Sezul antes de mandar.
}

//PROGRAMA PRINCIPAL

void loop() {
Luzes = map(analogRead(NTC),0,1023,0,255); //Luzes é equivalente a leitura do sensor de temperatura, sendo proporcionalmente calculado,
Sezul = Luzes/-1; //Sezul é equivalente a Luzes dividido por -1, para inverter a função da variável,
analogWrite(led1,Luzes); //Liga o LED 1 analógicamente com a variável Luzes,
analogWrite(led2,Sezul); //Liga o LED 2 analólicamente com a variável Sezul, invertendo a função da variável Luzes.
debugar(); //Invoca a função para debug.
}
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 1.13 Empty Re: Exercício 1.13

Sex maio 06, 2022 11:42 pm
Oi Giovani, O programa está correto pelo ponto de vista da logica. Mas tem um detalhe que impede o funcionamento, a calibração do sensor.
Quando temos componentes resistivos como LDR e NTC as variações funcionam como um divisor de tensão e a variação nunca é de 0 a 1023.
Então é necessario calibrar, para isso coloca o NTC em 0 graus e verifica o valor que aparece na leitura do conversor. Depois coloca em 200 graus e verifica o valor que deu.
Dai na função map() aplica esses valores nas variações de minimo e maximo.
Se fizer vai ver que não dá 0 e 1023.
E deixando assim a escala fica distorcida.
Portanto como não funcionou corretamente a nota será 8.0
Gigio
Gigio
Mensagens : 68
Data de inscrição : 09/03/2022
Idade : 16
Escola : Colegio Estadual Professor Lindaura Ribeiro Lucas

Exercício 1.13 Empty Correção Exercício 1.13

Sáb maio 07, 2022 11:33 am
/*
* CURSO DE ROBOTICA 2020
*
* Exercicio: 1.13
* Tema: Pinos Analógicos
* Atividade: Fazer o led alternar o brilho conforme variações de temperatura.
* Descrição: Usar um pino analógico para controlar o brilho do led e uma entrada analógica para captar a temperatura pelo NTC
* Hardware: Ligar um led em um pino digital configurado como SAÍDA ANALÓGICA e o NTC em uma entrada analógica
* Comandos: pinMode(), analogRead(), analogWrite(),map()
* 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:O LDR não gera valores proximos a zero nem a próximos de 1023 então usar a função map() para ajustar a escala
* Dica3:Escrever o valor lido do NTC no led, tente também fazer o brilho inversamente proporcional a temperatura
*/

//DEFINICOES INICIAIS
#define led1 3 //Define o LED 1 como pino 3,
#define led2 5 //Define o LED 2 como pino 5
#define NTC A1 //Define o sensor de temperatura como A1.

//DECLARAcAO DE VARIAVEIS GLOBAIS
int Luzes; //Variável INT que controla a luz,
int Sezul; //Variável INT que controla a luz inversamente.

//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //Inicia o monitor serial,
pinMode(led1,OUTPUT); //Define o LED 1 como OUTPUT,
pinMode(led2,OUTPUT); //Define o LED 2 como OUTPUT.
}

//FUNÇÕES COMPLEMENTARES
void debugar(){ //Função para ler os valores das variáveis.
Serial.println(Luzes); //Manda a variável Luzes para o monitor serial,
Serial.print("Arutarepmet: "); //Descreve a variável Sezul antes de mandar,
Serial.println(Sezul); //Manda a variável Sezul/Luzes invertidas para o monitor serial,
Serial.print("NTC: "); //Descreve o NTC antes de mandar.
Serial.println(analogRead(NTC)); //Manda o valor do NTC ao monitor serial,
Serial.print("Temperatura: "); //Descreve a varivel Luzes antes de mandar,
}

//PROGRAMA PRINCIPAL

void loop() {
Luzes = map(analogRead(NTC),140,480,0,255); //Calibra o NTC, 140 sendo equivalente a 0 e 480 sendo equivalente a 255,
Sezul = Luzes/-1; //Sezul é equivalente a Luzes dividido por -1, para inverter a função da variável,
analogWrite(led1,Luzes); //Liga o LED 1 analógicamente com a variável Luzes,
analogWrite(led2,Sezul); //Liga o LED 2 analólicamente com a variável Sezul, invertendo a função da variável Luzes.
debugar(); //Invoca a função para debug.
}
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 1.13 Empty Re: Exercício 1.13

Ter Jul 26, 2022 12:43 am
Muito bom nota 10.0. Esse parece ter sido calibrado corretamente.
NA verdade fizemos na sala esse né. Parabéns.
Conteúdo patrocinado

Exercício 1.13 Empty Re: Exercício 1.13

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