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

Ir para baixo
Diogo Penha Marques
Diogo Penha Marques
Mensagens : 107
Data de inscrição : 29/02/2024
Idade : 14
Escola : Colégio Estadual da Colônia Murici

Diogo Saraiva Exercício 4.3  Empty Diogo Saraiva Exercício 4.3

Qui Set 12, 2024 4:32 pm
Código:

/*
 * CURSO DE ROBOTICA 2020
 *
 * Exercicio: 4.3
 * Tema: Media de Luminosidade
 * Atividade: Leitura da luminosidade captada pelo LDR e apresentar a media dos valores no display
 * Descrição: Realizar a leitura do LDR a cada 500ms e armazenar num vetor de 10 posições, usar uma função para calcular a media e apresentar no display
 * Hardware: Montar o display e usar o LDR da placa
 * Comandos: lcd.print(); for(); if(); Serial.print(), for()
 * Dica1: String é uma variável que armazena um conjunto de diversos valores do mesmo tipo
 * Dica2: Declaração do vetor int nome_vetor[tamanho]; tipo dos dados, no caso int. Nome do vetor identifica a variável. Entre conchetes vai o tamanho do vetor
 * Dica3: A cada 500ms realiza a leitura do valor do LDR e guarda numa posição do vetor, quando chegar na posição 10 volta a guardar na posição 1
 * Dica4: Apos a leitura realizar o calculo da media, que é a soma de todos os valores dividido por 10
 * Dica5: Apos obter a média escrever no display
 */

//DEFINICOES INICIAIS
#include <LiquidCrystal.h>//Inclui a biblioteca do display
#define ldr A0//Nomeia o pino analogico A0 de ldr

//DECLARAcAO DE VARIAVEIS GLOBAIS
LiquidCrystal lcd(12,13,4,5,6,7);//Variavel do display
int vetor[10];//Vetor de tamanho 10
int media;//Variavel que guarda a media do vetor

//INICIALIZAÇÃO DO HARDWARE
void setup() {
  lcd.begin(16,2);//Inicia o display
  Serial.begin(9600);//Inicia a porta serial
}

//FUNÇÕES COMPLEMENTARES


//PROGRAMA PRINCIPAL
void loop() {
  for(int i = 0; i < 10; i++)//Laço que vai adicionar itens com o valor do brilho do ldr a lista
  {
    delay(500);//Tempo de espera de 500 ms
    vetor[i] = analogRead(ldr);//Adiciona na posiçao i do vetor o valor da leitura do ldr
    media += vetor[i];//Adiciona o item i do vetor a media
    Serial.print("Luminosidade: ");//Mostra no monitor "Luminosidade: "
    Serial.println(vetor[i]);//Mostra o item i do vetor e pula uma linha
  }
  media /= 10;//Divide a media por 10
  lcd.print(media);//Mostra no display o valor de media
  Serial.println("");//Pula uma linha no monitor
  Serial.print("Media: ");//Mostra no monitor a mensagem "Media: "
  Serial.println(media);//Mostra no monitor o valor de media e pula uma linha
  Serial.println("");//Pula linha no monitor
  delay(5000);//Tempo de espera de 5 segundos
  lcd.clear();//Limpa o display
}
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5798
Data de inscrição : 11/02/2019
Idade : 53
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Diogo Saraiva Exercício 4.3  Empty Re: Diogo Saraiva Exercício 4.3

Ter Out 08, 2024 10:06 pm
Oi Diogo, seu programa funcionou de uma forma diferente que eu esperava, mas vamos as considerações.
- Esse exercício era para guardar os dados no vetor e depois usar um for() para ler o conteudo do vetor. Usou o for() para contar as 10 amostras, guardar no vetor e já fazendo a media. Vou considerar que cumpriu a varredura do vetor com for()
- Na proposta se usar uma variável para controlar a posição do novo valor e depois o for() para varrer todas as posições, teria a média a cada leitura, o que evita de ficar esperando para ver o resultado. Como não especifiquei vou ter que aceitar, já que a média calculou corretamente
- A apresentação no display ficou sem formatação, poderia ter caprichado mais, sei que tem capacidade, mas como pedi o valor da média e ela apareceu, também tenho que considerar.
- Quanto aos comentarios ainda está interpretando as linhas comando a comando, espero que faça um comentário sobre como o comando interage no programa e não a interpretação literal dele. Orientativo que não vai treduzir a nota nesse exercício.
Nota 10.0
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos