Exercício Número 2.23
Ter Out 13, 2020 12:03 pm
/*
* CURSO DE ROBOTICA 2020
*
* Exercicio: 2.23
* Tema: Função WHILE
* Atividade: Construir um luximetro, para aferir ambiente de trabalho conforme NBR ISO/CIE 8995-1
* Descrição: O Luximetro deverá informar apenas se a luminosidade está acima do ajuste piscando o LED vermelho, abaixo fica aceso.
* Hardware: Ligar um led em um pino digital configurado como SAÍDA, usar o LDR e TRIMPOT em entradas analógicas
* Comandos: pinMode, digitalWrite, while(), analogRead(),
* DICA1: A função while() será usada para fazer o pisca rodar enquanto a luminosidade for maior que o definido pelo TRIMPOT
* DICA2: Usar duas variáveis de controle para LDR e TRIMPOT
* DICA3: Usar um pisca-pisca de um led dentro do while()
* DICA4: Fazer a leitura do LDR e TRIMPOT e comparar para acionar o pisca
* DICA5: As escalas do LDR e TRIMPOT são diferentes, usar map() para ajustar as escalas
*/
//DEFINICOES INICIAIS
#define led 3 //pino 3 será chamado de led
#define ldr A0 //pino A0 será chamado de ldr
#define trimpot A1 //pino A1 será chamado de trimpot
//DECLARAcAO DE VARIAVEIS
int luminosidade = 0; //variavel luminosidade começará como 0
int ajuste = 0; //variavel ajuste começara como 0
//FUNÇÕES COMPLEMENTARES
void debug(){
Serial.print("TRIMPOT="); //Serial print configurado com o trimpot
Serial.print(analogRead(trimpot)); //Serial print vai ler o trimpot
Serial.print(" LDR= "); //Serial print configurado com o ldr
Serial.println(luminosidade); //Serial println com a variavel
}
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //porta serial que abriu
pinMode(led, OUTPUT); //led configurado como saida
}
//PROGRAMA PRINCIPAL
void loop() {
debug(); //debug ativo
//min LDR=11 trimpot=0 //minimo do ldr e do trimpot
//max LDR=834 trimpot=1022 //maximo do ldr e do trimpot
luminosidade = analogRead(ldr); //variavel vai ler o ldr para acender o led
ajuste= map(analogRead(trimpot),0,1022,11,834); //função map com o minimo e o maximo
while(luminosidade > ajuste){ //função while usada para arrumar a luminosidade do led
luminosidade = analogRead(ldr); //luminosidade vai ler o estado do ldr
ajuste= map(analogRead(trimpot),0,1022,11,834); //ajuste com o minimo e o maximo
debug(); //debug ativo
digitalWrite(led, HIGH); //led vai acender
delay(300); //tempo de espera
digitalWrite(led, LOW); //led vai apagar
delay(300); //tempo de espera
}
digitalWrite(led, HIGH); //led vai acender
}
* CURSO DE ROBOTICA 2020
*
* Exercicio: 2.23
* Tema: Função WHILE
* Atividade: Construir um luximetro, para aferir ambiente de trabalho conforme NBR ISO/CIE 8995-1
* Descrição: O Luximetro deverá informar apenas se a luminosidade está acima do ajuste piscando o LED vermelho, abaixo fica aceso.
* Hardware: Ligar um led em um pino digital configurado como SAÍDA, usar o LDR e TRIMPOT em entradas analógicas
* Comandos: pinMode, digitalWrite, while(), analogRead(),
* DICA1: A função while() será usada para fazer o pisca rodar enquanto a luminosidade for maior que o definido pelo TRIMPOT
* DICA2: Usar duas variáveis de controle para LDR e TRIMPOT
* DICA3: Usar um pisca-pisca de um led dentro do while()
* DICA4: Fazer a leitura do LDR e TRIMPOT e comparar para acionar o pisca
* DICA5: As escalas do LDR e TRIMPOT são diferentes, usar map() para ajustar as escalas
*/
//DEFINICOES INICIAIS
#define led 3 //pino 3 será chamado de led
#define ldr A0 //pino A0 será chamado de ldr
#define trimpot A1 //pino A1 será chamado de trimpot
//DECLARAcAO DE VARIAVEIS
int luminosidade = 0; //variavel luminosidade começará como 0
int ajuste = 0; //variavel ajuste começara como 0
//FUNÇÕES COMPLEMENTARES
void debug(){
Serial.print("TRIMPOT="); //Serial print configurado com o trimpot
Serial.print(analogRead(trimpot)); //Serial print vai ler o trimpot
Serial.print(" LDR= "); //Serial print configurado com o ldr
Serial.println(luminosidade); //Serial println com a variavel
}
//INICIALIZAÇÃO DO HARDWARE
void setup() {
Serial.begin(9600); //porta serial que abriu
pinMode(led, OUTPUT); //led configurado como saida
}
//PROGRAMA PRINCIPAL
void loop() {
debug(); //debug ativo
//min LDR=11 trimpot=0 //minimo do ldr e do trimpot
//max LDR=834 trimpot=1022 //maximo do ldr e do trimpot
luminosidade = analogRead(ldr); //variavel vai ler o ldr para acender o led
ajuste= map(analogRead(trimpot),0,1022,11,834); //função map com o minimo e o maximo
while(luminosidade > ajuste){ //função while usada para arrumar a luminosidade do led
luminosidade = analogRead(ldr); //luminosidade vai ler o estado do ldr
ajuste= map(analogRead(trimpot),0,1022,11,834); //ajuste com o minimo e o maximo
debug(); //debug ativo
digitalWrite(led, HIGH); //led vai acender
delay(300); //tempo de espera
digitalWrite(led, LOW); //led vai apagar
delay(300); //tempo de espera
}
digitalWrite(led, HIGH); //led vai acender
}
Re: Exercício Número 2.23
Sáb Nov 21, 2020 2:33 pm
Fala Daniel, O programa funcionou, mas os comentários que colocou não vai dar pra deixar passar. Segue umas questões para ganhar a nota.
while(luminosidade > ajuste){
( ) //função while usada para arrumar a luminosidade do led
( ) //função while repete o programa do bloco enquanto a condição for falsa, ou seja, enquanto a luminosidade for maior que o ajuste
( ) //função while testa a condição e repete o bloco de instruções enquanto a condição for verdadeira
( ) //função while repete o programa do pisca-pisca enquanto a luminosidade for maior que o ajuste, se a condição for falsa pula o pisca-pisca
( ) //função while é usada para acender o led se a luminosidade ficar abaixo do ajuste
while(luminosidade > ajuste){
( ) //função while usada para arrumar a luminosidade do led
( ) //função while repete o programa do bloco enquanto a condição for falsa, ou seja, enquanto a luminosidade for maior que o ajuste
( ) //função while testa a condição e repete o bloco de instruções enquanto a condição for verdadeira
( ) //função while repete o programa do pisca-pisca enquanto a luminosidade for maior que o ajuste, se a condição for falsa pula o pisca-pisca
( ) //função while é usada para acender o led se a luminosidade ficar abaixo do ajuste
Permissões neste sub-fórum
Não podes responder a tópicos
|
|